package me.prettyprint.cassandra.model; import me.prettyprint.cassandra.utils.Assert; import me.prettyprint.hector.api.HConsistencyLevel; import me.prettyprint.hector.api.Keyspace; import me.prettyprint.hector.api.Serializer; import me.prettyprint.hector.api.query.Query; /** * * @author patricioe (Patricio Echague - patricio@datastax.com) * * @param <K> Key type * @param <N> column name type * @param <T> return type */ public abstract class AbstractBasicQuery<K, N, T> implements Query<T> { protected final ExecutingKeyspace keyspace; protected String columnFamilyName; protected Serializer<K> keySerializer; protected Serializer<N> columnNameSerializer; // For now keep it simple and use the Thrift consistency level directly protected HConsistencyLevel consistency; // add: FailoverPolicy, Credentials? protected String cqlVersion; // default is set to false. Subclasses should check the cqlVersion and // set the flag as needed. Cassandra.Client class has CQL3 specific // method that differs from CQL1 and 2. protected boolean cql3 = false; protected AbstractBasicQuery(Keyspace k, Serializer<K> keySerializer, Serializer<N> nameSerializer) { Assert.noneNull(k, keySerializer, nameSerializer); keyspace = (ExecutingKeyspace) k; this.keySerializer = keySerializer; this.columnNameSerializer = nameSerializer; } public Query<T> setColumnFamily(String cf) { this.columnFamilyName = cf; return this; } public Serializer<K> getKeySerializer() { return keySerializer; } public AbstractBasicQuery<K, N, T> setKeySerializer(Serializer<K> keySerializer) { this.keySerializer = keySerializer; return this; } public Serializer<N> getColumnNameSerializer() { return columnNameSerializer; } public AbstractBasicQuery<K, N, T> setColumnNameSerializer(Serializer<N> columnNameSerializer) { this.columnNameSerializer = columnNameSerializer; return this; } public String getCqlVersion() { return cqlVersion; } public AbstractBasicQuery setCqlVersion(String cqlVersion) { this.cqlVersion = cqlVersion; return this; } @Override public HConsistencyLevel getConsistencyLevel() { return this.consistency; } @Override public void setConsistencyLevel(HConsistencyLevel level) { this.consistency = level; } }