package mil.nga.giat.geowave.core.store.index.temporal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Set;
import mil.nga.giat.geowave.core.index.ByteArrayId;
import mil.nga.giat.geowave.core.index.ByteArrayRange;
import mil.nga.giat.geowave.core.index.IndexMetaData;
import mil.nga.giat.geowave.core.index.lexicoder.Lexicoders;
import mil.nga.giat.geowave.core.store.base.DataStoreEntryInfo.FieldInfo;
import mil.nga.giat.geowave.core.store.index.FieldIndexStrategy;
public class TemporalIndexStrategy implements
FieldIndexStrategy<TemporalQueryConstraint, Date>
{
private static final String ID = "TEMPORAL";
public TemporalIndexStrategy() {
super();
}
@Override
public List<ByteArrayRange> getQueryRanges(
final TemporalQueryConstraint indexedRange,
final IndexMetaData... hints ) {
return indexedRange.getRange();
}
@Override
public List<ByteArrayRange> getQueryRanges(
final TemporalQueryConstraint indexedRange,
final int maxEstimatedRangeDecomposition,
final IndexMetaData... hints ) {
return getQueryRanges(indexedRange);
}
@Override
public List<ByteArrayId> getInsertionIds(
final List<FieldInfo<Date>> indexedData ) {
final List<ByteArrayId> insertionIds = new ArrayList<>();
for (final FieldInfo<Date> fieldInfo : indexedData) {
insertionIds.add(new ByteArrayId(
toIndexByte(fieldInfo.getDataValue().getValue())));
}
return insertionIds;
}
@Override
public List<ByteArrayId> getInsertionIds(
final List<FieldInfo<Date>> indexedData,
final int maxEstimatedDuplicateIds ) {
return getInsertionIds(indexedData);
}
@Override
public List<FieldInfo<Date>> getRangeForId(
final ByteArrayId insertionId ) {
return Collections.emptyList();
}
@Override
public String getId() {
return ID;
}
@Override
public byte[] toBinary() {
return new byte[0];
}
@Override
public void fromBinary(
final byte[] bytes ) {}
public static final byte[] toIndexByte(
final Date date ) {
return Lexicoders.LONG.toByteArray(date.getTime());
}
@Override
public Set<ByteArrayId> getNaturalSplits() {
return null;
}
@Override
public List<IndexMetaData> createMetaData() {
return Collections.emptyList();
}
}