@Override public DAG<IRVertex, IREdge> apply(final DAG<IRVertex, IREdge> dag) { final HashMap<String, Integer> groupIdToGroupSize = new HashMap<>(); dag.topologicalDo(vertex -> dag.getIncomingEdgesOf(vertex) .forEach(e -> { final Optional<DuplicateEdgeGroupPropertyValue> duplicateEdgeGroupProperty = e.getPropertyValue(DuplicateEdgeGroupProperty.class); if (duplicateEdgeGroupProperty.isPresent()) { final String groupId = duplicateEdgeGroupProperty.get().getGroupId(); final Integer currentCount = groupIdToGroupSize.getOrDefault(groupId, 0); groupIdToGroupSize.put(groupId, currentCount + 1); } })); dag.topologicalDo(vertex -> dag.getIncomingEdgesOf(vertex) .forEach(e -> { final Optional<DuplicateEdgeGroupPropertyValue> duplicateEdgeGroupProperty = e.getPropertyValue(DuplicateEdgeGroupProperty.class); if (duplicateEdgeGroupProperty.isPresent()) { final String groupId = duplicateEdgeGroupProperty.get().getGroupId(); if (groupIdToGroupSize.containsKey(groupId)) { duplicateEdgeGroupProperty.get().setGroupSize(groupIdToGroupSize.get(groupId)); } } })); return dag; } }
@Override public DAG<IRVertex, IREdge> apply(final DAG<IRVertex, IREdge> dag) { final HashMap<String, Integer> groupIdToGroupSize = new HashMap<>(); dag.topologicalDo(vertex -> dag.getIncomingEdgesOf(vertex) .forEach(e -> { final Optional<DuplicateEdgeGroupPropertyValue> duplicateEdgeGroupProperty = e.getPropertyValue(DuplicateEdgeGroupProperty.class); if (duplicateEdgeGroupProperty.isPresent()) { final String groupId = duplicateEdgeGroupProperty.get().getGroupId(); final Integer currentCount = groupIdToGroupSize.getOrDefault(groupId, 0); groupIdToGroupSize.put(groupId, currentCount + 1); } })); dag.topologicalDo(vertex -> dag.getIncomingEdgesOf(vertex) .forEach(e -> { final Optional<DuplicateEdgeGroupPropertyValue> duplicateEdgeGroupProperty = e.getPropertyValue(DuplicateEdgeGroupProperty.class); if (duplicateEdgeGroupProperty.isPresent()) { final String groupId = duplicateEdgeGroupProperty.get().getGroupId(); if (groupIdToGroupSize.containsKey(groupId)) { duplicateEdgeGroupProperty.get().setGroupSize(groupIdToGroupSize.get(groupId)); } } })); return dag; } }
duplicateEdgeGroupProperty.setRepresentativeEdgeId(firstEdge.getId()); duplicateEdgeGroupProperty.setGroupSize(edges.size()); }); });
duplicateEdgeGroupProperty.setRepresentativeEdgeId(firstEdge.getId()); duplicateEdgeGroupProperty.setGroupSize(edges.size()); }); });
cachedEdge.getPropertyValue(DuplicateEdgeGroupProperty.class) .orElseThrow(() -> new PlanAppenderException("Cached edge does not have duplicated edge group property.")); duplicateEdgeGroupPropertyValue.setGroupSize(duplicateEdgeGroupPropertyValue.getGroupSize() + 1); newEdge.getExecutionProperties().put(DuplicateEdgeGroupProperty.of(duplicateEdgeGroupPropertyValue)); } else {
cachedEdge.getPropertyValue(DuplicateEdgeGroupProperty.class) .orElseThrow(() -> new PlanAppenderException("Cached edge does not have duplicated edge group property.")); duplicateEdgeGroupPropertyValue.setGroupSize(duplicateEdgeGroupPropertyValue.getGroupSize() + 1); newEdge.getExecutionProperties().put(DuplicateEdgeGroupProperty.of(duplicateEdgeGroupPropertyValue)); } else {