diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/ControlFlowDelegationCellEditor.java b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/ControlFlowDelegationCellEditor.java index 455299b..a18d773 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/ControlFlowDelegationCellEditor.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/ControlFlowDelegationCellEditor.java @@ -5,6 +5,8 @@ import com.mxgraph.swing.mxGraphComponent; import application.editor.FlowCellEditor; +import models.controlFlowModel.CallEdge; +import models.controlFlowModel.CallEdgeAttribute; public class ControlFlowDelegationCellEditor extends FlowCellEditor { @@ -28,7 +30,10 @@ if( editingCell != null) stopEditing(true); if( graphComponent.getGraph().getModel().isEdge(cellObj) ) { - System.out.println("Edge: " + cellObj.toString()); + CallEdgeAttribute callEdgeAttrl = (CallEdgeAttribute)graphComponent.getGraph().getModel().getValue(cellObj); + + if(callEdgeAttrl == null) return; + System.out.println("Edge: " + callEdgeAttrl.getSelectedOption().name()); } } diff --git a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/ControlFlowDelegationStage.java b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/ControlFlowDelegationStage.java index 2171a54..8f03d6b 100644 --- a/AlgebraicDataflowArchitectureModel/src/application/editor/stages/ControlFlowDelegationStage.java +++ b/AlgebraicDataflowArchitectureModel/src/application/editor/stages/ControlFlowDelegationStage.java @@ -188,8 +188,8 @@ Object srcNodeCell =resNodeCells.get(srcResNode); Object dstNodeCell = resNodeCells.get(dstResNode); - - graph.insertEdge(layerCell, null, null/*callEdgeAttribute*/,srcNodeCell, dstNodeCell, "movable=false"); + + graph.insertEdge(layerCell, null, new CallEdgeAttribute(callEdge), srcNodeCell, dstNodeCell, "movable=false;"); } return graph; } diff --git a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallEdge.java b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallEdge.java index cfe1c83..484d861 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallEdge.java +++ b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallEdge.java @@ -1,11 +1,18 @@ package models.controlFlowModel; import models.Edge; +import models.dataFlowModel.PushPullValue; public class CallEdge extends Edge { - - public CallEdge(ObjectNode src, ObjectNode dst) { + private PushPullValue selectedOption = PushPullValue.PUSHorPULL; + + public CallEdge(ObjectNode src, ObjectNode dst, PushPullValue selectedOption) { super(src, dst); + this.selectedOption = selectedOption; + } + + public PushPullValue getSelectedOption() { + return this.selectedOption; } } diff --git a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallEdgeAttribute.java b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallEdgeAttribute.java index 9164d5c..e436c19 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallEdgeAttribute.java +++ b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallEdgeAttribute.java @@ -13,10 +13,14 @@ /************************************************************* * */ - public CallEdgeAttribute(PushPullValue selectedOption, ObjectNode srcObjNode, ObjectNode dstObjNode) { - this.selectedOption = selectedOption; - this.srcObjNode = srcObjNode; - this.dstObjNode = dstObjNode; + public CallEdgeAttribute(CallEdge callEdge) { + this.selectedOption = callEdge.getSelectedOption(); + + if(!(callEdge.getSource() instanceof ObjectNode)) throw new ClassCastException(callEdge.getSource() + "is not type of ObjectNode"); + this.srcObjNode = (ObjectNode)callEdge.getSource(); + + if(!(callEdge.getDestination() instanceof ObjectNode)) throw new ClassCastException(callEdge.getDestination() + "is not type of ObjectNode"); + this.dstObjNode = (ObjectNode)callEdge.getDestination(); } /************************************************************* @@ -36,4 +40,11 @@ return dstObjNode; } + /************************************************************* + * + */ + public String toString() { + return this.selectedOption.name(); + } + } diff --git a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java index c533f09..fbd3356 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java +++ b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/CallGraph.java @@ -5,6 +5,7 @@ import models.DirectedGraph; import models.Node; +import models.dataFlowModel.PushPullValue; import models.dataFlowModel.ResourceNode; public class CallGraph extends DirectedGraph { @@ -31,14 +32,14 @@ } } - public void addEdge(ResourceNode srcResNode, ResourceNode dstResNode) { + public void addEdge(ResourceNode srcResNode, ResourceNode dstResNode, PushPullValue selectedOption) { addNode(srcResNode); addNode(dstResNode); - addEdge(new CallEdge(getStatefulObjectNode(srcResNode), getStatefulObjectNode(dstResNode))); + addEdge(new CallEdge(getStatefulObjectNode(srcResNode), getStatefulObjectNode(dstResNode), selectedOption)); } - public void insertEdge(ObjectNode srcObjNode, ObjectNode dstObjNode, int n) { - CallEdge edge = new CallEdge(srcObjNode, dstObjNode); + public void insertEdge(ObjectNode srcObjNode, ObjectNode dstObjNode, PushPullValue selectedOption, int n) { + CallEdge edge = new CallEdge(srcObjNode, dstObjNode, selectedOption); simpleAddEdge(edge); addNode(srcObjNode); addNode(dstObjNode); diff --git a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/ControlFlowGraph.java b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/ControlFlowGraph.java index 23012bf..0830a1e 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/ControlFlowGraph.java +++ b/AlgebraicDataflowArchitectureModel/src/models/controlFlowModel/ControlFlowGraph.java @@ -22,10 +22,10 @@ ResourceNode dstNode = (ResourceNode) e.getDestination(); if (pushPull.getOptions().get(0) == PushPullValue.PUSH) { // same direction as the data flow - pushCallGraph.addEdge(srcNode, dstNode); + pushCallGraph.addEdge(srcNode, dstNode, PushPullValue.PUSH); } else { // reverse direction to the data flow - pullCallGraph.addEdge(dstNode, srcNode); + pullCallGraph.addEdge(dstNode, srcNode, PushPullValue.PULL); } } } @@ -40,7 +40,7 @@ ResourceNode srcNode = (ResourceNode) e.getSource(); ResourceNode dstNode = (ResourceNode) e.getDestination(); // same direction as the data flow - pushCallGraph.addEdge(srcNode, dstNode); + pushCallGraph.addEdge(srcNode, dstNode, PushPullValue.PUSH); } } else { // pull-first @@ -51,11 +51,11 @@ if (pushPull.getOptions().contains(PushPullValue.PULL)) { // Pull style is selectable // reverse direction to the data flow - pullCallGraph.addEdge(dstNode, srcNode); + pullCallGraph.addEdge(dstNode, srcNode, PushPullValue.PULL); } else { // Pull style is not selectable // same direction as the data flow - pushCallGraph.addEdge(srcNode, dstNode); + pushCallGraph.addEdge(srcNode, dstNode, PushPullValue.PUSH); } } }