diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java index 5465aec..30516bf 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java @@ -37,6 +37,7 @@ private DependencyGraph dependencyGraph = null; private HashMap resNodeToCell; + private HashMap statefulObjectNodeToCell; private HashMap eventChannelObjNodeToCell; private HashMap cellToInterfaceNode = new HashMap<>(); @@ -77,6 +78,7 @@ dependencyGraph = new DependencyGraph(controlFlowGraph, model); resNodeToCell = ((PushPullSelectionStage) prevStage).getResNodeToCell(); + statefulObjectNodeToCell = buildStatefulObjectNodeMap(prevStage); eventChannelObjNodeToCell = buildEventChannelObjNodeMap(prevStage); mxCell parent = (mxCell) graph.getDefaultParent(); @@ -114,6 +116,23 @@ // private //-------------------------------------------------- + private HashMap buildStatefulObjectNodeMap(Stage prevStage) { + HashMap result = new HashMap<>(); + + Map prevResNodeToCell = + ((PushPullSelectionStage) prevStage).getResNodeToCell(); + + for (StatefulObjectNode node : dependencyGraph.getRootStatefulObjectNodes()) { + ResourceNode resource = node.getResource(); + mxCell cell = prevResNodeToCell.get(resource); + if (cell != null) { + result.put(node, cell); + } + } + + return result; + } + private HashMap buildEventChannelObjNodeMap(Stage prevStage) { HashMap result = new HashMap<>(); @@ -169,11 +188,10 @@ // Find top-level resource nodes and recursively copy them for (StatefulObjectNode statefulObjectNode : dependencyGraph.getRootStatefulObjectNodes()) { - ResourceNode resourceNode = statefulObjectNode.getResource(); - mxCell oldCell = resNodeToCell.get(resourceNode); + mxCell oldCell = statefulObjectNodeToCell.get(statefulObjectNode); if (oldCell != null) { mxCell newCell = cloneResourceCellHierarchy(oldCell, dependencyLayer, resNodeCells); - resNodeCells.put(resourceNode, newCell); + resNodeCells.put(statefulObjectNode.getResource(), newCell); } }