diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java index daf30a2..9f1f26a 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/CodeGenerator.java @@ -72,8 +72,10 @@ codes.add("public class " + type.getTypeName() + "{"); for (FieldDeclaration field : type.getFields()) { if (type.getTypeName() != "Main") { - codes.add("\t" + "private " + field.getType().getImplementationTypeName() + " " + field.getName() - + ";"); + String cons = "\t" + "private " + field.getType().getImplementationTypeName() + " " + field.getName(); + if(field.getType().equals(DataConstraintModel.typeList)) cons += " = new ArrayList<>()"; + cons += ";"; + codes.add(cons); } else { String cons = "\t" + "private " + field.getType().getImplementationTypeName() + " " + field.getName() + " = new " + field.getType().getTypeName() + "("; @@ -110,9 +112,9 @@ } } codes.add("\t" + "}"); + codes.add(""); } } - codes.add(""); for (MethodDeclaration method : type.getMethods()) { String varstr = "\t" + "public " + method.getReturnType().getImplementationTypeName() + " " + method.getName() + "("; diff --git a/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageDecision.java b/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageDecision.java index cef7cfe..2664179 100644 --- a/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageDecision.java +++ b/AlgebraicDataflowArchitectureModel/src/algorithms/DataStorageDecision.java @@ -3,6 +3,10 @@ import java.util.HashSet; import models.*; +import models.algebra.Position; +import models.algebra.Term; +import models.algebra.Variable; +import models.dataConstraintModel.ChannelMember; import models.dataConstraintModel.DataConstraintModel; import models.dataFlowModel.*; @@ -30,8 +34,20 @@ if (resource.getInEdges().size() == 0) flag = true; ((StoreAttribute) resource.getAttribute()).setStored(flag); - if(resource.getIdentifierTemplate().getResourceStateType() == null) { - resource.getIdentifierTemplate().setResourceStateType(DataConstraintModel.typeInt); + if (resource.getIdentifierTemplate().getResourceStateType() == null) { + for (Edge e : resource.getInEdges()) { + for (ChannelMember cm : ((ResourceDependency) e).getChannelGenerator().getChannelMembers()) { + if (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/models/dataConstraintModel/DataConstraintModel.java b/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/DataConstraintModel.java index 0ec0afb..eebbb57 100644 --- a/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/DataConstraintModel.java +++ b/AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/DataConstraintModel.java @@ -27,7 +27,7 @@ public static final Type typeInt = new Type("Int", "int"); public static final Type typeFloat = new Type("Float", "float"); public static final Type typeDouble = new Type("Double", "double"); - public static final Type typeList = new Type("List", "List"); + public static final Type typeList = new Type("List", "List"); public static final Type typeBoolean = new Type("Bool", "boolean"); static {