package me.prettyprint.cassandra.service.spring; import java.nio.ByteBuffer; import java.util.List; import me.prettyprint.cassandra.model.HCounterColumnImpl; import me.prettyprint.cassandra.model.IndexedSlicesQuery; import me.prettyprint.cassandra.service.CassandraHost; import me.prettyprint.hector.api.Cluster; import me.prettyprint.hector.api.Keyspace; import me.prettyprint.hector.api.Serializer; import me.prettyprint.hector.api.beans.HColumn; import me.prettyprint.hector.api.beans.HCounterColumn; import me.prettyprint.hector.api.beans.HCounterSuperColumn; import me.prettyprint.hector.api.beans.HSuperColumn; import me.prettyprint.hector.api.mutation.Mutator; import me.prettyprint.hector.api.query.ColumnQuery; import me.prettyprint.hector.api.query.CountQuery; import me.prettyprint.hector.api.query.CounterQuery; import me.prettyprint.hector.api.query.MultigetSliceQuery; import me.prettyprint.hector.api.query.MultigetSubSliceQuery; import me.prettyprint.hector.api.query.MultigetSuperSliceQuery; import me.prettyprint.hector.api.query.RangeSlicesQuery; import me.prettyprint.hector.api.query.RangeSubSlicesQuery; import me.prettyprint.hector.api.query.RangeSuperSlicesQuery; import me.prettyprint.hector.api.query.SliceCounterQuery; import me.prettyprint.hector.api.query.SliceQuery; import me.prettyprint.hector.api.query.SubCountQuery; import me.prettyprint.hector.api.query.SubSliceQuery; import me.prettyprint.hector.api.query.SuperColumnQuery; import me.prettyprint.hector.api.query.SuperCountQuery; import me.prettyprint.hector.api.query.SuperSliceQuery; /** * The main interface used to operate with the underlying database. * * The interface is mirroring HFactory. * * @author Bozhidar Bozhanov * */ public interface HectorTemplate { <K, N, V> Mutator<K> createMutator(Serializer<K> keySerializer); <K, N, V> Mutator<K> createMutator(); <K, N, V> ColumnQuery<K, N, V> createColumnQuery(); <K, N, V> ColumnQuery<K, N, V> createColumnQuery(Serializer<V> valueSErializer); <K, N> CountQuery<K, N> createCountQuery(Serializer<K> keySerializer, Serializer<N> nameSerializer); <K, SN> SuperCountQuery<K, SN> createSuperCountQuery(Serializer<K> keySerializer, Serializer<SN> superNameSerializer); <K, SN, N> SubCountQuery<K, SN, N> createSubCountQuery(Serializer<K> keySerializer, Serializer<SN> superNameSerializer, Serializer<N> nameSerializer); <K, SN, N, V> SuperColumnQuery<K, SN, N, V> createSuperColumnQuery(Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K, N, V> MultigetSliceQuery<K, N, V> createMultigetSliceQuery(Serializer<K> keySerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K, SN, N, V> MultigetSuperSliceQuery<K, SN, N, V> createMultigetSuperSliceQuery( Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K, SN, N, V> MultigetSubSliceQuery<K, SN, N, V> createMultigetSubSliceQuery( Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K, N, V> RangeSlicesQuery<K, N, V> createRangeSlicesQuery(Serializer<K> keySerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K, SN, N, V> RangeSuperSlicesQuery<K, SN, N, V> createRangeSuperSlicesQuery( Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K, SN, N, V> RangeSubSlicesQuery<K, SN, N, V> createRangeSubSlicesQuery( Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K, N, V> SliceQuery<K, N, V> createSliceQuery(Serializer<K> keySerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K> SliceQuery<K, ByteBuffer, ByteBuffer> createSliceQuery(); <K, SN, N, V> SubSliceQuery<K, SN, N, V> createSubSliceQuery(Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K, SN, N, V> SuperSliceQuery<K, SN, N, V> createSuperSliceQuery(Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <K> SuperSliceQuery<K, ByteBuffer, ByteBuffer, ByteBuffer> createSuperSliceQuery(); <K, N, V> IndexedSlicesQuery<K, N, V> createIndexSlicesQuery(Serializer<K> keySerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); /** * createSuperColumn accepts a variable number of column arguments * * @param name * supercolumn name * @param createColumn * a variable number of column arguments */ <SN, N, V> HSuperColumn<SN, N, V> createSuperColumn(SN name, List<HColumn<N, V>> columns, Serializer<SN> superNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <SN, N, V> HSuperColumn<SN, N, V> createSuperColumn(SN name, List<HColumn<N, V>> columns); <SN, N, V> HSuperColumn<SN, N, V> createSuperColumn(SN name, List<HColumn<N, V>> columns, long clock, Serializer<SN> superNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer); <N, V> HColumn<N, V> createColumn(N name, V value, long clock, Serializer<N> nameSerializer, Serializer<V> valueSerializer); /** * Creates a column with the clock of now. */ <N, V> HColumn<N, V> createColumn(N name, V value); /** * Creates a column with the specified <code>name/value</code> and <code>clock</code>. */ <N, V> HColumn<N, V> createColumn(N name, V value, long clock); /** * Create a counter column with a name and long value */ <N> HCounterColumn<N> createCounterColumn(N name, long value, Serializer<N> nameSerializer); /** * Convenient method for creating a counter column with a String name and long value */ HCounterColumn<String> createCounterColumn(String name, long value); <K, N> CounterQuery<K, N> createCounterColumnQuery(Serializer<K> keySerializer, Serializer<N> nameSerializer); <K, N> SliceCounterQuery<K, N> createCounterSliceQuery(Serializer<K> keySerializer, Serializer<N> nameSerializer); <SN, N> HCounterSuperColumn<SN, N> createCounterSuperColumn(SN name, List<HCounterColumn<N>> columns, Serializer<SN> superNameSerializer, Serializer<N> nameSerializer); /** * Creates a clock of now with the default clock resolution (micorosec) as defined in * {@link CassandraHost} */ long createClock(); Cluster getCluster(); String getReplicationStrategyClass(); int getReplicationFactor(); String getKeyspaceName(); }