diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/Resource.java b/AlgebraicDataflowArchitectureModel/src/simulator/Resource.java index f3bd6d9..c221ec0 100644 --- a/AlgebraicDataflowArchitectureModel/src/simulator/Resource.java +++ b/AlgebraicDataflowArchitectureModel/src/simulator/Resource.java @@ -20,10 +20,12 @@ public Resource(ResourceHierarchy resourceHierarchy) { this.resourceHierarchy = resourceHierarchy; - if (resourceHierarchy.getChildren().size() > 0) { - ResourceHierarchy childRes = resourceHierarchy.getChildren().iterator().next(); - if (childRes.getNumParameters() > 0) { - Type resType = resourceHierarchy.getResourceStateType(); + Type resType = resourceHierarchy.getResourceStateType(); + if (resourceHierarchy.getChildren().size() > 0 + || DataConstraintModel.typeList.isAncestorOf(resType) + || DataConstraintModel.typeMap.isAncestorOf(resType) + || DataConstraintModel.typeJson.isAncestorOf(resType)) { + if (resourceHierarchy.getChildren().size() <= 1) { if (DataConstraintModel.typeList.isAncestorOf(resType)) { // List resource state = new ListResourceState(); @@ -36,7 +38,7 @@ state = new JsonResourceState(); children = new ArrayList<>(); for (ResourceHierarchy child: resourceHierarchy.getChildren()) { - Resource cRes = new Resource(child); + Resource cRes = new Resource(child, this); ((JsonResourceState) state).addChildState(child.getResourceName(), cRes.getState()); children.add(cRes); } @@ -46,6 +48,11 @@ } } + public Resource(ResourceHierarchy resourceHierarchy, Resource parent) { + this(resourceHierarchy); + this.parent = parent; + } + public Resource(ResourceHierarchy resourceHierarchy, Resource parent, ResourceState state) { this.resourceHierarchy = resourceHierarchy; this.parent = parent; diff --git a/AlgebraicDataflowArchitectureModel/src/simulator/states/PrimitiveResourceState.java b/AlgebraicDataflowArchitectureModel/src/simulator/states/PrimitiveResourceState.java index 6ad1362..d5aba63 100644 --- a/AlgebraicDataflowArchitectureModel/src/simulator/states/PrimitiveResourceState.java +++ b/AlgebraicDataflowArchitectureModel/src/simulator/states/PrimitiveResourceState.java @@ -1,6 +1,7 @@ package simulator.states; import models.algebra.Constant; +import models.dataConstraintModel.DataConstraintModel; public class PrimitiveResourceState extends ResourceState { private Constant value; @@ -11,6 +12,7 @@ @Override public Constant getValue() { + if (value == null) return new Constant(DataConstraintModel.null_); return value; }