diff --git a/AlgebraicDataflowArchitectureModel/src/application/ApplicationWindow.java b/AlgebraicDataflowArchitectureModel/src/application/ApplicationWindow.java index 8775442..8de0a78 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/ApplicationWindow.java +++ b/AlgebraicDataflowArchitectureModel/src/application/ApplicationWindow.java @@ -54,7 +54,6 @@ navigationWindow = new NavigationWindow(this, editor); navigationWindow.setVisible(true); - // 変更点 showFlowLayerWindow = new FlowLayerWindow(this); showFlowLayerWindow.setVisible(false); diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/Editor.java b/AlgebraicDataflowArchitectureModel/src/application/editor/Editor.java index 442d447..9c8afbe 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/Editor.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/Editor.java @@ -1,6 +1,6 @@ package application.editor; -import application.editor.stages.ControlFlowModelingStage; // 変更点 +import application.editor.stages.ControlFlowModelingStage; import application.editor.stages.DataFlowModelingStage; import application.editor.stages.DependencyModelingStage; import application.editor.stages.PushPullSelectionStage; @@ -18,7 +18,7 @@ import models.EdgeAttribute; import models.algebra.Symbol; import models.algebra.Variable; -import models.controlFlowModel.ControlFlowGraph; // 変更点 +import models.controlFlowModel.ControlFlowGraph; import models.dataConstraintModel.Channel; import models.dataConstraintModel.ResourcePath; import models.dataFlowModel.DataFlowGraph; @@ -55,7 +55,7 @@ public static DataFlowModelingStage STAGE_DATA_FLOW_MODELING = null; public static PushPullSelectionStage STAGE_PUSH_PULL_SELECTION = null; public static DependencyModelingStage STAGE_DEPENDENCY_MODELING = null; - public static ControlFlowModelingStage STAGE_CONTROL_FLOW_DELEGATION = null; // 変更点 + public static ControlFlowModelingStage STAGE_CONTROL_FLOW_DELEGATION = null; public Editor(mxGraphComponent graphComponent) { this.graphComponent = graphComponent; @@ -64,7 +64,7 @@ STAGE_DATA_FLOW_MODELING = new DataFlowModelingStage(graphComponent); STAGE_PUSH_PULL_SELECTION = new PushPullSelectionStage(graphComponent); STAGE_DEPENDENCY_MODELING = new DependencyModelingStage(graphComponent); - STAGE_CONTROL_FLOW_DELEGATION = new ControlFlowModelingStage(graphComponent); // 変更点 + STAGE_CONTROL_FLOW_DELEGATION = new ControlFlowModelingStage(graphComponent); graphComponent.setCellEditor(STAGE_DATA_FLOW_MODELING.createCellEditor(graphComponent)); @@ -117,13 +117,12 @@ public DataFlowGraph getDataFlowGraph() { if (curStage instanceof PushPullSelectionStage) { return ((PushPullSelectionStage) curStage).getDataFlowGraph(); - } else if (curStage instanceof ControlFlowModelingStage) { //変更点 + } else if (curStage instanceof ControlFlowModelingStage) { return ((ControlFlowModelingStage) curStage).getControlFlowGraph().getDataFlowGraph(); } return null; } - // 変更点 public ControlFlowGraph getControlFlowGraph() { if (curStage instanceof ControlFlowModelingStage) { return ((ControlFlowModelingStage) curStage).getControlFlowGraph(); diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/Stage.java b/AlgebraicDataflowArchitectureModel/src/application/editor/Stage.java index 63ee59d..e131f59 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/Stage.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/Stage.java @@ -22,7 +22,7 @@ public static final int DATA_FLOW_LAYER = 0; public static final int PUSH_FLOW_LAYER = 1; public static final int PULL_FLOW_LAYER = 2; - public static final int DEPENDENCY_LAYER = 3; // 変更点 + public static final int DEPENDENCY_LAYER = 3; public Stage(mxGraphComponent graphComponent) { this.graphComponent = graphComponent; @@ -59,7 +59,7 @@ graph.addCell(nodeAndDataFlowLayer, root); graph.addCell(pushFlowLayer, root); graph.addCell(pullFlowLayer, root); - graph.addCell(dependencyLayer, root); // // 変更点 + graph.addCell(dependencyLayer, root); } finally { graph.getModel().endUpdate(); } @@ -72,7 +72,7 @@ mxCell rootCell = (mxCell) graph.getDefaultParent(); if (rootCell == null) return; if (rootCell.getChildCount() <= 0) return; - if (rootCell.getChildCount() <= layerNo) return; // 変更点 + if (rootCell.getChildCount() <= layerNo) return; graph.getModel().setVisible(rootCell.getChildAt(layerNo), isEnable); graph.refresh(); diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java index 4fc6544..8065336 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/DependencyModelingStage.java @@ -18,6 +18,7 @@ import models.dataFlowModel.*; import models.dependencyModel.*; +import javax.naming.ldap.Control; import java.awt.event.MouseListener; import java.util.*; @@ -89,19 +90,18 @@ @Override public void init(Stage prevStage) { - if (prevStage instanceof ControlFlowModelingStage) { - ControlFlowModelingStage cfStage = (ControlFlowModelingStage) prevStage; - model = cfStage.getModel(); + model = prevStage.getModel(); mxCell parent = (mxCell) graph.getDefaultParent(); mxCell layer = (mxCell) parent.getChildAt(DEPENDENCY_LAYER); + if (prevStage instanceof ControlFlowModelingStage) { if (layer.getChildCount() == 0) { clearDependencyGraphCells(graph); - ControlFlowGraph controlFlowGraph = cfStage.getControlFlowGraph(); + ControlFlowGraph controlFlowGraph = ((ControlFlowModelingStage) prevStage).getControlFlowGraph(); this.dependencyGraph = new DependencyGraph(controlFlowGraph, model); - statefulObjectNodeToCell = buildStatefulObjectNodeFromCFM(cfStage); - eventChannelObjNodeToCell = buildEventChannelObjNodeMapFromCFM(cfStage); + statefulObjectNodeToCell = buildStatefulObjectNodeFromCFM((ControlFlowModelingStage) prevStage); + eventChannelObjNodeToCell = buildEventChannelObjNodeMapFromCFM((ControlFlowModelingStage) prevStage); graph = constructGraph(graph, dependencyGraph); } @@ -109,18 +109,14 @@ } if (prevStage instanceof PushPullSelectionStage) { - model = prevStage.getModel(); - mxCell parent = (mxCell) graph.getDefaultParent(); - mxCell layer = (mxCell) parent.getChildAt(DEPENDENCY_LAYER); - if (layer.getChildCount() == 0) { clearDependencyGraphCells(graph); DataFlowGraph dataFlowGraph = ((PushPullSelectionStage) prevStage).getDataFlowGraph(); ControlFlowGraph controlFlowGraph = new ControlFlowGraph(dataFlowGraph, model); this.dependencyGraph = new DependencyGraph(controlFlowGraph, model); - statefulObjectNodeToCell = buildStatefulObjectNodeMap(prevStage); - eventChannelObjNodeToCell = buildEventChannelObjNodeMap(prevStage); + statefulObjectNodeToCell = buildStatefulObjectNodeFromPPS((PushPullSelectionStage) prevStage); + eventChannelObjNodeToCell = buildEventChannelObjNodeFromPPS((PushPullSelectionStage) prevStage); graph = constructGraph(graph, dependencyGraph); } @@ -147,48 +143,53 @@ return true; } + public boolean isValid() { + if (model == null) { + return false; + } + return Validation.checkUpdateConflict(model); + } + //-------------------------------------------------- // private //-------------------------------------------------- - private HashMap buildStatefulObjectNodeMap(Stage prevStage) { + private HashMap buildStatefulObjectNodeFromCFM(ControlFlowModelingStage cfStage) { + return buildStatefulObjectNodeMap(cfStage.getResNodeToCell()); + } + + private HashMap buildStatefulObjectNodeFromPPS(PushPullSelectionStage ppStage) { + return buildStatefulObjectNodeMap(ppStage.getResNodeToCell()); + } + + private HashMap buildStatefulObjectNodeMap(Map resNodeToCell) { HashMap result = new HashMap<>(); - /*Map nodeMap = new HashMap<>(); - for (StatefulObjectNode node : dependencyGraph.getStatefulObjectNodes()) { - nodeMap.put(node.getResource(), node); - }*/ Map> resNodeToStatefulObjectNode = new HashMap<>(); for (StatefulObjectNode root : dependencyGraph.getRootStatefulObjectNodes()) { putDescendantNodes(root, resNodeToStatefulObjectNode); } - for (ResourceNode node : ((PushPullSelectionStage) prevStage).getResNodeToCell().keySet()) { - mxCell cell = ((PushPullSelectionStage) prevStage).getResNodeToCell().get(node); + for (Map.Entry entry : resNodeToCell.entrySet()) { + ResourceNode node = entry.getKey(); + mxCell cell = entry.getValue(); if (cell == null) continue; Set statefulRoots = resNodeToStatefulObjectNode.get(node); - // StatefulObjectNode statefulNode = nodeMap.get(node); - if (statefulRoots != null) { - for (StatefulObjectNode statefulObjectNode: statefulRoots){ + for (StatefulObjectNode statefulObjectNode : statefulRoots) { result.put(statefulObjectNode, cell); } - } - /*else if(statefulNode != null) { - result.put(statefulNode, cell); - }*/else { + } else { result.put(new StatefulObjectNode(node), cell); - System.out.println("DependencyGraph に StatefulObjectNode が存在しません:" + node.getResourceHierarchy()); + System.out.println("DependencyGraph does not contain a StatefulObjectNode: " + node.getResourceHierarchy()); } } - return result; } - - private static void putDescendantNodes(StatefulObjectNode node, Map> resNodeToStatefulObjectNode) { + private void putDescendantNodes(StatefulObjectNode node, Map> resNodeToStatefulObjectNode) { Set nodes = resNodeToStatefulObjectNode.getOrDefault(node.getResource(), new HashSet<>()); nodes.add(node); resNodeToStatefulObjectNode.put(node.getResource(), nodes); @@ -200,13 +201,20 @@ } } + private HashMap buildEventChannelObjNodeMapFromCFM(ControlFlowModelingStage cfStage) { + return buildEventChannelObjNodeMap(cfStage.getChannelToCell()); + } - private HashMap buildEventChannelObjNodeMap(Stage prevStage) { + private HashMap buildEventChannelObjNodeFromPPS(PushPullSelectionStage ppStage) { + return buildEventChannelObjNodeMap(ppStage.getEventChannelToCell()); + } + + private HashMap buildEventChannelObjNodeMap(Map channelToCell) { HashMap result = new HashMap<>(); for (EventChannelObjectNode node : dependencyGraph.getEventChannelObjectNodes()) { DataTransferChannel channel = node.getIOChannel(); - mxCell cell = ((PushPullSelectionStage) prevStage).getEventChannelToCell().get(channel); + mxCell cell = channelToCell.get(channel); if (cell != null) { result.put(node, cell); } @@ -232,44 +240,6 @@ } } - private HashMap buildStatefulObjectNodeFromCFM(ControlFlowModelingStage cfStage) { - HashMap result = new HashMap<>(); - - Map> resNodeToStatefulObjectNode = new HashMap<>(); - for (StatefulObjectNode root : dependencyGraph.getRootStatefulObjectNodes()) { - putDescendantNodes(root, resNodeToStatefulObjectNode); - } - - for (ResourceNode node : cfStage.getResNodeToCell().keySet()) { - mxCell cell = cfStage.getResNodeToCell().get(node); - if (cell == null) continue; - - Set statefulRoots = resNodeToStatefulObjectNode.get(node); - if (statefulRoots != null) { - for (StatefulObjectNode statefulObjectNode : statefulRoots) { - result.put(statefulObjectNode, cell); - } - } else { - result.put(new StatefulObjectNode(node), cell); - System.out.println("DependencyGraph に StatefulObjectNode が存在しません:" + node.getResourceHierarchy()); - } - } - return result; - } - - private HashMap buildEventChannelObjNodeMapFromCFM(ControlFlowModelingStage cfStage) { - HashMap result = new HashMap<>(); - - for (EventChannelObjectNode node : dependencyGraph.getEventChannelObjectNodes()) { - DataTransferChannel channel = node.getIOChannel(); - mxCell cell = cfStage.getChannelToCell().get(channel); - if (cell != null) { - result.put(node, cell); - } - } - return result; - } - private mxGraph constructGraph(mxGraph graph, DependencyGraph dependencyGraph) { showLayers(DEPENDENCY_LAYER); @@ -503,14 +473,7 @@ for (int i = 0; i < count; i++) { if (parent.getChildAt(i) == child) return i; } - return -1; // 見つからない場合 - } - - public boolean isValid() { - if (model == null) { - return false; - } - return Validation.checkUpdateConflict(model); + return -1; } } diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/PushPullSelectionStage.java b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/PushPullSelectionStage.java index a17cad8..6d5eb34 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/PushPullSelectionStage.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/PushPullSelectionStage.java @@ -26,7 +26,7 @@ private DataFlowGraph dataFlowGraph = null; private HashMap resNodeToCell; private HashMap channelToCell; - private HashMap eventChannelToCell; // 変更点 + private HashMap eventChannelToCell; public PushPullSelectionStage(mxGraphComponent graphComponent) { super(graphComponent); } @@ -38,7 +38,6 @@ dataFlowGraph = analyzeDataTransferModel(model); showLayers(DATA_FLOW_LAYER); } - // 変更点 if (prevStage instanceof ControlFlowModelingStage) { showLayers(DATA_FLOW_LAYER); } @@ -80,7 +79,6 @@ if (prevStage instanceof DataFlowModelingStage) { return ((DataFlowModelingStage) prevStage).isValid(); } - // 変更点 if (prevStage instanceof DependencyModelingStage) { return ((DependencyModelingStage) prevStage).isValid(); } @@ -146,7 +144,7 @@ Map channelInToCell = new HashMap<>(); Map channelOutToCell = new HashMap<>(); channelToCell = new HashMap<>(); - eventChannelToCell = new HashMap<>(); // 変更点 + eventChannelToCell = new HashMap<>(); resNodeToCell = new HashMap<>(); mxGeometry geoPortIn = new mxGeometry(0, 0.5, PORT_DIAMETER, PORT_DIAMETER); @@ -228,7 +226,7 @@ } mxCell channelCell = (mxCell) graph.insertVertex(layer, null, channelName, 150, 20, w, h, "verticalAlign=top"); channelToCell.put(channel, channelCell); - eventChannelToCell.put(channel, channelCell); // 変更点 + eventChannelToCell.put(channel, channelCell); mxCell portOut = new mxCell(null, geoPortOut, "shape=ellipse;perimter=ellipsePerimeter"); portOut.setVertex(true); @@ -331,7 +329,7 @@ } mxCell channelCell = (mxCell) graph.insertVertex(parentCell, null, channelName, w / 4, h / 4, w / 2, h / 2, "verticalAlign=top"); channelToCell.put(channel, channelCell); - eventChannelToCell.put(channel, channelCell); // 変更点 + eventChannelToCell.put(channel, channelCell); mxCell portOut = new mxCell(null, geoPortOut, "shape=ellipse;perimter=ellipsePerimeter"); portOut.setVertex(true); @@ -380,7 +378,6 @@ return channelToCell; } - // 変更点 public HashMap getEventChannelToCell() { return eventChannelToCell; } diff --git a/AlgebraicDataflowArchitectureModel/src/application/views/FlowLayerWindow.java b/AlgebraicDataflowArchitectureModel/src/application/views/FlowLayerWindow.java index 29649a1..37d6f86 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/views/FlowLayerWindow.java +++ b/AlgebraicDataflowArchitectureModel/src/application/views/FlowLayerWindow.java @@ -4,7 +4,7 @@ import application.editor.Editor; import application.editor.IStageChangeListener; import application.editor.Stage; -import application.editor.stages.ControlFlowModelingStage; // 変更点 +import application.editor.stages.ControlFlowModelingStage; import application.editor.stages.DataFlowModelingStage; import application.editor.stages.DependencyModelingStage; import application.editor.stages.PushPullSelectionStage; @@ -18,11 +18,11 @@ * {@link FlowLayerWindow} shows the window for enabling / disabling layers in the graph. */ public class FlowLayerWindow extends JDialog implements IStageChangeListener { - private final String title = "Flow Layer"; // 変更点 - private final JCheckBox dataFlowCheckBox; // 変更点 - private final JCheckBox pushFlowCheckBox; // 変更点 - private final JCheckBox pullFlowCheckBox; // 変更点 - private final JCheckBox dependencyCheckBox; // 変更点 + private final String title = "Flow Layer"; + private final JCheckBox dataFlowCheckBox; + private final JCheckBox pushFlowCheckBox; + private final JCheckBox pullFlowCheckBox; + private final JCheckBox dependencyCheckBox; private Stage stage = null; @@ -89,7 +89,7 @@ */ @Override public void stageChanged(Stage newStage) { - if (newStage instanceof ControlFlowModelingStage) { // 変更点 + if (newStage instanceof ControlFlowModelingStage) { setAllCheckBoxesEnabled(true); newStage.setLayerEnabled(Stage.PUSH_FLOW_LAYER, pushFlowCheckBox.isSelected()); diff --git a/AlgebraicDataflowArchitectureModel/src/models/dependencyModel/DependencyGraph.java b/AlgebraicDataflowArchitectureModel/src/models/dependencyModel/DependencyGraph.java index 66b77bc..2108c73 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/dependencyModel/DependencyGraph.java +++ b/AlgebraicDataflowArchitectureModel/src/models/dependencyModel/DependencyGraph.java @@ -32,22 +32,6 @@ } initRootStatefulObjectNodes(getDataFlowGraph()); -// initStatefulObjectNodes(getDataFlowGraph()); - } - - public DependencyGraph(DataFlowGraph dataFlowGraph, DataTransferModel model){ - this.controlFlowGraph = new ControlFlowGraph(dataFlowGraph, model); - this.objectNodeMap = new HashMap<>(); - - for (Edge e : controlFlowGraph.getPushCallGraph().getEdges()) { - addEdge(e.getSource(), e.getDestination()); - } - for (Edge e : controlFlowGraph.getPullCallGraph().getEdges()) { - addEdge(e.getSource(), e.getDestination()); - } - - initRootStatefulObjectNodes(getDataFlowGraph()); -// initStatefulObjectNodes(getDataFlowGraph()); } private void initRootStatefulObjectNodes(DataFlowGraph dfGraph) {