in src/main/java/com/google/cloud/solutions/autotokenize/dlp/BatchAndDlpDeIdRecords.java [356:397]
ImmutableList<FlatRecord> merge() {
var columnNameUpdater =
new TokenizeColumnNameUpdater(DeidentifyColumns.columnNamesIn(encryptConfig()));
ImmutableList<String> headers = DeidentifyColumns.columnNamesIn(deidTable());
ImmutableMap<String, ImmutableMap<String, Value>> deidValues =
deidTable().getRowsList().stream()
.map(
row -> {
@SuppressWarnings("UnstableApiUsage")
ImmutableMap<String, Value> valueMap =
Streams.zip(
headers.stream(), row.getValuesList().stream(), ImmutablePair::of)
.collect(
toImmutableMap(ImmutablePair::getLeft, ImmutablePair::getRight));
var recordId = valueMap.get(batch().getRecordIdColumnName()).getStringValue();
ImmutableMap<String, Value> valuesMapWithoutRecordId =
valueMap.entrySet().stream()
.filter(e -> !e.getKey().equals(batch().getRecordIdColumnName()))
.filter(e -> !e.getValue().equals(Value.getDefaultInstance()))
.collect(toImmutableMap(Map.Entry::getKey, Map.Entry::getValue));
return ImmutablePair.of(recordId, valuesMapWithoutRecordId);
})
.collect(toImmutableMap(ImmutablePair::getLeft, ImmutablePair::getRight));
return batch().getRecordsList().stream()
.map(
genericRecord -> {
var flatRecordUpdatedValues =
genericRecord.toBuilder()
.putAllValues(deidValues.get(genericRecord.getRecordId()))
.build();
return columnNameUpdater.updateColumnNames(flatRecordUpdatedValues);
})
.collect(toImmutableList());
}