package me.prettyprint.cassandra.model; import java.util.ArrayList; import java.util.HashMap; 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.CounterSlice; import me.prettyprint.hector.api.beans.HCounterColumn; import org.apache.cassandra.thrift.CounterColumn; public final class CounterSliceImpl<N> implements CounterSlice<N> { private final Map<N,HCounterColumn<N>> columnsMap; private final List<HCounterColumn<N>> columnsList; public CounterSliceImpl(List<CounterColumn> tColumns, Serializer<N> nameSerializer) { Assert.noneNull(tColumns, nameSerializer); columnsMap = new HashMap<N,HCounterColumn<N>>(tColumns.size()); List<HCounterColumn<N>> list = new ArrayList<HCounterColumn<N>>(tColumns.size()); for (CounterColumn c: tColumns) { HCounterColumn<N> column = new HCounterColumnImpl<N>(c, nameSerializer); columnsMap.put(column.getName(), column); list.add(column); } columnsList = list; } /** * * @return an unmodifiable list of the columns */ @Override public List<HCounterColumn<N>> getColumns() { return columnsList; } @Override public HCounterColumn<N> getColumnByName(N columnName) { return columnsMap.get(columnName); } @Override public String toString() { return String.format("ColumnSlice(%s)", columnsList.toString()); } }