public List<byte[]> getCompositeInsertionIds() { if (compositeInsertionIds != null) { return compositeInsertionIds; } if ((partitionKeys == null) || partitionKeys.isEmpty()) { return Collections.EMPTY_LIST; } final List<byte[]> internalCompositeInsertionIds = new ArrayList<>(); for (final SinglePartitionInsertionIds k : partitionKeys) { final List<byte[]> i = k.getCompositeInsertionIds(); if ((i != null) && !i.isEmpty()) { internalCompositeInsertionIds.addAll(i); } } compositeInsertionIds = internalCompositeInsertionIds; return compositeInsertionIds; }
public int getSize() { if (size >= 0) { return size; } if (compositeInsertionIds != null) { size = compositeInsertionIds.size(); return size; } if ((partitionKeys == null) || partitionKeys.isEmpty()) { size = 0; return size; } int internalSize = 0; for (final SinglePartitionInsertionIds k : partitionKeys) { final List<byte[]> i = k.getCompositeInsertionIds(); if ((i != null) && !i.isEmpty()) { internalSize += i.size(); } } size = internalSize; return size; }
@Override public MultiDimensionalNumericData getRangeForId( final byte[] partitionKey, final byte[] sortKey) { final List<byte[]> insertionIds = new SinglePartitionInsertionIds(partitionKey, sortKey).getCompositeInsertionIds(); if (insertionIds.isEmpty()) { LOGGER.warn("Unexpected empty insertion ID in getRangeForId()"); return null; } final byte[] rowId = insertionIds.get(0); return BinnedSFCUtils.getRangeForId(rowId, baseDefinitions, sfc); }
@Override public MultiDimensionalNumericData getRangeForId( final byte[] partitionKey, final byte[] sortKey) { final List<byte[]> insertionIds = new SinglePartitionInsertionIds(partitionKey, sortKey).getCompositeInsertionIds(); if (insertionIds.isEmpty()) { LOGGER.warn("Unexpected empty insertion ID in getRangeForId()"); return null; } final byte[] rowId = insertionIds.get(0); if (rowId.length > 0) { final Integer orderedSfcIndex = orderedSfcIndexToTierId.inverse().get(rowId[0]); return BinnedSFCUtils.getRangeForId(rowId, baseDefinitions, orderedSfcs[orderedSfcIndex]); } else { LOGGER.warn("Row must at least contain a byte for tier"); } return null; }