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;