// the source over a project into cannot conflict with any other groups
if (parentProject.hasProperty(NodeConstants.Info.INTO_GROUP)) {
return;
}
GroupSymbol group = sourceNode.getGroups().iterator().next();
if (groups.add(group.getName().toUpperCase())) {
return; // this is the first instance of the group
}
List<PlanNode> childProjects = null;
if (sourceNode.getChildCount() > 0) {
childProjects = NodeEditor.findAllNodes(sourceNode.getFirstChild(),
NodeConstants.Types.PROJECT,
NodeConstants.Types.SOURCE);
}
GroupSymbol newGroup = recontextSymbol(group, groups);
//the expressions in the map will all be element symbols
Map<ElementSymbol, Expression> replacementSymbols = FrameUtil.buildSymbolMap(group, newGroup, metadata);
FrameUtil.convertFrame(sourceNode, group, new HashSet<GroupSymbol>(Arrays.asList(newGroup)), replacementSymbols, metadata);