// Path: src/main/java/org/easycassandra/ReplicaStrategy.java
// public enum ReplicaStrategy {
//     /**
//      * SimpleStrategy places the first replica on a node determined by the
//      * partitioner. Additional replicas are placed on the next nodes clockwise
//      * in the ring without considering rack or data center location.
//      */
//     SIMPLES_TRATEGY("'SimpleStrategy'"),
//     /**
//      * is the preferred replication placement strategy when you have information
//      * about how nodes are grouped in your data center, or when you have (or
//      * plan to have) your cluster deployed across multiple data centers. This
//      * strategy allows you to specify how many replicas you want in each data
//      * center.
//      */
//     NETWORK_TOPOLOGY_STRATEGY("'NetworkTopologyStrategy'"),
//     /**
//      * use a custom query.
//      */
//     CUSTOM_STRATEGY("");
// 
//     private String value;
// 
//     ReplicaStrategy(String value) {
//         this.value = value;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
// }


import java.util.List;
import org.easycassandra.ReplicaStrategy;
import com.datastax.driver.core.Session;
package org.easycassandra.persistence.cassandra;



/**
 * the base of Cassandra factory.
 */
public interface CassandraFactory {

	/**
	 * returns the session of Cassandra Driver.
	 * @return session of cassandra
	 */
	Session getSession();


	/**
	 * returns the keyspace default.
	 * @return the keySpace
	 */
	String getKeySpace();

	/**
	 * returns the host default.
	 * @return the host
	 */
	List<String> getHosts();

	/**
	 * returns the port default.
	 * @return the port
	 */
	int getPort();
	/**
	 * create a new keySpace on the cluster.
	 * @param keySpace - the keySpace name
	 * @param factor - the number of replica factor
	 * @param replicaStrategy the replicaStrategy
	 */
// Path: src/main/java/org/easycassandra/ReplicaStrategy.java
// public enum ReplicaStrategy {
//     /**
//      * SimpleStrategy places the first replica on a node determined by the
//      * partitioner. Additional replicas are placed on the next nodes clockwise
//      * in the ring without considering rack or data center location.
//      */
//     SIMPLES_TRATEGY("'SimpleStrategy'"),
//     /**
//      * is the preferred replication placement strategy when you have information
//      * about how nodes are grouped in your data center, or when you have (or
//      * plan to have) your cluster deployed across multiple data centers. This
//      * strategy allows you to specify how many replicas you want in each data
//      * center.
//      */
//     NETWORK_TOPOLOGY_STRATEGY("'NetworkTopologyStrategy'"),
//     /**
//      * use a custom query.
//      */
//     CUSTOM_STRATEGY("");
// 
//     private String value;
// 
//     ReplicaStrategy(String value) {
//         this.value = value;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
// }


// Path: src/main/java/org/easycassandra/persistence/cassandra/CassandraFactory.java
import java.util.List;
import org.easycassandra.ReplicaStrategy;
import com.datastax.driver.core.Session;

package org.easycassandra.persistence.cassandra;



/**
 * the base of Cassandra factory.
 */
public interface CassandraFactory {

	/**
	 * returns the session of Cassandra Driver.
	 * @return session of cassandra
	 */
	Session getSession();


	/**
	 * returns the keyspace default.
	 * @return the keySpace
	 */
	String getKeySpace();

	/**
	 * returns the host default.
	 * @return the host
	 */
	List<String> getHosts();

	/**
	 * returns the port default.
	 * @return the port
	 */
	int getPort();
	/**
	 * create a new keySpace on the cluster.
	 * @param keySpace - the keySpace name
	 * @param factor - the number of replica factor
	 * @param replicaStrategy the replicaStrategy
	 */
    void createKeySpace(String keySpace, ReplicaStrategy replicaStrategy,