package org.hivedb.configuration; import org.hivedb.annotations.IndexType; import java.io.Serializable; import java.util.Collection; import java.util.EnumSet; public interface EntityConfig { String getPrimaryIndexKeyPropertyName(); String getPartitionDimensionName(); Object getPrimaryIndexKey(Object instance); String getIdPropertyName(); Serializable getId(Object instance); Collection<EntityIndexConfig> getEntityIndexConfigs(); EntityIndexConfig getEntityIndexConfig(String propertyName); EntityIndexConfig getPrimaryIndexKeyEntityIndexConfig(); Collection<EntityIndexConfig> getEntityIndexConfigs(EnumSet<IndexType> indexTypes); Collection<EntityIndexConfig> getEntityIndexConfigs(IndexType indexType); String getResourceName(); boolean isPartitioningResource(); Class<?> getRepresentedInterface(); Class<?> getPrimaryKeyClass(); Class<?> getIdClass(); // TODO Remove @Deprecated int getVersion(Object instance); /** * Get classes that are properties of this class, singletons or collections, which have a property indexed by the hive * @return */ // TODO remove, this class shouldn't know about this Collection<Class<?>> getAssociatedClasses(); }