public QueryRanges getQueryRanges() { // TODO case sensitivity return new QueryRanges( new ByteArrayRange( StringUtils.stringToBinary(matchValue), StringUtils.stringToBinary(matchValue))); }
public static int getBitPositionFromSubsamplingArray( final NumericIndexStrategy indexStrategy, final double[] maxResolutionSubsamplingPerDimension) { return getBitPositionOnSortKeyFromSubsamplingArray( indexStrategy, maxResolutionSubsamplingPerDimension) + (8 * indexStrategy.getPartitionKeyLength()); }
@Override public MultiDimensionalCoordinates getCoordinatesPerDimension( final byte[] partitionKey, final byte[] sortKey) { return subStrategy2.getCoordinatesPerDimension( trimPartitionIdForSortStrategy(partitionKey), sortKey); }
@Override protected short byteArrayToShort(final byte[] bytes) { // make sure we use the same String encoding as decoding byt using the // ByteArrayId constructor return ByteArrayUtils.shortFromString(new ByteArray(bytes).getString()); } }
public ByteArrayRange union(final ByteArrayRange other) { return new ByteArrayRange( ByteArrayUtils.compare(start, other.start) <= 0 ? start : other.start, ByteArrayUtils.compare(getEndAsNextPrefix(), other.getEndAsNextPrefix()) >= 0 ? end : other.end); }
@Override public int compareTo(final ByteArrayRange other) { final int diff = ByteArrayUtils.compare(getStart(), other.getStart()); return diff != 0 ? diff : ByteArrayUtils.compare(getEndAsNextPrefix(), other.getEndAsNextPrefix()); }
@Override protected ByteArray shortToByteArrayId(final short internalAdapterId) { return new ByteArray(ByteArrayUtils.shortToString(internalAdapterId)); }
@Override public SinglePartitionInsertionIds apply( final SinglePartitionInsertionIds input) { if (input.getPartitionKey() != null) { return new SinglePartitionInsertionIds( ByteArrayUtils.combineArrays(partitionKey, input.getPartitionKey()), input.getSortKeys()); } else { return new SinglePartitionInsertionIds(partitionKey, input.getSortKeys()); } } }));
@Override public byte[] toBinary() { return StringUtils.stringToBinary(indexStrategy.getId()); }
public static MultiDimensionalNumericData getFullBounds( final NumericIndexStrategy indexStrategy) { return getFullBounds(indexStrategy.getOrderedDimensionDefinitions()); }
@Override public QueryRanges getQueryRanges( final MultiDimensionalNumericData indexedRange, final int maxEstimatedRangeDecomposition, final IndexMetaData... hints) { final byte[][] partitionIds = subStrategy1.getQueryPartitionKeys(indexedRange, extractHints(hints, 0)); final QueryRanges queryRanges = subStrategy2.getQueryRanges( indexedRange, maxEstimatedRangeDecomposition, extractHints(hints, 1)); return new QueryRanges(partitionIds, queryRanges); }
@Override public MultiDimensionalNumericData getRangeForId( final byte[] partitionKey, final byte[] sortKey) { return subStrategy2.getRangeForId(trimPartitionIdForSortStrategy(partitionKey), sortKey); }
@Override public int getPartitionKeyLength() { return subStrategy1.getPartitionKeyLength() + subStrategy2.getPartitionKeyLength(); }
@Override public QueryRanges getQueryRanges( final MultiDimensionalNumericData indexedRange, final int maxRangeDecomposition, final IndexMetaData... hints) { // a null return here should be interpreted as negative to positive // infinite return new QueryRanges(null, null); }
private static boolean inBounds(final CoordinateRange range, final Coordinate coordinate) { final long coord = coordinate.getCoordinate(); return (range.getMinCoordinate() <= coord) && (range.getMaxCoordinate() >= coord); } }
@Override public String getId() { return StringUtils.intToString(hashCode()); }
@Override public void insertionIdsAdded(final InsertionIds insertionIds) { metaData.insertionIdsAdded(trimPartitionForSubstrategy(insertionIds)); }
@Override public void insertionIdsRemoved(final InsertionIds insertionIds) { metaData.insertionIdsRemoved(trimPartitionForSubstrategy(insertionIds)); }
private byte[] trimPartitionIdForSortStrategy(final byte[] partitionKey) { final byte[] trimmedKey = trimPartitionForSubstrategy(subStrategy1.getPartitionKeyLength(), false, partitionKey); return trimmedKey == null ? partitionKey : trimmedKey; }
public ByteArrayRange intersection(final ByteArrayRange other) { return new ByteArrayRange( ByteArrayUtils.compare(start, other.start) <= 0 ? other.start : start, ByteArrayUtils.compare(getEndAsNextPrefix(), other.getEndAsNextPrefix()) >= 0 ? other.end : end); }