package me.xhh.hector07; import java.util.List; import me.prettyprint.hector.api.Serializer; import me.prettyprint.hector.api.beans.HColumn; import me.prettyprint.hector.api.factory.HFactory; /** * Base class for column family and super column family. */ public abstract class ColumnFamilyBase<K, N, V> { private String columnFamilyName; private Serializer<K> keySerializer; private Serializer<N> nameSerializer; private Serializer<V> valueSerializer; public ColumnFamilyBase(String columnFamilyName, Serializer<K> keySerializer, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { super(); if (columnFamilyName == null) { throw new IllegalArgumentException("column family name can not be null!"); } if (keySerializer == null) { throw new IllegalArgumentException("keySerializer can not be null!"); } if (nameSerializer == null) { throw new IllegalArgumentException("nameSerializer can not be null!"); } if (valueSerializer == null) { throw new IllegalArgumentException("valueSerializere can not be null!"); } this.columnFamilyName = columnFamilyName; this.keySerializer = keySerializer; this.nameSerializer = nameSerializer; this.valueSerializer = valueSerializer; } public HColumn<N, V> createColumn(N name, V value) { return HFactory.createColumn(name, value, getNameSerializer(), getValueSerializer()); } public boolean addColumn(N name, V value, List<HColumn<N, V>> columns) { if (name != null && value != null) { columns.add(createColumn(name, value)); return true; } else { return false; } } public String getColumnFamilyName() { return columnFamilyName; } public Serializer<K> getKeySerializer() { return keySerializer; } public Serializer<N> getNameSerializer() { return nameSerializer; } public Serializer<V> getValueSerializer() { return valueSerializer; } abstract boolean isSuperColumnFamily(); public NormalColumnFamily<K, N, V> asNormal() { if (isSuperColumnFamily()) { return null; } else { return (NormalColumnFamily<K, N, V>) this; } } @SuppressWarnings("unchecked") public <SN> SuperColumnFamily<K, SN, N, V> asSuper() { if (isSuperColumnFamily()) { return (SuperColumnFamily<K, SN, N, V>) this; } else { return null; } } }