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