@Override public DimensionIndexer<Integer, int[], String> makeIndexer() { return new StringDimensionIndexer(multiValueHandling, hasBitmapIndexes); }
@Nullable @Override public Object convertUnsortedEncodedKeyComponentToActualList(int[] key) { if (key == null || key.length == 0) { return null; } if (key.length == 1) { return getActualValue(key[0], false); } else { String[] rowArray = new String[key.length]; for (int i = 0; i < key.length; i++) { String val = getActualValue(key[i], false); rowArray[i] = NullHandling.nullToEmptyIfNeeded(val); } return Arrays.asList(rowArray); } }
@Override public int size() { return getCardinality(); }
@Override public Integer getUnsortedEncodedValueFromSorted(Integer sortedIntermediateValue) { return sortedLookup().getUnsortedIdFromSortedId(sortedIntermediateValue); }
@Override public ColumnValueSelector<?> makeColumnValueSelector( IncrementalIndexRowHolder currEntry, IncrementalIndex.DimensionDesc desc ) { return makeDimensionSelector(DefaultDimensionSpec.of(desc.getName()), currEntry, desc); }
@Override public int indexOf(String value) { int id = getEncodedValue(value, false); return id < 0 ? ABSENT_VALUE_ID : getSortedEncodedValueFromUnsorted(id); }
encodedDimensionValues = IntArrays.EMPTY_ARRAY; } else if (dimValuesList.size() == 1) { encodedDimensionValues = new int[]{dimLookup.add(emptyToNullIfNeeded(dimValuesList.get(0)))}; } else { hasMultipleValues = true; final String[] dimensionValues = new String[dimValuesList.size()]; for (int i = 0; i < dimValuesList.size(); i++) { dimensionValues[i] = emptyToNullIfNeeded(dimValuesList.get(i)); encodedDimensionValues = new int[]{dimLookup.add(emptyToNullIfNeeded(dimValues))};
public Integer getSortedEncodedValueFromUnsorted(Integer unsortedIntermediateValue) { return sortedLookup().getSortedIdFromUnsortedId(unsortedIntermediateValue); }
@Override public ColumnValueSelector<?> makeColumnValueSelector( IncrementalIndexRowHolder currEntry, IncrementalIndex.DimensionDesc desc ) { return makeDimensionSelector(DefaultDimensionSpec.of(desc.getName()), currEntry, desc); }
@Override public int indexOf(String value) { int id = getEncodedValue(value, false); return id < 0 ? ABSENT_VALUE_ID : getSortedEncodedValueFromUnsorted(id); }
encodedDimensionValues = IntArrays.EMPTY_ARRAY; } else if (dimValuesList.size() == 1) { encodedDimensionValues = new int[]{dimLookup.add(emptyToNullIfNeeded(dimValuesList.get(0)))}; } else { hasMultipleValues = true; final String[] dimensionValues = new String[dimValuesList.size()]; for (int i = 0; i < dimValuesList.size(); i++) { dimensionValues[i] = emptyToNullIfNeeded(dimValuesList.get(i)); encodedDimensionValues = new int[]{dimLookup.add(emptyToNullIfNeeded(dimValues))};
private int getEncodedValue(String fullValue, boolean idSorted) { int unsortedId = dimLookup.getId(fullValue); if (idSorted) { return sortedLookup().getSortedIdFromUnsortedId(unsortedId); } else { return unsortedId; } } }
final int maxId = getCardinality();
@Override public int compareUnsortedEncodedKeyComponents(int[] lhs, int[] rhs) { int lhsLen = lhs.length; int rhsLen = rhs.length; int retVal = Ints.compare(lhsLen, rhsLen); int valsIndex = 0; while (retVal == 0 && valsIndex < lhsLen) { int lhsVal = lhs[valsIndex]; int rhsVal = rhs[valsIndex]; if (lhsVal != rhsVal) { final String lhsValActual = getActualValue(lhsVal, false); final String rhsValActual = getActualValue(rhsVal, false); if (lhsValActual != null && rhsValActual != null) { retVal = lhsValActual.compareTo(rhsValActual); } else if (lhsValActual == null ^ rhsValActual == null) { retVal = lhsValActual == null ? -1 : 1; } } ++valsIndex; } return retVal; }
@Override public DimensionIndexer<Integer, int[], String> makeIndexer() { return new StringDimensionIndexer(multiValueHandling, hasBitmapIndexes); }
private String getActualValue(int intermediateValue, boolean idSorted) { if (idSorted) { return sortedLookup().getValueFromSortedId(intermediateValue); } else { return dimLookup.getValue(intermediateValue); } }
@Override public int size() { return getCardinality(); }
@Nullable @Override public Object convertUnsortedEncodedKeyComponentToActualList(int[] key) { if (key == null || key.length == 0) { return null; } if (key.length == 1) { return getActualValue(key[0], false); } else { String[] rowArray = new String[key.length]; for (int i = 0; i < key.length; i++) { String val = getActualValue(key[i], false); rowArray[i] = NullHandling.nullToEmptyIfNeeded(val); } return Arrays.asList(rowArray); } }
@Override public Integer getUnsortedEncodedValueFromSorted(Integer sortedIntermediateValue) { return sortedLookup().getUnsortedIdFromSortedId(sortedIntermediateValue); }
final int maxId = getCardinality();