public static String extractRangeKey(byte[] keyBytes) { final StringBuilder builder = new StringBuilder(); int offset = indexOfDelimiterPrefixStart(keyBytes, 0); if (offset != 0) { throw new IllegalArgumentException("Key should start with delimiter-prefix-delimiter"); } builder.append(extractLevelFromDelimiterPrefix(keyBytes, 0)); builder.append(PATH_DELIMITER); offset = offset + DELIMITER_PREFIX_DELIMITER_SIZE; while (true) { int index1 = indexOfDelimiterPrefixStart(keyBytes, offset); if (index1 == -1) { break; } builder.append(new String(keyBytes, offset, index1 - offset)); builder.append(PATH_DELIMITER); builder.append(extractLevelFromDelimiterPrefix(keyBytes, index1)); builder.append(PATH_DELIMITER); offset = index1 + DELIMITER_PREFIX_DELIMITER_SIZE; } return builder.toString(); }
public static String extractKey(byte[] keyBytes, boolean includePrefixLevels) { final StringBuilder builder = new StringBuilder(); int offset = indexOfDelimiterPrefixStart(keyBytes, 0); if (offset != 0) { throw new IllegalArgumentException("Key should start with delimiter-prefix-delimiter"); } if (includePrefixLevels) { builder.append(extractLevelFromDelimiterPrefix(keyBytes, offset)); builder.append(PATH_DELIMITER); } offset = offset + DELIMITER_PREFIX_DELIMITER_SIZE; while (true) { int index1 = indexOfDelimiterPrefixStart(keyBytes, offset); if (index1 == -1) { // Copy the remaining array as the last path component. builder.append(new String(keyBytes, offset, keyBytes.length - offset)); break; } else { builder.append(new String(keyBytes, offset, index1 - offset)); builder.append(PATH_DELIMITER); if (includePrefixLevels) { builder.append(extractLevelFromDelimiterPrefix(keyBytes, index1)); builder.append(PATH_DELIMITER); } offset = index1 + DELIMITER_PREFIX_DELIMITER_SIZE; } } return builder.toString(); }