package me.prettyprint.cassandra.model; import static me.prettyprint.cassandra.utils.Assert.noneNull; import me.prettyprint.hector.api.Keyspace; import me.prettyprint.hector.api.Serializer; import me.prettyprint.hector.api.beans.HSuperColumn; import me.prettyprint.hector.api.query.SuperColumnQuery; /** * Defines the commonalities b/w avro and thrift SuperColumnQuery implementations * * @author Ran Tavory * * @param <SN> * @param <N> * @param <V> */ public abstract class AbstractSuperColumnQuery<K, SN, N, V> extends AbstractQuery<K, N, V, HSuperColumn<SN, N, V>> implements SuperColumnQuery<K, SN, N, V>{ protected final Serializer<SN> sNameSerializer; protected K key; protected SN superName; protected AbstractSuperColumnQuery(Keyspace k, Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { super(k, keySerializer, nameSerializer, valueSerializer); noneNull(sNameSerializer, nameSerializer, valueSerializer); this.sNameSerializer = sNameSerializer; } @Override public SuperColumnQuery<K, SN, N, V> setKey(K key) { this.key = key; return this; } @Override public SuperColumnQuery<K, SN, N, V> setSuperName(SN superName) { this.superName = superName; return this; } @SuppressWarnings("unchecked") @Override public SuperColumnQuery<K, SN, N, V> setColumnFamily(String cf) { return (SuperColumnQuery<K, SN, N, V>) super.setColumnFamily(cf); } @Override public String toString() { return "SuperColumnQuery(" + key + "," + superName + ")"; } }