package com.appmetr.hercules.metadata;
import com.appmetr.hercules.keys.ForeignKey;
import com.appmetr.hercules.serializers.AbstractHerculesSerializer;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EntityMetadata extends AbstractMetadata {
private KeyMetadata primaryKeyMetadata;
private boolean isPrimaryKeyGenerated = false;
private Map<Class<? extends ForeignKey>, ForeignKeyMetadata> indexes = new HashMap<Class<? extends ForeignKey>, ForeignKeyMetadata>();
private boolean createPrimaryKeyIndex = false;
private Map<String, CollectionIndexMetadata> collectionIndexes = new HashMap<String, CollectionIndexMetadata>();
private Map<Field, String> fieldToColumn = new HashMap<Field, String>();
private Map<String, Class> columnClasses = new HashMap<String, Class>();
private Map<String, Class<? extends AbstractHerculesSerializer>> columnSerializers = new HashMap<String, Class<? extends AbstractHerculesSerializer>>();
List<String> notNullColumns = new ArrayList<String>();
public KeyMetadata getPrimaryKeyMetadata() {
return primaryKeyMetadata;
}
public void setPrimaryKeyMetadata(KeyMetadata primaryKeyMetadata) {
this.primaryKeyMetadata = primaryKeyMetadata;
}
public boolean isPrimaryKeyGenerated() {
return isPrimaryKeyGenerated;
}
public void setPrimaryKeyGenerated(boolean primaryKeyGenerated) {
isPrimaryKeyGenerated = primaryKeyGenerated;
}
public Map<Class<? extends ForeignKey>, ForeignKeyMetadata> getIndexes() {
return indexes;
}
public void setIndexes(Map<Class<? extends ForeignKey>, ForeignKeyMetadata> indexes) {
this.indexes = indexes;
}
public ForeignKeyMetadata getIndexMetadata(Class<? extends ForeignKey> keyClass) {
return indexes.get(keyClass);
}
public void addIndex(Class<? extends ForeignKey> keyClass, ForeignKeyMetadata keyMetadata) { indexes.put(keyClass, keyMetadata); }
public boolean isCreatePrimaryKeyIndex() {
return createPrimaryKeyIndex;
}
public void setCreatePrimaryKeyIndex(boolean createPrimaryKeyIndex) { this.createPrimaryKeyIndex = createPrimaryKeyIndex; }
public Map<String, CollectionIndexMetadata> getCollectionIndexes() { return collectionIndexes; }
public void setCollectionIndexes(Map<String, CollectionIndexMetadata> collectionIndexes) { this.collectionIndexes = collectionIndexes; }
public Map<Field, String> getFieldToColumn() {
return fieldToColumn;
}
public void setFieldToColumn(Map<Field, String> fieldToColumn) {
this.fieldToColumn = fieldToColumn;
}
public String getFieldColumn(Field field) { return fieldToColumn.get(field); }
public void setFieldColumn(Field fieldName, String columnName) { fieldToColumn.put(fieldName, columnName); }
public Map<String, Class> getColumnClasses() {
return columnClasses;
}
public void setColumnClasses(Map<String, Class> columnClasses) {
this.columnClasses = columnClasses;
}
public Class getColumnClass(String name) { return columnClasses.get(name); }
public void setColumnClass(String name, Class clazz) { columnClasses.put(name, clazz); }
public Map<String, Class<? extends AbstractHerculesSerializer>> getColumnSerializers() {
return columnSerializers;
}
public void setColumnSerializers(Map<String, Class<? extends AbstractHerculesSerializer>> columnSerializers) { this.columnSerializers = columnSerializers; }
public Class<? extends AbstractHerculesSerializer> getColumnSerializer(String name) { return columnSerializers.get(name); }
public void setColumnSerializer(String name, Class<? extends AbstractHerculesSerializer> clazz) { columnSerializers.put(name, clazz); }
public List<String> getNotNullColumns() {
return notNullColumns;
}
public void setNotNullColumns(List<String> notNullColumns) {
this.notNullColumns = notNullColumns;
}
public Boolean isNotNullColumn(String name) { return notNullColumns.contains(name); }
public void addNotNullColumn(String name) { notNullColumns.add(name); }
}