package me.prettyprint.cassandra.model; import java.util.*; import me.prettyprint.cassandra.utils.Assert; import me.prettyprint.hector.api.Serializer; import me.prettyprint.hector.api.beans.SuperRow; import me.prettyprint.hector.api.beans.SuperRows; import org.apache.cassandra.thrift.SuperColumn; /** * Returned by a MultigetSuperSliceQuery (multiget_slice for supercolumns) * * @author Ran Tavory * * @param <N> * @param <V> */ public class SuperRowsImpl<K, SN, N, V> implements SuperRows<K, SN, N, V> { protected final Map<K, SuperRow<K, SN, N, V>> rows; Serializer<K> keySerializer; public SuperRowsImpl(Map<K, List<SuperColumn>> thriftRet, Serializer<K> keySerializer, Serializer<SN> sNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { Assert.noneNull(thriftRet, keySerializer, sNameSerializer, nameSerializer, valueSerializer); this.keySerializer = keySerializer; rows = new LinkedHashMap<K, SuperRow<K, SN, N, V>>(thriftRet.size()); for (Map.Entry<K, List<SuperColumn>> entry : thriftRet.entrySet()) { rows.put(entry.getKey(), new SuperRowImpl<K, SN, N, V>(entry.getKey(), entry.getValue(), sNameSerializer, nameSerializer, valueSerializer)); } } @Override public SuperRow<K, SN, N, V> getByKey(K key) { return rows.get(key); } @Override public int getCount() { return rows.size(); } @Override public Iterator<SuperRow<K, SN, N, V>> iterator() { return rows.values().iterator(); } @Override public String toString() { return "SuperRows(" + rows + ")"; } }