diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java index 06b12cf..ff8a2b0 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java @@ -5,6 +5,7 @@ import code.ast.Block; import code.ast.CompilationUnit; import code.ast.FieldDeclaration; +import code.ast.ImportDeclaration; import code.ast.MethodDeclaration; import code.ast.TypeDeclaration; import code.ast.VariableDeclaration; @@ -51,7 +52,9 @@ ArrayList resources = StoreResourceCheck(graph); TypeDeclaration mainType = new TypeDeclaration(mainTypeName); - codes.add(new CompilationUnit(mainType)); + CompilationUnit mainCU = new CompilationUnit(mainType); + mainCU.addImport(new ImportDeclaration("java.util.*")); + codes.add(mainCU); for (ResourceNode rn : resources) { boolean f = false; String name = rn.getIdentifierTemplate().getResourceName().substring(0, 1).toUpperCase() @@ -80,7 +83,7 @@ if (rn.getIndegree() > 1) type.addField(new FieldDeclaration( ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceStateType(), - rename)); + ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceName())); } } if (f) @@ -157,7 +160,9 @@ } type.addMethod(new MethodDeclaration("get" + type.getTypeName(), rn.getIdentifierTemplate().getResourceStateType())); - codes.add(new CompilationUnit(type)); + CompilationUnit cu = new CompilationUnit(type); + cu.addImport(new ImportDeclaration("java.util.*")); + codes.add(cu); } for (Node n : graph.getNodes()) { ResourceNode rn = (ResourceNode) n; diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/MethodBodyGenerator.java b/AlgebraicDataflowArchitectureModel/src/algorithms/MethodBodyGenerator.java index f0ceb50..01fd6c4 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/MethodBodyGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/MethodBodyGenerator.java @@ -66,7 +66,7 @@ TypeDeclaration dstType = typeMap.get(dstResourceName); for (ChannelMember out: d.getChannelGenerator().getOutputChannelMembers()) { if (out.getIdentifierTemplate() == dst.getIdentifierTemplate()) { - if (pushPull.getOptions().get(0) == PushPullValue.PUSH) { + if (pushPull.getOptions().get(0) == PushPullValue.PUSH && srcType != null) { // for push data transfer MethodDeclaration update = getUpdateMethod(dstType, srcType); if (((StoreAttribute) dst.getAttribute()).isStored()) { @@ -118,19 +118,21 @@ ResourceNode resource = (ResourceNode) n; String resourceName = resource.getIdentifierTemplate().getResourceName(); TypeDeclaration type = typeMap.get(resourceName); - // getter method - MethodDeclaration getter = getGetterMethod(type); - if (getter.getBody() == null || getter.getBody().getStatements().size() == 0) { - getter.addStatement("return " + resource.getIdentifierTemplate().getResourceName() + ";"); - } - // methods for input events - MethodDeclaration input = getInputMethod(type, resource, model); - if (input != null) { - input.addFirstStatement("this." + resourceName + " = " + resourceName + ";"); - if (mainType != null) { - MethodDeclaration mainInput = getMethod(mainType, input.getName()); - if (mainInput != null) { - mainInput.addStatement("this." + resourceName + "." + input.getName() + "(" + resourceName + ");"); + if (type != null) { + // getter method + MethodDeclaration getter = getGetterMethod(type); + if (getter.getBody() == null || getter.getBody().getStatements().size() == 0) { + getter.addStatement("return " + resource.getIdentifierTemplate().getResourceName() + ";"); + } + // methods for input events + MethodDeclaration input = getInputMethod(type, resource, model); + if (input != null) { + input.addFirstStatement("this." + resourceName + " = " + resourceName + ";"); + if (mainType != null) { + MethodDeclaration mainInput = getMethod(mainType, input.getName()); + if (mainInput != null) { + mainInput.addStatement("this." + resourceName + "." + input.getName() + "(" + resourceName + ");"); + } } } }