Skip to content

Commit

Permalink
First attempt at GRPC support for rollup formatting and update view.
Browse files Browse the repository at this point in the history
  • Loading branch information
lbooker42 committed Feb 21, 2025
1 parent b07b8ab commit 7dd6553
Show file tree
Hide file tree
Showing 6 changed files with 253 additions and 147 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,11 @@ public NodeOperationsRecorder translateAggregatedNodeOperationsForConstituentNod
RollupNodeOperationsRecorder constituent = makeNodeOperationsRecorder(NodeType.Constituent);
final TableDefinition aggregatedTableDefinition = getNodeDefinition(NodeType.Aggregated);
final TableDefinition constituentTableDefinition = getNodeDefinition(NodeType.Constituent);

constituent = translateFormats(aggregated, constituent, aggregatedTableDefinition, constituentTableDefinition);
constituent =
translateUpdateViews(aggregated, constituent, aggregatedTableDefinition, constituentTableDefinition);

final Map<String, String> aggregatedConstituentPairs = AggregationPairs.of(aggregations)
.collect(Collectors.toMap(p -> p.output().name(), p -> p.input().name()));
final Set<String> groupByColumnNames =
Expand Down Expand Up @@ -393,6 +397,34 @@ private static RollupNodeOperationsRecorder translateFormats(
return (RollupNodeOperationsRecorder) constituent.withFormats(constituentFormats.stream());
}

private static RollupNodeOperationsRecorder translateUpdateViews(
@NotNull final RollupNodeOperationsRecorder aggregated,
@NotNull final RollupNodeOperationsRecorder constituent,
@NotNull final TableDefinition aggregatedTableDefinition,
@NotNull final TableDefinition constituentTableDefinition) {
if (aggregated.getRecordedUpdateViews().isEmpty()) {
return constituent;
}
final List<Selectable> constituentViews = aggregated.getRecordedUpdateViews().stream()
.filter((final SelectColumn aggregatedView) -> Stream
.concat(aggregatedView.getColumns().stream(), aggregatedView.getColumnArrays().stream())
.allMatch((final String columnName) -> {
final ColumnDefinition<?> constituentColumnDefinition =
constituentTableDefinition.getColumn(columnName);
if (constituentColumnDefinition == null) {
return false;
}
final ColumnDefinition<?> aggregatedColumnDefinition =
aggregatedTableDefinition.getColumn(columnName);
return constituentColumnDefinition.isCompatible(aggregatedColumnDefinition);
}))
.collect(Collectors.toList());
if (constituentViews.isEmpty()) {
return constituent;
}
return (RollupNodeOperationsRecorder) constituent.updateView(constituentViews);
}

private static RollupNodeOperationsRecorder translateSorts(
@NotNull final RollupNodeOperationsRecorder aggregated,
@NotNull final RollupNodeOperationsRecorder constituent,
Expand Down
Loading

0 comments on commit 7dd6553

Please sign in to comment.