boolean storeNewMapping(TableReference table, int id) { SweepIdToNameColumn column = SweepIdToNameColumn.of(id); SweepIdToNameColumnValue value = SweepIdToNameColumnValue.of(column, table.getQualifiedName()); Cell cell = Cell.create(rowAsBytes, value.persistColumnName()); CheckAndSetRequest request = CheckAndSetRequest.newCell(ID_TO_NAME, cell, value.persistValue()); try { kvs.checkAndSet(request); return true; } catch (CheckAndSetException e) { return get(id).get().equals(table); } }
Optional<TableReference> get(int tableId) { SweepIdToNameColumn column = SweepIdToNameColumn.of(tableId); Cell cell = Cell.create(rowAsBytes, column.persistToBytes()); Map<Cell, Value> values = kvs.get(ID_TO_NAME, Collections.singletonMap(cell, Long.MAX_VALUE)); return Optional.ofNullable(values.get(cell)) .map(Value::getContents) .map(SweepIdToNameColumnValue::hydrateValue) .map(TableReference::fromString); }
int getNextId() { RowColumnRangeIterator iterator = kvs.getRowsColumnRange( ID_TO_NAME, Collections.singleton(rowAsBytes), BatchColumnRangeSelection.create(null, null, 1), Long.MAX_VALUE).getOrDefault(rowAsBytes, emptyIterator()); if (!iterator.hasNext()) { return 1; } Map.Entry<Cell, Value> first = iterator.next(); RowResult<byte[]> rowResult = RowResult.of(first.getKey(), first.getValue().getContents()); SweepIdToNameRowResult deserializedRowResult = SweepIdToNameRowResult.of(rowResult); return Ints.checkedCast( Iterables.getOnlyElement(deserializedRowResult.getColumnValues()).getColumnName().getTableId()) + 1; }
int getNextId() { RowColumnRangeIterator iterator = kvs.getRowsColumnRange( ID_TO_NAME, Collections.singleton(rowAsBytes), BatchColumnRangeSelection.create(null, null, 1), Long.MAX_VALUE).getOrDefault(rowAsBytes, emptyIterator()); if (!iterator.hasNext()) { return 1; } Map.Entry<Cell, Value> first = iterator.next(); RowResult<byte[]> rowResult = RowResult.of(first.getKey(), first.getValue().getContents()); SweepIdToNameRowResult deserializedRowResult = SweepIdToNameRowResult.of(rowResult); return Ints.checkedCast( Iterables.getOnlyElement(deserializedRowResult.getColumnValues()).getColumnName().getTableId()) + 1; }
public static SweepIdToNameColumn of(long tableId) { return new SweepIdToNameColumn(tableId); }
@Override public byte[] persistColumnName() { return columnName.persistToBytes(); }
@Override public SweepIdToNameColumn apply(Long row) { return SweepIdToNameColumn.of(row); } };
boolean storeNewMapping(TableReference table, int id) { SweepIdToNameColumn column = SweepIdToNameColumn.of(id); SweepIdToNameColumnValue value = SweepIdToNameColumnValue.of(column, table.getQualifiedName()); Cell cell = Cell.create(rowAsBytes, value.persistColumnName()); CheckAndSetRequest request = CheckAndSetRequest.newCell(ID_TO_NAME, cell, value.persistValue()); try { kvs.checkAndSet(request); return true; } catch (CheckAndSetException e) { return get(id).get().equals(table); } }
@Override public SweepIdToNameColumn hydrateFromBytes(byte[] __input) { int __index = 0; Long tableId = EncodingUtils.decodeFlippedUnsignedVarLong(__input, __index); __index += EncodingUtils.sizeOfUnsignedVarLong(tableId); return new SweepIdToNameColumn(tableId); } };
Optional<TableReference> get(int tableId) { SweepIdToNameColumn column = SweepIdToNameColumn.of(tableId); Cell cell = Cell.create(rowAsBytes, column.persistToBytes()); Map<Cell, Value> values = kvs.get(ID_TO_NAME, Collections.singletonMap(cell, Long.MAX_VALUE)); return Optional.ofNullable(values.get(cell)) .map(Value::getContents) .map(SweepIdToNameColumnValue::hydrateValue) .map(TableReference::fromString); }
public static SweepIdToNameColumn of(long tableId) { return new SweepIdToNameColumn(tableId); }
@Override public byte[] persistColumnName() { return columnName.persistToBytes(); }
@Override public SweepIdToNameColumn hydrateFromBytes(byte[] __input) { int __index = 0; Long tableId = EncodingUtils.decodeFlippedUnsignedVarLong(__input, __index); __index += EncodingUtils.sizeOfUnsignedVarLong(tableId); return new SweepIdToNameColumn(tableId); } };
@Override public SweepIdToNameColumn apply(Long row) { return SweepIdToNameColumn.of(row); } };