public Optional<LatestSnapshotRowResult> getRow(LatestSnapshotRow row) { return getRow(row, allColumns); }
static LatestSnapshotTable of(Transaction t, Namespace namespace, List<LatestSnapshotTrigger> triggers) { return new LatestSnapshotTable(t, namespace, triggers); }
@Override public void delete(LatestSnapshotRow row) { delete(ImmutableSet.of(row)); }
public void storeSnapshot(InputStream snapshot) { byte[] streamReference = "EteTest".getBytes(); TodoSchemaTableFactory tableFactory = TodoSchemaTableFactory.of(Namespace.DEFAULT_NAMESPACE); SnapshotsStreamStore streamStore = SnapshotsStreamStore.of(transactionManager, tableFactory); log.info("Storing stream..."); Pair<Long, Sha256Hash> storedStream = streamStore.storeStream(snapshot); Long newStreamId = storedStream.getLhSide(); log.info("Stored stream with ID {}", newStreamId); transactionManager.runTaskWithRetry(transaction -> { // Load previous stream, and unmark it as used LatestSnapshotTable.LatestSnapshotRow row = LatestSnapshotTable.LatestSnapshotRow.of(0L); LatestSnapshotTable latestSnapshotTable = tableFactory.getLatestSnapshotTable(transaction); Optional<LatestSnapshotTable.LatestSnapshotRowResult> maybeRow = latestSnapshotTable.getRow(row); maybeRow.ifPresent(latestSnapshot -> { Long latestStreamId = maybeRow.get().getStreamId(); log.info("Marking stream {}, ref {}, as unused", latestStreamId, PtBytes.toString(streamReference)); Map<Long, byte[]> theMap = ImmutableMap.of(latestStreamId, streamReference); streamStore.unmarkStreamsAsUsed(transaction, theMap); }); streamStore.markStreamAsUsed(transaction, newStreamId, streamReference); log.info("Marked stream {} as used with reference {}", newStreamId, PtBytes.toString(streamReference)); // Record the latest snapshot latestSnapshotTable.putStreamId(row, newStreamId); return null; }); }
@Override public Multimap<LatestSnapshotRow, LatestSnapshotNamedColumnValue<?>> getRowsMultimap(Iterable<LatestSnapshotRow> rows) { return getRowsMultimapInternal(rows, allColumns); }
@Override public List<LatestSnapshotNamedColumnValue<?>> getRowColumns(LatestSnapshotRow row) { return getRowColumns(row, allColumns); }
@Override public List<LatestSnapshotRowResult> getRows(Iterable<LatestSnapshotRow> rows) { return getRows(rows, allColumns); }
private Multimap<LatestSnapshotRow, LatestSnapshotNamedColumnValue<?>> getRowsMultimapInternal(Iterable<LatestSnapshotRow> rows, ColumnSelection columns) { SortedMap<byte[], RowResult<byte[]>> results = t.getRows(tableRef, Persistables.persistAll(rows), columns); return getRowMapFromRowResults(results.values()); }
public BatchingVisitableView<LatestSnapshotRowResult> getAllRowsUnordered() { return getAllRowsUnordered(allColumns); }
public void deleteStreamId(LatestSnapshotRow row) { deleteStreamId(ImmutableSet.of(row)); }
public static ColumnSelection getColumnSelection(LatestSnapshotNamedColumn... cols) { return getColumnSelection(Arrays.asList(cols)); }
@Override public Multimap<LatestSnapshotRow, LatestSnapshotNamedColumnValue<?>> getRowsMultimap(Iterable<LatestSnapshotRow> rows, ColumnSelection columns) { return getRowsMultimapInternal(rows, columns); }
@Override public List<LatestSnapshotNamedColumnValue<?>> getRowColumns(LatestSnapshotRow row) { return getRowColumns(row, allColumns); }
@Override public List<LatestSnapshotRowResult> getRows(Iterable<LatestSnapshotRow> rows) { return getRows(rows, allColumns); }
private Multimap<LatestSnapshotRow, LatestSnapshotNamedColumnValue<?>> getRowsMultimapInternal(Iterable<LatestSnapshotRow> rows, ColumnSelection columns) { SortedMap<byte[], RowResult<byte[]>> results = t.getRows(tableRef, Persistables.persistAll(rows), columns); return getRowMapFromRowResults(results.values()); }
public BatchingVisitableView<LatestSnapshotRowResult> getAllRowsUnordered() { return getAllRowsUnordered(allColumns); }
public void deleteStreamId(LatestSnapshotRow row) { deleteStreamId(ImmutableSet.of(row)); }
public static ColumnSelection getColumnSelection(LatestSnapshotNamedColumn... cols) { return getColumnSelection(Arrays.asList(cols)); }
static LatestSnapshotTable of(Transaction t, Namespace namespace) { return new LatestSnapshotTable(t, namespace, ImmutableList.<LatestSnapshotTrigger>of()); }
public Optional<LatestSnapshotRowResult> getRow(LatestSnapshotRow row) { return getRow(row, allColumns); }