diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java index 3a5da26..50db9ad 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import code.ast.Block; +import code.ast.CompilationUnit; import code.ast.FieldDeclaration; import code.ast.MethodDeclaration; import code.ast.TypeDeclaration; @@ -30,12 +31,14 @@ public class CodeGenerator { public static final Type typeVoid = new Type("Void", "void"); + public static String mainTypeName = "Main"; - static public ArrayList doGenerate(ResourceDependencyGraph graph, DataFlowModel model) { - ArrayList codes = new ArrayList<>(); + static public ArrayList doGenerate(ResourceDependencyGraph graph, DataFlowModel model) { + ArrayList codes = new ArrayList<>(); ArrayList resources = StoreResourceCheck(graph); - - codes.add(new TypeDeclaration("Main")); + + TypeDeclaration mainType = new TypeDeclaration(mainTypeName); + codes.add(new CompilationUnit(mainType)); for (ResourceNode rn : resources) { boolean f = false; String name = rn.getIdentifierTemplate().getResourceName().substring(0, 1).toUpperCase() @@ -72,7 +75,7 @@ consstr += ")"; FieldDeclaration field = new FieldDeclaration(new Type(name, name), rn.getIdentifierTemplate().getResourceName(), consstr); - codes.get(0).addField(field); + mainType.addField(field); MethodDeclaration cons = new MethodDeclaration(name, true); Block block = new Block(); for (Edge e : rn.getOutEdges()) { @@ -126,7 +129,7 @@ io = new MethodDeclaration( ((Term) cm.getStateTransition().getMessageExpression()).getSymbol().getImplName(), false, typeVoid, params); - codes.get(0).addMethod(io); + mainType.addMethod(io); } } } @@ -141,7 +144,7 @@ } type.addMethod(new MethodDeclaration("get" + type.getTypeName(), rn.getIdentifierTemplate().getResourceStateType())); - codes.add(type); + codes.add(new CompilationUnit(type)); } for (Node n : graph.getNodes()) { ResourceNode rn = (ResourceNode) n; @@ -152,7 +155,7 @@ get.setBody(new Block()); get.getBody().addStatement( "return " + rn.getIdentifierTemplate().getResourceName() + "." + get.getName() + "();"); - codes.get(0).addMethod(get); + mainType.addMethod(get); } return codes; } @@ -162,7 +165,7 @@ for (TypeDeclaration type : codeTree) { codes.add("public class " + type.getTypeName() + "{"); for (FieldDeclaration field : type.getFields()) { - if (type.getTypeName() != "Main") { + if (type.getTypeName() != mainTypeName) { String cons = "\t" + "private " + field.getType().getImplementationTypeName() + " " + field.getName(); if (field.getType().equals(DataConstraintModel.typeList)) @@ -187,7 +190,7 @@ } } codes.add(""); - if (type.getTypeName() != "Main") { + if (type.getTypeName() != mainTypeName) { if (!type.getConstructors().isEmpty()) { String cons = "\t" + "public " + type.getTypeName() + "("; for (VariableDeclaration constructor : type.getConstructors()) { diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageDecision.java b/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageDecision.java deleted file mode 100644 index 1172a88..0000000 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageDecision.java +++ /dev/null @@ -1,67 +0,0 @@ -package algorithms; - -import java.util.HashSet; - -import models.*; -import models.algebra.*; -import models.dataConstraintModel.ChannelMember; -import models.dataConstraintModel.DataConstraintModel; -import models.dataFlowModel.*; - -public class DataStorageDecision { - static private HashSet arrivedNode = new HashSet<>(); - - static public void run(ResourceDependencyGraph graph) { - arrivedNode.clear(); - for (Node n : graph.getNodes()) { - ResourceNode resource = (ResourceNode) n; - trackNode(resource); - } - } - - static private void trackNode(ResourceNode resource) { - if (arrivedNode.contains(resource)) - return; - arrivedNode.add(resource); - boolean flag = false; - for (Edge e : resource.getInEdges()) { - if (((PushPullAttribute) e.getAttribute()).getOptions().get(0) == PushPullValue.PUSH) { - trackNode((ResourceNode) e.getSource()); - flag = true; - } - } - if (resource.getInEdges().size() == 0) - flag = true; - ((StoreAttribute) resource.getAttribute()).setStored(flag); - if (resource.getIdentifierTemplate().getResourceStateType() == null) { - for (Edge e : resource.getInEdges()) { - for (ChannelMember cm : ((ResourceDependency) e).getChannelGenerator().getChannelMembers()) { - if (((PushPullAttribute) ((ResourceDependency) e).getAttribute()).getOptions() - .get(0) == PushPullValue.PUSH - && cm.getStateTransition().getNextStateExpression().getClass() == Term.class) { - if (((Term) cm.getStateTransition().getNextStateExpression()).getSymbol().getName() - .equals("cons")) { - resource.getIdentifierTemplate().setResourceStateType(DataConstraintModel.typeList); - } - } - break; - } - } - for (Edge e : resource.getOutEdges()) { - for (ChannelMember cm : ((ResourceDependency) e).getChannelGenerator().getChannelMembers()) { - if (((PushPullAttribute) ((ResourceDependency) e).getAttribute()).getOptions() - .get(0) != PushPullValue.PUSH - && cm.getStateTransition().getNextStateExpression().getClass() == Term.class) { - if (((Term) cm.getStateTransition().getNextStateExpression()).getSymbol().getName() - .equals("cons")) { - resource.getIdentifierTemplate().setResourceStateType(DataConstraintModel.typeList); - } - } - break; - } - } - if (resource.getIdentifierTemplate().getResourceStateType() == null) - resource.getIdentifierTemplate().setResourceStateType(DataConstraintModel.typeInt); - } - } -} diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageNecessity.java b/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageNecessity.java deleted file mode 100644 index f516910..0000000 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageNecessity.java +++ /dev/null @@ -1,46 +0,0 @@ -package algorithms; - -import models.*; -import models.algebra.*; -import models.dataConstraintModel.*; -import models.dataFlowModel.*; - -public class DataStorageNecessity { - static public ResourceDependencyGraph run(DataFlowModel model) { - ResourceDependencyGraph graph = model.getResourceDependencyGraph(); - DataConstraintModel dcmodel = (DataConstraintModel) model; - for (ChannelGenerator generator : dcmodel.getChannelGenerators()) { - boolean flag = false; - for (ChannelMember member : ((DataflowChannelGenerator) generator).getOutputChannelMembers()) { - Expression curexp = member.getStateTransition().getCurStateExpression(); - Expression nextexp = member.getStateTransition().getNextStateExpression(); - for (Position pos : curexp.getVariables().keySet()) { - if (nextexp.contains(curexp.getVariables().get(pos))) { - flag = true; - } - } - } - for (Node node : graph.getNodes()) { - for (ChannelMember member : generator.getChannelMembers()) { - if (((ResourceNode) node).getIdentifierTemplate().equals(member.getIdentifierTemplate())) { - setStoreAttribute(flag, (ResourceNode) node); - } - } - } - } - for (Node node : graph.getNodes()) { - if (((ResourceNode) node).getPredecessors().size() > 1) { - setStoreAttribute(true, (ResourceNode) node); - } else if (((ResourceNode) node).getAttribute() == null) { - setStoreAttribute(false, (ResourceNode) node); - } - } - return graph; - } - - static private void setStoreAttribute(boolean flag, ResourceNode node) { - StoreAttribute store = new StoreAttribute(); - store.setNeeded(flag); - node.setAttribute(store); - } -} diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/EdgeTransitionSelectable.java b/AlgebraicDataflowArchitectureModel/src/algorithms/EdgeTransitionSelectable.java deleted file mode 100644 index d86cbad..0000000 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/EdgeTransitionSelectable.java +++ /dev/null @@ -1,31 +0,0 @@ -package algorithms; - -import models.*; -import models.dataFlowModel.*; - -public class EdgeTransitionSelectable { - static public void run(ResourceDependencyGraph graph) { - PushPullAttribute ppat = new PushPullAttribute(); - ppat.addOption(PushPullValue.PUSHorPULL); - ppat.addOption(PushPullValue.PUSH); - ppat.addOption(PushPullValue.PULL); - for (Node n : graph.getNodes()) { - if (((StoreAttribute) ((ResourceNode) n).getAttribute()).isNeeded()) { - trackEdges(n); - } - } - for (Edge e : graph.getEdges()) { - if (((ResourceDependency) e).getAttribute() == null) { - ((ResourceDependency) e).setAttribute(ppat); - } - } - } - - static private void trackEdges(Node n) { - PushPullAttribute ppat = new PushPullAttribute(); - ppat.addOption(PushPullValue.PUSH); - for (Edge e : ((ResourceNode) n).getInEdges()) { - ((ResourceDependency) e).setAttribute(ppat); - } - } -} diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/FinalDecisionOfStoringResourceStates.java b/AlgebraicDataflowArchitectureModel/src/algorithms/FinalDecisionOfStoringResourceStates.java new file mode 100644 index 0000000..999e9c1 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/FinalDecisionOfStoringResourceStates.java @@ -0,0 +1,67 @@ +package algorithms; + +import java.util.HashSet; + +import models.*; +import models.algebra.*; +import models.dataConstraintModel.ChannelMember; +import models.dataConstraintModel.DataConstraintModel; +import models.dataFlowModel.*; + +public class FinalDecisionOfStoringResourceStates { + static private HashSet arrivedNode = new HashSet<>(); + + static public void doDecide(ResourceDependencyGraph graph) { + arrivedNode.clear(); + for (Node n : graph.getNodes()) { + ResourceNode resource = (ResourceNode) n; + trackNode(resource); + } + } + + static private void trackNode(ResourceNode resource) { + if (arrivedNode.contains(resource)) + return; + arrivedNode.add(resource); + boolean flag = false; + for (Edge e : resource.getInEdges()) { + if (((PushPullAttribute) e.getAttribute()).getOptions().get(0) == PushPullValue.PUSH) { + trackNode((ResourceNode) e.getSource()); + flag = true; + } + } + if (resource.getInEdges().size() == 0) + flag = true; + ((StoreAttribute) resource.getAttribute()).setStored(flag); + if (resource.getIdentifierTemplate().getResourceStateType() == null) { + for (Edge e : resource.getInEdges()) { + for (ChannelMember cm : ((ResourceDependency) e).getChannelGenerator().getChannelMembers()) { + if (((PushPullAttribute) ((ResourceDependency) e).getAttribute()).getOptions() + .get(0) == PushPullValue.PUSH + && cm.getStateTransition().getNextStateExpression().getClass() == Term.class) { + if (((Term) cm.getStateTransition().getNextStateExpression()).getSymbol().getName() + .equals("cons")) { + resource.getIdentifierTemplate().setResourceStateType(DataConstraintModel.typeList); + } + } + break; + } + } + for (Edge e : resource.getOutEdges()) { + for (ChannelMember cm : ((ResourceDependency) e).getChannelGenerator().getChannelMembers()) { + if (((PushPullAttribute) ((ResourceDependency) e).getAttribute()).getOptions() + .get(0) != PushPullValue.PUSH + && cm.getStateTransition().getNextStateExpression().getClass() == Term.class) { + if (((Term) cm.getStateTransition().getNextStateExpression()).getSymbol().getName() + .equals("cons")) { + resource.getIdentifierTemplate().setResourceStateType(DataConstraintModel.typeList); + } + } + break; + } + } + if (resource.getIdentifierTemplate().getResourceStateType() == null) + resource.getIdentifierTemplate().setResourceStateType(DataConstraintModel.typeInt); + } + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/MethodBodyGenerator.java b/AlgebraicDataflowArchitectureModel/src/algorithms/MethodBodyGenerator.java index 89844c7..f0ceb50 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/MethodBodyGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/MethodBodyGenerator.java @@ -4,6 +4,7 @@ import java.util.HashMap; import java.util.Map; +import code.ast.CompilationUnit; import code.ast.MethodDeclaration; import code.ast.TypeDeclaration; import models.Edge; @@ -28,7 +29,7 @@ import models.dataFlowModel.StoreAttribute; public class MethodBodyGenerator { - public static ArrayList doGenerate(ResourceDependencyGraph graph, DataFlowModel model, ArrayList types) { + public static ArrayList doGenerate(ResourceDependencyGraph graph, DataFlowModel model, ArrayList codes) { Symbol floor = model.getSymbol("floor"); Symbol.Memento floorMem = null; if (floor != null) { @@ -46,8 +47,10 @@ // Create a map from type names (lower case) to their types. Map typeMap = new HashMap<>(); - for (TypeDeclaration type: types) { - typeMap.put(type.getTypeName().substring(0,1).toLowerCase() + type.getTypeName().substring(1), type); + for (CompilationUnit code: codes) { + for (TypeDeclaration type: code.types()) { + typeMap.put(type.getTypeName().substring(0,1).toLowerCase() + type.getTypeName().substring(1), type); + } } // Generate the body of each update or getter method. @@ -109,7 +112,8 @@ } } // for source nodes - TypeDeclaration mainType = typeMap.get("main"); + String mainTypeName = CodeGenerator.mainTypeName.substring(0,1).toLowerCase() + CodeGenerator.mainTypeName.substring(1); + TypeDeclaration mainType = typeMap.get(mainTypeName); for (Node n: graph.getNodes()) { ResourceNode resource = (ResourceNode) n; String resourceName = resource.getIdentifierTemplate().getResourceName(); @@ -138,7 +142,7 @@ if (floor != null) floor.setMemento(floorMem); if (sum != null) sum.setMemento(sumMem); - return types; + return codes; } private static MethodDeclaration getUpdateMethod(TypeDeclaration type, TypeDeclaration from) { diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/NecessityOfStoringResourceStates.java b/AlgebraicDataflowArchitectureModel/src/algorithms/NecessityOfStoringResourceStates.java new file mode 100644 index 0000000..763e0f5 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/NecessityOfStoringResourceStates.java @@ -0,0 +1,46 @@ +package algorithms; + +import models.*; +import models.algebra.*; +import models.dataConstraintModel.*; +import models.dataFlowModel.*; + +public class NecessityOfStoringResourceStates { + static public ResourceDependencyGraph doDecide(DataFlowModel model) { + ResourceDependencyGraph graph = model.getResourceDependencyGraph(); + DataConstraintModel dcmodel = (DataConstraintModel) model; + for (ChannelGenerator generator : dcmodel.getChannelGenerators()) { + boolean flag = false; + for (ChannelMember member : ((DataflowChannelGenerator) generator).getOutputChannelMembers()) { + Expression curexp = member.getStateTransition().getCurStateExpression(); + Expression nextexp = member.getStateTransition().getNextStateExpression(); + for (Position pos : curexp.getVariables().keySet()) { + if (nextexp.contains(curexp.getVariables().get(pos))) { + flag = true; + } + } + } + for (Node node : graph.getNodes()) { + for (ChannelMember member : generator.getChannelMembers()) { + if (((ResourceNode) node).getIdentifierTemplate().equals(member.getIdentifierTemplate())) { + setStoreAttribute(flag, (ResourceNode) node); + } + } + } + } + for (Node node : graph.getNodes()) { + if (((ResourceNode) node).getPredecessors().size() > 1) { + setStoreAttribute(true, (ResourceNode) node); + } else if (((ResourceNode) node).getAttribute() == null) { + setStoreAttribute(false, (ResourceNode) node); + } + } + return graph; + } + + static private void setStoreAttribute(boolean flag, ResourceNode node) { + StoreAttribute store = new StoreAttribute(); + store.setNeeded(flag); + node.setAttribute(store); + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/SelectableDataTransfers.java b/AlgebraicDataflowArchitectureModel/src/algorithms/SelectableDataTransfers.java new file mode 100644 index 0000000..7975e57 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/SelectableDataTransfers.java @@ -0,0 +1,32 @@ +package algorithms; + +import models.*; +import models.dataFlowModel.*; + +public class SelectableDataTransfers { + static public ResourceDependencyGraph init(ResourceDependencyGraph graph) { + PushPullAttribute ppat = new PushPullAttribute(); + ppat.addOption(PushPullValue.PUSHorPULL); + ppat.addOption(PushPullValue.PUSH); + ppat.addOption(PushPullValue.PULL); + for (Node n : graph.getNodes()) { + if (((StoreAttribute) ((ResourceNode) n).getAttribute()).isNeeded()) { + trackEdges(n); + } + } + for (Edge e : graph.getEdges()) { + if (((ResourceDependency) e).getAttribute() == null) { + ((ResourceDependency) e).setAttribute(ppat); + } + } + return graph; + } + + static private void trackEdges(Node n) { + PushPullAttribute ppat = new PushPullAttribute(); + ppat.addOption(PushPullValue.PUSH); + for (Edge e : ((ResourceNode) n).getInEdges()) { + ((ResourceDependency) e).setAttribute(ppat); + } + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/code/ast/CompilationUnit.java b/AlgebraicDataflowArchitectureModel/src/code/ast/CompilationUnit.java new file mode 100644 index 0000000..6a7f3f7 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/code/ast/CompilationUnit.java @@ -0,0 +1,41 @@ +package code.ast; + +import java.util.ArrayList; +import java.util.List; + +public class CompilationUnit extends ASTNode { + private List imports = new ArrayList<>(); + private List types = new ArrayList<>(); + + public CompilationUnit(TypeDeclaration type) { + types.add(type); + } + + public List imports() { + return imports; + } + + public List types() { + return types; + } + + public void addImport(ImportDeclaration imp) { + imports.add(imp); + } + + public void addType(TypeDeclaration type) { + types.add(type); + } + + public String toString() { + String result = ""; + for (ImportDeclaration imp: imports) { + result += imp.toString(); + } + result +="\n"; + for (TypeDeclaration type: types) { + result += type.toString(); + } + return result; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/code/ast/ImportDeclaration.java b/AlgebraicDataflowArchitectureModel/src/code/ast/ImportDeclaration.java new file mode 100644 index 0000000..9135d68 --- /dev/null +++ b/AlgebraicDataflowArchitectureModel/src/code/ast/ImportDeclaration.java @@ -0,0 +1,21 @@ +package code.ast; + +public class ImportDeclaration { + private String name; + + public ImportDeclaration(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String toString() { + return "import " + name + ";\n"; + } +} diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/actions/PrototypeGenerateAction.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/actions/PrototypeGenerateAction.java index 905c600..7c17499 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/actions/PrototypeGenerateAction.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/actions/PrototypeGenerateAction.java @@ -20,12 +20,12 @@ @Override public void actionPerformed(ActionEvent e) { - ResourceDependencyGraph graph = editor.getResourceGraph(); + ResourceDependencyGraph graph = editor.getResourceDependencyGraph(); DataFlowModel model = editor.getModel(); - DataStorageDecision.run(graph); + FinalDecisionOfStoringResourceStates.doDecide(graph); editor.setCodes(MethodBodyGenerator.doGenerate(graph, model, CodeGenerator.doGenerate(graph, model))); - for (TypeDeclaration type : editor.getCodes()) { - System.out.println(type); + for (CompilationUnit file : editor.getCodes()) { + System.out.println(file); } } diff --git a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java index e68f321..10399bb 100644 --- a/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java +++ b/AlgebraicDataflowArchitectureModel/src/graphicalrefactor/editor/Editor.java @@ -18,10 +18,10 @@ import com.mxgraph.util.mxPoint; import com.mxgraph.view.mxGraph; -import algorithms.DataStorageNecessity; -import algorithms.EdgeTransitionSelectable; +import algorithms.NecessityOfStoringResourceStates; +import algorithms.SelectableDataTransfers; import algorithms.UpdateConflictCheck; -import code.ast.TypeDeclaration; +import code.ast.CompilationUnit; import models.Edge; import models.Node; import models.dataFlowModel.DataFlowModel; @@ -49,9 +49,9 @@ private mxGraph graph = null; private DataFlowModel model = null; - private ResourceDependencyGraph resourceGraph = null; + private ResourceDependencyGraph resourceDependencyGraph = null; - private ArrayList codes = null; + private ArrayList codes = null; public Editor(mxGraph graph) { this.graph = graph; @@ -73,19 +73,19 @@ this.model = model; } - public ResourceDependencyGraph getResourceGraph() { - return resourceGraph; + public ResourceDependencyGraph getResourceDependencyGraph() { + return resourceDependencyGraph; } - public void setResourceGraph(ResourceDependencyGraph resourceGraph) { - this.resourceGraph = resourceGraph; + public void setResourceDependencyGraph(ResourceDependencyGraph resourceDependencyGraph) { + this.resourceDependencyGraph = resourceDependencyGraph; } - public ArrayList getCodes() { + public ArrayList getCodes() { return codes; } - public void setCodes(ArrayList codes) { + public void setCodes(ArrayList codes) { this.codes = codes; } @@ -95,7 +95,9 @@ try { model = parser.doParse(); if(!UpdateConflictCheck.run(model)) return null; - graph = constructGraph(model); + ResourceDependencyGraph resourceGraph = NecessityOfStoringResourceStates.doDecide(model); + resourceDependencyGraph = SelectableDataTransfers.init(resourceGraph); + graph = constructGraph(model, resourceDependencyGraph); return model; } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutKeyword | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression @@ -108,10 +110,7 @@ return null; } - public mxGraph constructGraph(DataFlowModel model) { - ResourceDependencyGraph resourceDependencyGraph = DataStorageNecessity.run(model); - EdgeTransitionSelectable.run(resourceDependencyGraph); - + public mxGraph constructGraph(DataFlowModel model, ResourceDependencyGraph resourceDependencyGraph) { ((mxGraphModel) graph.getModel()).clear(); Object parent = graph.getDefaultParent(); graph.getModel().beginUpdate(); @@ -176,7 +175,6 @@ graph.getModel().endUpdate(); } setTreeLayout(); - setResourceGraph(resourceDependencyGraph); return graph; } diff --git a/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java b/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java index a0906f5..9e10576 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java @@ -7,6 +7,7 @@ import java.util.ArrayList; import algorithms.*; +import code.ast.CompilationUnit; import code.ast.TypeDeclaration; import models.dataFlowModel.*; import parser.*; @@ -19,10 +20,10 @@ DataFlowModel model; try { model = parser.doParse(); - ResourceDependencyGraph graph = DataStorageNecessity.run(model); - EdgeTransitionSelectable.run(graph); - DataStorageDecision.run(graph); - ArrayList codetree = MethodBodyGenerator.doGenerate(graph, model, CodeGenerator.doGenerate(graph, model)); + ResourceDependencyGraph graph = NecessityOfStoringResourceStates.doDecide(model); + SelectableDataTransfers.init(graph); + FinalDecisionOfStoringResourceStates.doDecide(graph); + ArrayList codetree = MethodBodyGenerator.doGenerate(graph, model, CodeGenerator.doGenerate(graph, model)); System.out.println(codetree); } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutKeyword | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression diff --git a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java index 0797a33..e67f25c 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageDecisionTest.java @@ -19,9 +19,9 @@ try { model = parser.doParse(); System.out.println(model); - ResourceDependencyGraph graph = DataStorageNecessity.run(model); - EdgeTransitionSelectable.run(graph); - DataStorageDecision.run(graph); + ResourceDependencyGraph graph = NecessityOfStoringResourceStates.doDecide(model); + SelectableDataTransfers.init(graph); + FinalDecisionOfStoringResourceStates.doDecide(graph); for(Node n:graph.getNodes()) { System.out.println(((ResourceNode) n).getIdentifierTemplate().getResourceName() + ":" + ((StoreAttribute) ((ResourceNode) n).getAttribute()).isStored()); } diff --git a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java index b287390..a4e58d6 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/DataStorageNecessityTest.java @@ -5,7 +5,7 @@ import java.io.FileNotFoundException; import java.io.FileReader; -import algorithms.DataStorageNecessity; +import algorithms.NecessityOfStoringResourceStates; import models.Node; import models.dataFlowModel.*; import parser.ExpectedChannel; @@ -29,7 +29,7 @@ try { model = parser.doParse(); System.out.println(model); - ResourceDependencyGraph graph = DataStorageNecessity.run(model); + ResourceDependencyGraph graph = NecessityOfStoringResourceStates.doDecide(model); for (Node n:graph.getNodes()) { ResourceNode resource = (ResourceNode)n; if((StoreAttribute)resource.getAttribute() != null) { diff --git a/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java b/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java index 98a88ab..0d165ec 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/EdgeTransitionSelectableTest.java @@ -19,8 +19,8 @@ try { model = parser.doParse(); System.out.println(model); - ResourceDependencyGraph graph = DataStorageNecessity.run(model); - EdgeTransitionSelectable.run(graph); + ResourceDependencyGraph graph = NecessityOfStoringResourceStates.doDecide(model); + SelectableDataTransfers.init(graph); for(Edge e:graph.getEdges()) { ResourceDependency re = (ResourceDependency) e; System.out.println(re.getSource() + "-" + re.getDestination() + ":" + ((PushPullAttribute)(re.getAttribute())).getOptions());