package mil.nga.giat.geowave.core.index;
import java.util.Arrays;
/**
* This interface defines a multi-tiered approach to indexing, in which a single
* strategy is reliant on a set of sub-strategies
*
*/
public interface HierarchicalNumericIndexStrategy extends
NumericIndexStrategy
{
public SubStrategy[] getSubStrategies();
public static class SubStrategy
{
private final NumericIndexStrategy indexStrategy;
private final byte[] prefix;
public SubStrategy(
final NumericIndexStrategy indexStrategy,
final byte[] prefix ) {
this.indexStrategy = indexStrategy;
this.prefix = prefix;
}
public NumericIndexStrategy getIndexStrategy() {
return indexStrategy;
}
public byte[] getPrefix() {
return prefix;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((indexStrategy == null) ? 0 : indexStrategy.hashCode());
result = prime * result + Arrays.hashCode(prefix);
return result;
}
@Override
public boolean equals(
Object obj ) {
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
SubStrategy other = (SubStrategy) obj;
if (indexStrategy == null) {
if (other.indexStrategy != null) return false;
}
else if (!indexStrategy.equals(other.indexStrategy)) return false;
if (!Arrays.equals(
prefix,
other.prefix)) return false;
return true;
}
}
}