diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java index 24fa338..aa07cd0 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java @@ -34,6 +34,8 @@ ((ResourceNode) re.getDestination()).getIdentifierTemplate().getResourceName())); } } + ArrayList vars = new ArrayList<>(); + boolean flag = false; for (Edge e : rn.getInEdges()) { ResourceDependency re = (ResourceDependency) e; String rename = ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceName() @@ -44,11 +46,20 @@ ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceName())); type.addConstructors(new VariableDeclaration(new Type(rename, rename), ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceName())); + }else { + vars.add(new VariableDeclaration(new Type(rename, rename), + ((ResourceNode) re.getSource()).getIdentifierTemplate().getResourceName())); + flag = true; } } - if (((StoreAttribute) rn.getAttribute()).isStored()) + if(flag) type.addMethod(new MethodDeclaration("update", false, new Type("Void", "void"), vars)); + if (((StoreAttribute) rn.getAttribute()).isStored()) { type.addField(new FieldDeclaration(DataConstraintModel.typeInt, rn.getIdentifierTemplate().getResourceName())); + type.addMethod(new MethodDeclaration("set" + type.getTypeName(), new Type("Void", "void"))); + } + type.addMethod(new MethodDeclaration("get" + type.getTypeName(), + new Type(type.getTypeName(), type.getTypeName()))); codes.add(type); } return codes; @@ -65,12 +76,13 @@ } else { String cons = "\t" + "private " + field.getType().getImplementationTypeName() + " " + field.getName() + " = new " + field.getType().getTypeName() + "("; - for (TypeDeclaration tree:codeTree) { - if(field.getType().getTypeName() == tree.getTypeName()) { - for(VariableDeclaration var:tree.getConstructors()) { + for (TypeDeclaration tree : codeTree) { + if (field.getType().getTypeName() == tree.getTypeName()) { + for (VariableDeclaration var : tree.getConstructors()) { cons += var.getType().getTypeName() + " " + var.getName() + ","; } - if(!tree.getConstructors().isEmpty()) cons = cons.substring(0, cons.length() - 1); + if (!tree.getConstructors().isEmpty()) + cons = cons.substring(0, cons.length() - 1); break; } } @@ -97,12 +109,17 @@ } codes.add("\t" + "}"); } + codes.add(""); for (MethodDeclaration method : type.getMethods()) { - codes.add("\t" + "public " + method.getReturnType().getImplementationTypeName() + " " + method.getName() - + "{"); - for (VariableDeclaration value : method.getParameters()) { - codes.add("\t\t" + value.getType().getImplementationTypeName() + " " + value.getName()); + String varstr = "\t" + "public " + method.getReturnType().getImplementationTypeName() + " " + + method.getName() + "("; + if (method.getParameters() != null) { + for (VariableDeclaration var : method.getParameters()) { + varstr += var.getType().getImplementationTypeName() + " " + var.getName() + ","; + } + if (!method.getParameters().isEmpty()) varstr = varstr.substring(0, varstr.length() - 1); } + codes.add(varstr + ")" + "{"); codes.add("\t" + "}"); codes.add(""); }