ImmutableList merge()

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());
    }