package me.prettyprint.cassandra.service.template;
import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.Date;
import java.util.UUID;
import me.prettyprint.hector.api.beans.HSuperColumn;
/**
* Holds the result for the contents of a super column. This interface add
* access to the current super column similar to {@link ColumnFamilyResult}
*
* @author david
* @author zznate
* @param <K>
* @param <SN>
* super column name data type
* @param <N>
* child column name data type
*/
public interface SuperCfResult<K, SN, N> extends ColumnFamilyResult<K, N> {
Collection<SN> getSuperColumns();
K getKey();
UUID getUUID(SN sColumnName, N columnName);
String getString(SN sColumnName, N columnName);
Long getLong(SN sColumnName, N columnName);
Integer getInteger(SN sColumnName, N columnName);
Boolean getBoolean(SN sColumnName, N columnName);
Float getFloat(SN sColumnName, N columnName);
Double getDouble(SN sColumnName, N columnName);
byte[] getByteArray(SN sColumnName, N columnName);
ByteBuffer getByteBuffer(SN sColumnName, N columnName);
Date getDate(SN sColumnName, N columnName);
void applySuperColumn(SN sColumnName);
SN getActiveSuperColumn();
/**
* Retrieved named superColumn as an HSuperColumn with sub columns.
* Underlying column value is a ByteBuffer.
* Note: Correct derialization and treatment is up to the caller.
* @param superColumn
* @return
*/
HSuperColumn<SN, N, ByteBuffer> getSuperColumn(SN superColumn);
@Override
SuperCfResult<K, SN, N> next();
}