package mil.nga.giat.geowave.core.store.spi;
import mil.nga.giat.geowave.core.store.index.CommonIndexValue;
import mil.nga.giat.geowave.core.store.index.PrimaryIndex;
/**
* This interface can be injected using SPI to determine which supported index
* for an ingest type will be used.
*
*/
public interface DimensionalityTypeProviderSpi
{
/**
* return a set of classes that can be indexed by this index provider, used
* for compatibility checking with an adapter provider
*
* @return the classes that are indexable by this index provider
*/
public Class<? extends CommonIndexValue>[] getRequiredIndexTypes();
/**
* This will represent the name for the dimensionality type that is
* registered with the ingest framework and presented as a dimensionality
* type option via the commandline. For consistency, this name is preferably
* lower-case and without spaces, and should uniquely identify the
* dimensionality type as much as possible.
*
* @return the name of this dimensionality type
*/
public String getDimensionalityTypeName();
/**
* if the registered dimensionality types are listed by a user, this can
* provide a user-friendly description for each
*
* @return the user-friendly description
*/
public String getDimensionalityTypeDescription();
/**
* If there are multiple acceptable dimensionality types, the one with the
* highest priority will be used
*
* @return a priority value, any integer will work, it is merely important
* to consider values relative to each other
*/
public int getPriority();
/**
* This will return the primary index that match the options
*
* @return the primary index
*/
public PrimaryIndex createPrimaryIndex();
/**
* These are options specific to the type of index being exposed by this SPI
* plugin.
*
* @return
*/
public DimensionalityTypeOptions getOptions();
}