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()); } }