protected void addNode( NodeContainer nodeContainer, SemanticElement semanticElement, Element notationInfoElement) { String notationElementId = NotationMapping.getNotationElementId(semanticElement.getElementId()); Node notationElement = (Node) nodeContainer.getFactory().create(notationElementId); notationElement.setSemanticElement(semanticElement); notationElement.register(); nodeContainer.addNode(notationElement); semanticElement.addPropertyChangeListener(notationElement); processNode(notationElement, notationInfoElement); if (notationElement instanceof NodeContainer) { addNodes((NodeContainer) notationElement, notationInfoElement); } }
protected void postProcess(NodeContainer nodeContainer) { List nodes = nodeContainer.getNodes(); for (int i = 0; i < nodes.size(); i++) { Node node = (Node) nodes.get(i); List edges = node.getLeavingEdges(); for (int j = 0; j < edges.size(); j++) { Edge edge = (Edge) edges.get(j); SemanticElement destination = findDestination(edge, node); Node target = (Node) edge.getFactory().getRegisteredNotationElementFor(destination); if (target != null && edge.getTarget() == null) { target.addArrivingEdge(edge); } } if (node instanceof NodeContainer) { postProcess((NodeContainer) node); } } }