package me.prettyprint.cassandra.model;
import me.prettyprint.cassandra.utils.Assert;
import me.prettyprint.hector.api.Serializer;
import me.prettyprint.hector.api.beans.CounterSuperSlice;
import me.prettyprint.hector.api.beans.HCounterSuperColumn;
import org.apache.cassandra.thrift.CounterSuperColumn;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Represents a return of the get_slice query for supercolumns
*
* @param <SN> Super column name type
* @param <N> Column name type
*/
public final class CounterSuperSliceImpl<SN,N> implements CounterSuperSlice<SN, N> {
private final Map<SN,HCounterSuperColumn<SN,N>> columnsMap;
private final List<HCounterSuperColumn<SN,N>> columnsList;
public CounterSuperSliceImpl(List<CounterSuperColumn> tSuperColumns, Serializer<SN> sNameSerializer,
Serializer<N> nameSerializer) {
Assert.noneNull(tSuperColumns, sNameSerializer, nameSerializer);
columnsMap = new HashMap<SN,HCounterSuperColumn<SN,N>>(tSuperColumns.size());
columnsList = new ArrayList<HCounterSuperColumn<SN,N>>(tSuperColumns.size());
for (CounterSuperColumn sc: tSuperColumns) {
HCounterSuperColumn<SN,N> column = new HCounterSuperColumnImpl<SN,N>(sc, sNameSerializer, nameSerializer);
columnsMap.put(column.getName(), column);
columnsList.add(column);
}
}
/**
* @return an unmodifiable list of supercolumns
*/
@Override
public List<HCounterSuperColumn<SN,N>> getSuperColumns() {
return columnsList;
}
@Override
public HCounterSuperColumn<SN, N> getColumnByName(SN columnName) {
return columnsMap.get(columnName);
}
@Override
public String toString() {
return "SuperSlice(" + columnsList.toString() + ")";
}
}