use of com.google.cloud.teleport.v2.templates.spanner.ddl.Table in project DataflowTemplates by GoogleCloudPlatform.
the class SpannerUtils method getSpannerTableByName.
/**
* @return a map where the key is the table name tracked by the change stream and the value is the
* {@link SpannerTable} object of the table name.
*/
private Map<String, TrackedSpannerTable> getSpannerTableByName(Set<String> spannerTableNames, Map<String, Set<String>> spannerColumnNamesExplicitlyTrackedByChangeStreamByTableName) {
Map<String, Set<String>> keyColumnNameByTableName = getKeyColumnNameByTableName(spannerTableNames);
Map<String, List<TrackedSpannerColumn>> spannerColumnsByTableName = getSpannerColumnsByTableName(spannerTableNames, keyColumnNameByTableName, spannerColumnNamesExplicitlyTrackedByChangeStreamByTableName);
Map<String, TrackedSpannerTable> result = new HashMap<>();
for (String tableName : spannerColumnsByTableName.keySet()) {
List<TrackedSpannerColumn> pkColumns = new ArrayList<>();
List<TrackedSpannerColumn> nonPkColumns = new ArrayList<>();
Set<String> keyColumnNames = keyColumnNameByTableName.get(tableName);
for (TrackedSpannerColumn spannerColumn : spannerColumnsByTableName.get(tableName)) {
if (keyColumnNames.contains(spannerColumn.getName())) {
pkColumns.add(spannerColumn);
} else {
nonPkColumns.add(spannerColumn);
}
}
result.put(tableName, new TrackedSpannerTable(tableName, pkColumns, nonPkColumns));
}
return result;
}
Aggregations