package me.prettyprint.cassandra.model;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import me.prettyprint.hector.api.ddl.ColumnDefinition;
import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
import me.prettyprint.hector.api.ddl.ColumnType;
import me.prettyprint.hector.api.ddl.ComparatorType;
/**
* @author: peter
*/
public class BasicColumnFamilyDefinition implements ColumnFamilyDefinition {
private String keyspaceName;
private String name;
private ColumnType columnType = ColumnType.STANDARD;
private ComparatorType comparatorType = ComparatorType.BYTESTYPE;
private ComparatorType subComparatorType;
private String comparatorTypeAlias = "";
private String subComparatorTypeAlias = "";
private String comment;
private double rowCacheSize;
private double keyCacheSize;
private double readRepairChance;
private int gcGraceSeconds;
private String defaultValidationClass;
private String keyValidationClass;
private String keyValidationAlias = "";
private int id;
private int maxCompactionThreshold;
private int minCompactionThreshold;
private int rowCacheSavePeriodInSeconds;
private int keyCacheSavePeriodInSeconds;
private double memtableOperationsInMillions;
private int memtableThroughputInMb;
private int memtableFlushAfterMins;
private boolean replicateOnWrite;
private String compactionStrategy;
private Map<String,String> compactionStrategyOptions;
private Map<String,String> compressionOptions;
private double mergeShardsChance;
private String rowCacheProvider;
private ByteBuffer keyAlias;
private int rowCacheKeysToSave;
private final List<ColumnDefinition> columnDefinitions;
public BasicColumnFamilyDefinition() {
this.columnDefinitions = new ArrayList<ColumnDefinition>();
}
/**
* Builds a {@link BasicColumnFamilyDefinition} based off the interface
*/
public BasicColumnFamilyDefinition(ColumnFamilyDefinition columnFamilyDefinition) {
keyspaceName = columnFamilyDefinition.getKeyspaceName();
name = columnFamilyDefinition.getName();
columnType = columnFamilyDefinition.getColumnType();
comparatorType = columnFamilyDefinition.getComparatorType();
subComparatorType = columnFamilyDefinition.getSubComparatorType();
comparatorTypeAlias = columnFamilyDefinition.getComparatorTypeAlias();
subComparatorTypeAlias = columnFamilyDefinition.getSubComparatorTypeAlias();
comment = columnFamilyDefinition.getComment();
rowCacheSize = columnFamilyDefinition.getRowCacheSize();
rowCacheSavePeriodInSeconds = columnFamilyDefinition.getRowCacheSavePeriodInSeconds();
keyCacheSize = columnFamilyDefinition.getKeyCacheSize();
keyCacheSavePeriodInSeconds = columnFamilyDefinition.getKeyCacheSavePeriodInSeconds();
readRepairChance = columnFamilyDefinition.getReadRepairChance();
columnDefinitions = columnFamilyDefinition.getColumnMetadata() != null
? new ArrayList<ColumnDefinition>(columnFamilyDefinition.getColumnMetadata())
: new ArrayList<ColumnDefinition>();
gcGraceSeconds = columnFamilyDefinition.getGcGraceSeconds();
defaultValidationClass = columnFamilyDefinition.getDefaultValidationClass();
keyValidationClass = columnFamilyDefinition.getKeyValidationClass();
id = columnFamilyDefinition.getId();
minCompactionThreshold = columnFamilyDefinition.getMinCompactionThreshold();
maxCompactionThreshold = columnFamilyDefinition.getMaxCompactionThreshold();
memtableOperationsInMillions = columnFamilyDefinition.getMemtableOperationsInMillions();
memtableThroughputInMb = columnFamilyDefinition.getMemtableThroughputInMb();
memtableFlushAfterMins = columnFamilyDefinition.getMemtableFlushAfterMins();
replicateOnWrite = columnFamilyDefinition.isReplicateOnWrite();
compactionStrategy = columnFamilyDefinition.getCompactionStrategy();
compactionStrategyOptions = columnFamilyDefinition.getCompactionStrategyOptions();
compressionOptions = columnFamilyDefinition.getCompressionOptions();
mergeShardsChance = columnFamilyDefinition.getMergeShardsChance();
rowCacheProvider = columnFamilyDefinition.getRowCacheProvider();
keyAlias = columnFamilyDefinition.getKeyAlias();
rowCacheKeysToSave = columnFamilyDefinition.getRowCacheKeysToSave();
}
public void setKeyspaceName(String keyspaceName) {
this.keyspaceName = keyspaceName;
}
public void setName(String name) {
this.name = name;
}
public void setColumnType(ColumnType columnType) {
this.columnType = columnType;
}
public void setComparatorType(ComparatorType comparitorType) {
this.comparatorType = comparitorType;
}
public void setSubComparatorType(ComparatorType subComparitorType) {
this.subComparatorType = subComparitorType;
}
public void setComparatorTypeAlias(String alias) {
this.comparatorTypeAlias = alias;
}
public void setSubComparatorTypeAlias(String alias) {
this.subComparatorTypeAlias = alias;
}
public void setComment(String comment) {
this.comment = comment;
}
public void setRowCacheSize(double rowCacheSize) {
this.rowCacheSize = rowCacheSize;
}
public void setKeyCacheSize(double keyCacheSize) {
this.keyCacheSize = keyCacheSize;
}
public void setReadRepairChance(double readRepairChance) {
this.readRepairChance = readRepairChance;
}
public void setGcGraceSeconds(int gcGraceSeconds) {
this.gcGraceSeconds = gcGraceSeconds;
}
public void setDefaultValidationClass(String defaultValidationClass) {
this.defaultValidationClass = defaultValidationClass;
}
public void setId(int id) {
this.id = id;
}
public void setMaxCompactionThreshold(int maxCompactionThreshold) {
this.maxCompactionThreshold = maxCompactionThreshold;
}
public void setMinCompactionThreshold(int minCompactionThreshold) {
this.minCompactionThreshold = minCompactionThreshold;
}
public void setRowCacheSavePeriodInSeconds(int rowCacheSavePeriodInSeconds) {
this.rowCacheSavePeriodInSeconds = rowCacheSavePeriodInSeconds;
}
public void setMemtableOperationsInMillions(double memtableOperationsInMillions) {
this.memtableOperationsInMillions = memtableOperationsInMillions;
}
public void setMemtableThroughputInMb(int memtableThroughputInMb) {
this.memtableThroughputInMb = memtableThroughputInMb;
}
public void setMemtableFlushAfterMins(int memtableFlushAfterMins) {
this.memtableFlushAfterMins = memtableFlushAfterMins;
}
public void setReplicateOnWrite(boolean replicateOnWrite) {
this.replicateOnWrite = replicateOnWrite;
}
public void addColumnDefinition( ColumnDefinition columnDefinition){
this.columnDefinitions.add( columnDefinition );
}
public void setKeyCacheSavePeriodInSeconds(int keyCacheSavePeriodInSeconds) {
this.keyCacheSavePeriodInSeconds = keyCacheSavePeriodInSeconds;
}
public void setKeyValidationClass(String keyValidationClass){
this.keyValidationClass = keyValidationClass;
}
public void setKeyValidationAlias(String keyValidationAlias) {
this.keyValidationAlias = keyValidationAlias;
}
/**
* SHOULD THIS BE HERE? A COLUMN DEFINITION IS PART OF A KEYSPACE BY VIRTUE
* OF BEING IN A KEYSPACE LIST
*/
@Override
public String getKeyspaceName() {
return this.keyspaceName;
}
@Override
public String getName() {
return this.name;
}
@Override
public ColumnType getColumnType() {
return this.columnType;
}
@Override
public ComparatorType getComparatorType() {
return this.comparatorType;
}
@Override
public ComparatorType getSubComparatorType() {
return this.subComparatorType;
}
public String getComparatorTypeAlias() {
return this.comparatorTypeAlias;
}
public String getSubComparatorTypeAlias() {
return this.subComparatorTypeAlias;
}
@Override
public String getComment() {
return this.comment;
}
@Override
public double getRowCacheSize() {
return this.rowCacheSize;
}
@Override
public int getRowCacheSavePeriodInSeconds() {
return this.rowCacheSavePeriodInSeconds;
}
@Override
public double getKeyCacheSize() {
return this.keyCacheSize;
}
@Override
public double getReadRepairChance() {
return this.readRepairChance;
}
@Override
public List<ColumnDefinition> getColumnMetadata() {
return this.columnDefinitions;
}
@Override
public int getGcGraceSeconds() {
return this.gcGraceSeconds;
}
@Override
public String getDefaultValidationClass() {
return this.defaultValidationClass;
}
@Override
public int getId() {
return this.id;
}
@Override
public int getMaxCompactionThreshold() {
return this.maxCompactionThreshold;
}
@Override
public int getMinCompactionThreshold() {
return this.minCompactionThreshold;
}
@Override
public int getMemtableFlushAfterMins() {
return this.memtableFlushAfterMins;
}
@Override
public double getMemtableOperationsInMillions() {
return this.memtableOperationsInMillions;
}
@Override
public int getMemtableThroughputInMb() {
return this.memtableThroughputInMb;
}
public boolean isReplicateOnWrite() {
return replicateOnWrite;
}
public int getKeyCacheSavePeriodInSeconds() {
return keyCacheSavePeriodInSeconds;
}
@Override
public String getKeyValidationClass() {
return keyValidationClass;
}
@Override
public String getKeyValidationAlias() {
return keyValidationAlias;
}
@Override
public String getCompactionStrategy() {
return compactionStrategy;
}
@Override
public void setCompactionStrategy(String compactionStrategy) {
this.compactionStrategy = compactionStrategy;
}
@Override
public Map<String, String> getCompactionStrategyOptions() {
return compactionStrategyOptions;
}
@Override
public void setCompactionStrategyOptions(Map<String, String> compactionStrategyOptions) {
this.compactionStrategyOptions = compactionStrategyOptions;
}
@Override
public Map<String, String> getCompressionOptions() {
return compressionOptions;
}
@Override
public void setCompressionOptions(Map<String, String> compressionOptions) {
this.compressionOptions = compressionOptions;
}
public double getMergeShardsChance() {
return mergeShardsChance;
}
public void setMergeShardsChance(double mergeShardsChance) {
this.mergeShardsChance = mergeShardsChance;
}
public String getRowCacheProvider() {
return rowCacheProvider;
}
public void setRowCacheProvider(String rowCacheProvider) {
this.rowCacheProvider = rowCacheProvider;
}
public ByteBuffer getKeyAlias() {
return keyAlias;
}
public void setKeyAlias(ByteBuffer keyAlias) {
this.keyAlias = keyAlias;
}
public int getRowCacheKeysToSave() {
return rowCacheKeysToSave;
}
public void setRowCacheKeysToSave(int rowCacheKeysToSave) {
this.rowCacheKeysToSave = rowCacheKeysToSave;
}
}