@Override public InsertionIds getInsertionIds(final MultiDimensionalNumericData indexedData) { return getInsertionIds(indexedData, defaultMaxDuplication); }
@Override public QueryRanges getQueryRanges( final MultiDimensionalNumericData indexedRange, final IndexMetaData... hints) { return getQueryRanges(indexedRange, -1, hints); }
@Override public List<IndexMetaData> createMetaData() { return parentStrategies.get(0).createMetaData(); }
@Override public SubStrategy[] getSubStrategies() { // for these substrategies we need to replace the last parent strategy's // hierarchical index strategy with the underlying substrategy index // strategy final SubStrategy[] subStrategies = firstHierarchicalStrategy.getSubStrategies(); final SubStrategy[] retVal = new SubStrategy[subStrategies.length]; for (int i = 0; i < subStrategies.length; i++) { NumericIndexStrategy currentStrategyToBeReplaced = firstHierarchicalStrategy; NumericIndexStrategy currentStrategyReplacement = subStrategies[i].getIndexStrategy(); for (int j = parentStrategies.size() - 1; j >= 0; j--) { // traverse parents in reverse order final CompoundIndexStrategy parent = parentStrategies.get(j); if (parent.getPrimarySubStrategy().equals(currentStrategyToBeReplaced)) { // replace primary currentStrategyReplacement = new CompoundIndexStrategy( currentStrategyReplacement, parent.getSecondarySubStrategy()); } else { // replace secondary currentStrategyReplacement = new CompoundIndexStrategy(parent.getPrimarySubStrategy(), currentStrategyReplacement); } currentStrategyToBeReplaced = parent; } retVal[i] = new SubStrategy(currentStrategyReplacement, subStrategies[i].getPrefix()); } return retVal; }
@Override public MultiDimensionalCoordinateRanges[] getCoordinateRangesPerDimension( final MultiDimensionalNumericData dataRange, final IndexMetaData... hints) { return parentStrategies.get(0).getCoordinateRangesPerDimension(dataRange, hints); }
@Override public MultiDimensionalCoordinates getCoordinatesPerDimension( final byte[] partitionKey, final byte[] sortKey) { return parentStrategies.get(0).getCoordinatesPerDimension(partitionKey, sortKey); }
@Override public double[] getHighestPrecisionIdRangePerDimension() { return parentStrategies.get(0).getHighestPrecisionIdRangePerDimension(); }
@Override public String getId() { return parentStrategies.get(0).getId(); }
@Override public byte[][] getInsertionPartitionKeys(final MultiDimensionalNumericData insertionData) { return parentStrategies.get(0).getInsertionPartitionKeys(insertionData); }
@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); }
retVal = new CustomNameIndex( new CompoundIndexStrategy( new RoundRobinKeyIndexStrategy(options.basicIndexOptions.getNumPartitions()), index.getIndexStrategy()), new CompoundIndexStrategy( new HashKeyIndexStrategy(options.basicIndexOptions.getNumPartitions()), index.getIndexStrategy()),
@Override public InsertionIds getInsertionIds( final MultiDimensionalNumericData indexedData, final int maxEstimatedDuplicateIds) { return parentStrategies.get(0).getInsertionIds(indexedData, maxEstimatedDuplicateIds); }
@Override public QueryRanges getQueryRanges( final MultiDimensionalNumericData indexedRange, final int maxEstimatedRangeDecomposition, final IndexMetaData... hints) { return parentStrategies.get(0).getQueryRanges( indexedRange, maxEstimatedRangeDecomposition, hints); }
@Override public InsertionIds getInsertionIds(final MultiDimensionalNumericData indexedData) { return parentStrategies.get(0).getInsertionIds(indexedData); }
@Override public QueryRanges getQueryRanges( final MultiDimensionalNumericData indexedRange, final IndexMetaData... hints) { return parentStrategies.get(0).getQueryRanges(indexedRange, hints); }