package mil.nga.giat.geowave.datastore.accumulo.metadata;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.store.CloseableIterator;
import mil.nga.giat.geowave.core.store.index.Index;
import mil.nga.giat.geowave.core.store.index.IndexStore;
import mil.nga.giat.geowave.datastore.accumulo.AccumuloOperations;
/**
* This class will persist Index objects within an Accumulo table for GeoWave
* metadata. The indices will be persisted in an "INDEX" column family.
*
* There is an LRU cache associated with it so staying in sync with external
* updates is not practical - it assumes the objects are not updated often or at
* all. The objects are stored in their own table.
*
**/
public class AccumuloIndexStore extends
AbstractAccumuloPersistence<Index<?, ?>> implements
IndexStore
{
private static final String INDEX_CF = "INDEX";
public AccumuloIndexStore(
final AccumuloOperations accumuloOperations ) {
super(
accumuloOperations);
}
@Override
public void addIndex(
final Index<?, ?> index ) {
addObject(index);
}
@Override
public Index<?, ?> getIndex(
final ByteArrayId indexId ) {
return getObject(
indexId,
null);
}
@Override
protected String getPersistenceTypeName() {
return INDEX_CF;
}
@Override
protected ByteArrayId getPrimaryId(
final Index<?, ?> persistedObject ) {
return persistedObject.getId();
}
@Override
public boolean indexExists(
final ByteArrayId id ) {
return objectExists(
id,
null);
}
@Override
public CloseableIterator<Index<?, ?>> getIndices() {
return getObjects();
}
}