diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/CodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/algorithm/CodeGenerator.java index b6ae64d..ef6e17e 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/CodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/CodeGenerator.java @@ -28,21 +28,27 @@ @Override public Expression getCurrentStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) { if (target.equals(from)) { - return new Field(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt); + return new Field(target.getResourceName(), + target.getResourceStateType() != null ? target.getResourceStateType() + : DataConstraintModel.typeInt); } return null; } @Override public Expression getNextStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) { - return new Parameter(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt); + return new Parameter(target.getResourceName(), + target.getResourceStateType() != null ? target.getResourceStateType() + : DataConstraintModel.typeInt); } }; IResourceStateAccessor pullAccessor = new IResourceStateAccessor() { @Override public Expression getCurrentStateAccessorFor(IdentifierTemplate target, IdentifierTemplate from) { if (target.equals(from)) { - return new Field(target.getResourceName(), target.getResourceStateType() != null ? target.getResourceStateType() : DataConstraintModel.typeInt); + return new Field(target.getResourceName(), + target.getResourceStateType() != null ? target.getResourceStateType() + : DataConstraintModel.typeInt); } return null; } @@ -54,7 +60,7 @@ return getter; } }; - + codes.add("public class Main {"); for (ResourceNode n : resources) { ResourceNode resource = (ResourceNode) n; @@ -64,7 +70,7 @@ + resource.getIdentifierTemplate().getResourceName() + " = new " + resource.getIdentifierTemplate().getResourceName().substring(0, 1).toUpperCase() + resource.getIdentifierTemplate().getResourceName().substring(1) + "("; - + str += ");"; codes.add(str); } @@ -78,12 +84,13 @@ if (((StoreAttribute) resource.getAttribute()).isStored()) { for (Edge e : resource.getInEdges()) { ResourceDependency re = (ResourceDependency) e; - for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) { + for (ChannelMember cm : re.getChannelGenerator().getChannelMembers()) { try { Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pushAccessor); - if(exp != null) { + if (exp != null) { Parameter param = exp.getSubTerms(Parameter.class).values().iterator().next(); - codes.add("\t" + "void update(" + param.getType().getImplementastionTypeName() + " " + param.toImplementation() + "){"); + codes.add("\t" + "void update(" + param.getType().getImplementastionTypeName() + " " + + param.toImplementation() + "){"); tmp = "\t\t" + exp.toImplementation(); codes.add(tmp); codes.add("\t" + "}"); @@ -108,12 +115,13 @@ } for (Edge e : resource.getOutEdges()) { ResourceDependency re = (ResourceDependency) e; - for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) { + for (ChannelMember cm : re.getChannelGenerator().getChannelMembers()) { try { Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pushAccessor); - if(exp != null) { + if (exp != null) { Parameter param = exp.getSubTerms(Parameter.class).values().iterator().next(); - codes.add("\t" + "void update(" + param.getType().getImplementastionTypeName() + " " + param.toImplementation() + "){"); + codes.add("\t" + "void update(" + param.getType().getImplementastionTypeName() + " " + + param.toImplementation() + "){"); tmp = "\t\t" + exp.toImplementation(); codes.add(tmp); codes.add("\t" + "}"); @@ -139,10 +147,10 @@ } else { for (Edge e : resource.getInEdges()) { ResourceDependency re = (ResourceDependency) e; - for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) { + for (ChannelMember cm : re.getChannelGenerator().getChannelMembers()) { try { Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pullAccessor); - if(exp != null) { + if (exp != null) { tmp = "\t" + "return " + exp.toImplementation(); codes.add(tmp); } @@ -166,10 +174,10 @@ } for (Edge e : resource.getOutEdges()) { ResourceDependency re = (ResourceDependency) e; - for(ChannelMember cm:re.getChannelGenerator().getChannelMembers()) { + for (ChannelMember cm : re.getChannelGenerator().getChannelMembers()) { try { Expression exp = re.getChannelGenerator().deriveUpdateExpressionOf(cm, pullAccessor); - if(exp != null) { + if (exp != null) { tmp = "\t" + "return " + exp.toImplementation(); tmp = "\t" + exp.toImplementation(); codes.add(tmp); @@ -198,40 +206,41 @@ } return codes; } - + static private ArrayList StoreResourceCheck(ResourceDependencyGraph graph) { ArrayList resources = new ArrayList<>(); - for(Node n:graph.getNodes()) { + for (Node n : graph.getNodes()) { ResourceNode rn = (ResourceNode) n; boolean flag = true; - for(Edge e:rn.getOutEdges()) { + for (Edge e : rn.getOutEdges()) { ResourceDependency re = (ResourceDependency) e; - if(((PushPullAttribute)re.getAttribute()).getOptions().get(0) == PushPullValue.PUSH) { + if (((PushPullAttribute) re.getAttribute()).getOptions().get(0) == PushPullValue.PUSH) { flag = false; } } - for(Edge e:rn.getInEdges()) { + for (Edge e : rn.getInEdges()) { ResourceDependency re = (ResourceDependency) e; - if(((PushPullAttribute)re.getAttribute()).getOptions().get(0) != PushPullValue.PUSH) { + if (((PushPullAttribute) re.getAttribute()).getOptions().get(0) != PushPullValue.PUSH) { flag = false; } } - if(flag) resources.add(rn); + if (flag) + resources.add(rn); } return resources; } - + static private ArrayList trackNode(ResourceNode rn) { ArrayList resources = new ArrayList<>(); - for(Edge e:rn.getOutEdges()) { + for (Edge e : rn.getOutEdges()) { ResourceDependency re = (ResourceDependency) e; - if(((PushPullAttribute)re.getAttribute()).getOptions().get(0) == PushPullValue.PUSH) { + if (((PushPullAttribute) re.getAttribute()).getOptions().get(0) == PushPullValue.PUSH) { return trackNode((ResourceNode) re.getDestination()); } } - for(Edge e:rn.getInEdges()) { + for (Edge e : rn.getInEdges()) { ResourceDependency re = (ResourceDependency) e; - if(((PushPullAttribute)re.getAttribute()).getOptions().get(0) != PushPullValue.PUSH) { + if (((PushPullAttribute) re.getAttribute()).getOptions().get(0) != PushPullValue.PUSH) { return trackNode((ResourceNode) re.getSource()); } } diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageDecision.java b/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageDecision.java index 78df79b..0ca2162 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageDecision.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageDecision.java @@ -16,7 +16,8 @@ } static private void trackNode(ResourceNode resource) { - if (arrivedNode.contains(resource)) return; + if (arrivedNode.contains(resource)) + return; arrivedNode.add(resource); boolean flag = false; for (Edge e : resource.getInEdges()) { @@ -25,7 +26,8 @@ flag = true; } } - if (resource.getInEdges().size() == 0) flag = true; + if (resource.getInEdges().size() == 0) + flag = true; ((StoreAttribute) resource.getAttribute()).setStored(flag); } } diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageNecessity.java b/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageNecessity.java index 5a6a8d1..d540032 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageNecessity.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/DataStorageNecessity.java @@ -23,24 +23,24 @@ for (Node node : graph.getNodes()) { for (ChannelMember member : generator.getChannelMembers()) { if (((ResourceNode) node).getIdentifierTemplate().equals(member.getIdentifierTemplate())) { - StoreAttribute store = new StoreAttribute(); - store.setNeeded(flag); - ((ResourceNode) node).setAttribute(store); + setStoreAttribute(flag, (ResourceNode) node); } } } } for (Node node : graph.getNodes()) { if (((ResourceNode) node).getPredecessors().size() > 1) { - StoreAttribute store = new StoreAttribute(); - store.setNeeded(true); - ((ResourceNode) node).setAttribute(store); + setStoreAttribute(true, (ResourceNode) node); } else if (((ResourceNode) node).getAttribute() == null) { - StoreAttribute store = new StoreAttribute(); - store.setNeeded(false); - ((ResourceNode) node).setAttribute(store); + setStoreAttribute(false, (ResourceNode) node); } } return graph; } + + static private void setStoreAttribute(boolean flag, ResourceNode node) { + StoreAttribute store = new StoreAttribute(); + store.setNeeded(true); + node.setAttribute(store); + } } diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/EdgeTransitionSelectable.java b/AlgebraicDataflowArchitectureModel/src/algorithm/EdgeTransitionSelectable.java index 8e9b51a..1721724 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/EdgeTransitionSelectable.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/EdgeTransitionSelectable.java @@ -24,13 +24,10 @@ static private void trackEdges(Node n) { PushPullAttribute ppat = new PushPullAttribute(); ppat.addOption(PushPullValue.PUSH);/* - for (Node pre : n.getPredecessors()) { - for (Edge in : n.getInEdges()) { - ((ResourceDependency) in).setAttribute(ppat); - } - trackEdges(pre); - }*/ - for(Edge e:((ResourceNode) n).getInEdges()) { + * for (Node pre : n.getPredecessors()) { for (Edge in : n.getInEdges()) { + * ((ResourceDependency) in).setAttribute(ppat); } trackEdges(pre); } + */ + for (Edge e : ((ResourceNode) n).getInEdges()) { ((ResourceDependency) e).setAttribute(ppat); } } diff --git a/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java b/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java index d80202b..999a747 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithm/UpdateConflictCheck.java @@ -62,18 +62,14 @@ strongconnect(node); } } - System.out.println(strong.size() + " " +model.getResourceDependencyGraph().getNodes().size()); + System.out.println(strong.size() + " " + model.getResourceDependencyGraph().getNodes().size()); /* - for(ChannelGenerator cg:model.getChannelGenerators()) { - DataflowChannelGenerator data = (DataflowChannelGenerator)cg; - for(ChannelMember channel:data.getChannelMembers()) { - for(ChannelMember another:data.getChannelMembers()) { - if(!channel.equals(another)) { - check = channel.getIdentifierTemplate() != another.getIdentifierTemplate(); - } - } - } - }*/ + * for(ChannelGenerator cg:model.getChannelGenerators()) { + * DataflowChannelGenerator data = (DataflowChannelGenerator)cg; + * for(ChannelMember channel:data.getChannelMembers()) { for(ChannelMember + * another:data.getChannelMembers()) { if(!channel.equals(another)) { check = + * channel.getIdentifierTemplate() != another.getIdentifierTemplate(); } } } } + */ return strong.size() == 0 && check; } } diff --git a/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java b/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java index 6370c7c..43dac07 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/CodeGeneratorTest.java @@ -21,7 +21,7 @@ ResourceDependencyGraph graph = DataStorageNecessity.run(model); EdgeTransitionSelectable.run(graph); DataStorageDecision.run(graph); - for(String str:CodeGenerator.doGenerate(graph)) { + for (String str : CodeGenerator.doGenerate(graph)) { System.out.println(str); } } catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutKeyword