package me.prettyprint.hector.api.ddl;
import java.nio.ByteBuffer;
import java.util.List;
import java.util.Map;
/**
* Hector's implementation independent CfDef version.
*
* @author Ran Tavory
*
*/
public interface ColumnFamilyDefinition {
String getKeyspaceName();
void setKeyspaceName(String keyspaceName);
String getName();
void setName(String name);
ColumnType getColumnType();
void setColumnType(ColumnType columnType);
ComparatorType getComparatorType();
void setComparatorType(ComparatorType comparitorType);
ComparatorType getSubComparatorType();
void setSubComparatorType(ComparatorType subComparitorType);
String getComparatorTypeAlias();
/**
* Sets the type alias for the comparator to be used for the row keys of the column family.
* For composite types, supply the alias in the following format:
* {@code (TypeName1, TypeName2, ...)}.
* @param alias An alias String defining the comparator to be used for the row keys.
* @see <a href="http://www.datastax.com/docs/1.1/ddl/column_family#about-data-types-comparators-and-validators">DataStax column family reference</a>
*/
void setComparatorTypeAlias(String alias);
String getSubComparatorTypeAlias();
void setSubComparatorTypeAlias(String alias);
String getComment();
void setComment(String comment);
double getRowCacheSize();
void setRowCacheSize(double rowCacheSize);
int getRowCacheSavePeriodInSeconds();
void setRowCacheSavePeriodInSeconds(int rowCacheSavePeriodInSeconds);
int getKeyCacheSavePeriodInSeconds();
void setKeyCacheSavePeriodInSeconds(int keyCacheSavePeriodInSeconds);
double getKeyCacheSize();
void setKeyCacheSize(double keyCacheSize);
String getKeyValidationClass();
void setKeyValidationClass(String keyValidationClass);
String getKeyValidationAlias();
void setKeyValidationAlias(String keyValidationAlias);
double getReadRepairChance();
void setReadRepairChance(double readRepairChance);
List<ColumnDefinition> getColumnMetadata();
void addColumnDefinition( ColumnDefinition columnDefinition);
int getGcGraceSeconds();
void setGcGraceSeconds(int gcGraceSeconds);
String getDefaultValidationClass();
void setDefaultValidationClass(String defaultValidationClass);
int getId();
void setId(int id);
int getMaxCompactionThreshold();
void setMaxCompactionThreshold(int maxCompactionThreshold);
int getMinCompactionThreshold();
void setMinCompactionThreshold(int minCompactionThreshold);
double getMemtableOperationsInMillions();
void setMemtableOperationsInMillions(double memtableOperationsInMillions);
int getMemtableThroughputInMb();
void setMemtableThroughputInMb(int memtableThroughputInMb);
int getMemtableFlushAfterMins();
void setMemtableFlushAfterMins(int memtableFlushAfterMins);
boolean isReplicateOnWrite();
void setReplicateOnWrite(boolean replicateOnWrite);
String getCompactionStrategy();
void setCompactionStrategy(String strategy);
Map<String,String> getCompactionStrategyOptions();
void setCompactionStrategyOptions(Map<String,String> compactionStrategyOptions);
Map<String,String> getCompressionOptions();
void setCompressionOptions(Map<String,String> compressionOptions);
double getMergeShardsChance();
void setMergeShardsChance(double mergeShardsChance);
String getRowCacheProvider();
void setRowCacheProvider(String rowCacheProvider);
ByteBuffer getKeyAlias();
void setKeyAlias(ByteBuffer keyAlias);
int getRowCacheKeysToSave();
void setRowCacheKeysToSave(int rowCacheKeysToSave);
}