package me.xhh.hector07; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import me.prettyprint.hector.api.Serializer; import me.prettyprint.hector.api.beans.HColumn; import me.prettyprint.hector.api.beans.HSuperColumn; import me.prettyprint.hector.api.factory.HFactory; /** * Definition of super column family. */ public class SuperColumnFamily<K, SN, N, V> extends ColumnFamilyBase<K, N, V> { private Serializer<SN> superNameSerializer; public SuperColumnFamily(String columnFamilyName, Serializer<K> keySerializer, Serializer<SN> superNameSerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { super(columnFamilyName, keySerializer, nameSerializer, valueSerializer); if (superNameSerializer == null) { throw new IllegalArgumentException("superNameSerializer can not be null!"); } this.superNameSerializer = superNameSerializer; } public Serializer<SN> getSuperNameSerializer() { return superNameSerializer; } public HSuperColumn<SN, N, V> createSuperColumn(SN superColName, HColumn<N, V>... columns) { List<HColumn<N, V>> columnList = columns == null || columns.length == 0 ? new ArrayList<HColumn<N, V>>(0) : Arrays.asList(columns); return createSuperColumn(superColName, columnList); } public boolean addSuperColumn(SN superColName, List<HSuperColumn<SN, N, V>> superColumns, HColumn<N, V>... columns) { if (superColName != null && columns != null && columns.length > 0) { superColumns.add(createSuperColumn(superColName, columns)); return true; } else { return false; } } public boolean addSuperColumn(SN superColName, List<HSuperColumn<SN, N, V>> superColumns, List<HColumn<N, V>> columns) { if (superColName != null && columns != null && !columns.isEmpty()) { superColumns.add(createSuperColumn(superColName, columns)); return true; } else { return false; } } public HSuperColumn<SN, N, V> createSuperColumn(SN superColName, List<HColumn<N, V>> columns) { return HFactory.createSuperColumn(superColName, columns, getSuperNameSerializer(), getNameSerializer(), getValueSerializer()); } @Override public boolean isSuperColumnFamily() { return true; } }