package mil.nga.giat.geowave.core.store.query;
import java.util.Collections;
import java.util.List;
import mil.nga.giat.geowave.core.index.ByteArrayRange;
import mil.nga.giat.geowave.core.index.MultiDimensionalCoordinateRangesArray;
import mil.nga.giat.geowave.core.index.NumericIndexStrategy;
import mil.nga.giat.geowave.core.index.sfc.data.MultiDimensionalNumericData;
import mil.nga.giat.geowave.core.store.filter.DistributableQueryFilter;
import mil.nga.giat.geowave.core.store.filter.QueryFilter;
import mil.nga.giat.geowave.core.store.index.CommonIndexModel;
import mil.nga.giat.geowave.core.store.index.Index;
import mil.nga.giat.geowave.core.store.index.SecondaryIndex;
public class CoordinateRangeQuery implements
DistributableQuery
{
private NumericIndexStrategy indexStrategy;
private MultiDimensionalCoordinateRangesArray[] coordinateRanges;
@Override
public List<QueryFilter> createFilters(
final CommonIndexModel indexModel ) {
return Collections.singletonList(new CoordinateRangeQueryFilter(
indexStrategy,
coordinateRanges));
}
@Override
public boolean isSupported(
final Index<?, ?> index ) {
return index.getIndexStrategy().equals(
indexStrategy);
}
@Override
public List<MultiDimensionalNumericData> getIndexConstraints(
final NumericIndexStrategy indexStrategy ) {
// TODO should we consider implementing this?
return Collections.EMPTY_LIST;
}
@Override
public byte[] toBinary() {
return new CoordinateRangeQueryFilter(
indexStrategy,
coordinateRanges).toBinary();
}
@Override
public void fromBinary(
final byte[] bytes ) {
final CoordinateRangeQueryFilter filter = new CoordinateRangeQueryFilter();
filter.fromBinary(bytes);
indexStrategy = filter.indexStrategy;
coordinateRanges = filter.coordinateRanges;
}
@Override
public List<ByteArrayRange> getSecondaryIndexConstraints(
final SecondaryIndex<?> index ) {
// TODO should we consider implementing this?
return null;
}
@Override
public List<DistributableQueryFilter> getSecondaryQueryFilter(
final SecondaryIndex<?> index ) {
// TODO should we consider implementing this?
return null;
}
}