diff --git a/jastadd-mquat-base/src/main/jastadd/mquat.parser b/jastadd-mquat-base/src/main/jastadd/mquat.parser index 497525d5b99fbb1e52c8d6b06ce5a6a08655f27a..7c882be6467a830e6c07e96722c898b46727564c 100644 --- a/jastadd-mquat-base/src/main/jastadd/mquat.parser +++ b/jastadd-mquat-base/src/main/jastadd/mquat.parser @@ -330,7 +330,7 @@ ResourceMapping resource_mapping = :} | NAME.i RIGHT_ARROW NAME.res LB_CURLY resource_mapping.rml* RB_CURLY {: - ResourceMapping result = new ResourceResourceMapping(null, rml, null); + ResourceMapping result = new ResourceResourceMapping(null, null, rml); mph.resourceMappingTerminals.put(result, new Tuple<>(i, res)); return result; :} diff --git a/jastadd-mquat-base/src/main/jastadd/solution/Helpers.jadd b/jastadd-mquat-base/src/main/jastadd/solution/Helpers.jadd index b0b8fa7389af4c5d64186c142acb33805788f752..37113b5231d025e5d5d1ffab39c214408a671060 100644 --- a/jastadd-mquat-base/src/main/jastadd/solution/Helpers.jadd +++ b/jastadd-mquat-base/src/main/jastadd/solution/Helpers.jadd @@ -38,9 +38,6 @@ aspect Helpers { ResourceClassMapping copy = new ResourceClassMapping(); copy.setInstance(this.getInstance()); copy.setResourceClass(this.getResourceClass()); - for (ResourceMapping subMapping : getResourceMappingList()) { - copy.addResourceMapping(subMapping.deepCopy()); - } return copy; } diff --git a/jastadd-mquat-base/src/main/jastadd/solution/Printing.jrag b/jastadd-mquat-base/src/main/jastadd/solution/Printing.jrag index f9eca61f9b2aa2d621d95dfa08790ad1515158fe..01d8cecd64ca047d7e70b39dc0e9760601654268 100644 --- a/jastadd-mquat-base/src/main/jastadd/solution/Printing.jrag +++ b/jastadd-mquat-base/src/main/jastadd/solution/Printing.jrag @@ -46,15 +46,7 @@ aspect Printing { MquatString result = new MquatString(settings, indentationLevel); result.append(getInstance() == null ? "<no instance>" : getInstance().name()) .append(" -> ").append((getResourceClass() == null) ? "<no resource class>" : "{" + getResourceClass().name() + "}"); - if (getNumResourceMapping() > 0) { - result.append(" {").lb().ind(); - for (ResourceMapping subMapping : getResourceMappingList()) { - result.append(subMapping.print(settings, indentationLevel)); - } - result.und().append("}").lb(); - } else { - result.lb(); - } + result.lb(); return result; } diff --git a/jastadd-mquat-base/src/main/jastadd/solution/Solution.ast b/jastadd-mquat-base/src/main/jastadd/solution/Solution.ast index c073ee95ce27c018c8318f40fdc193e9cc5ad58f..e2e84a7718bb310870cf9480f4f705e71f2f5261 100644 --- a/jastadd-mquat-base/src/main/jastadd/solution/Solution.ast +++ b/jastadd-mquat-base/src/main/jastadd/solution/Solution.ast @@ -1,6 +1,6 @@ Solution ::= <Model:Root> Assignment* ; Assignment ::= <TopLevel:boolean> <Request:Request> <Implementation:Implementation> ResourceMapping ComponentMapping* ; -abstract ResourceMapping ::= <Instance:Instance> ResourceMapping* ; -ResourceResourceMapping:ResourceMapping ::= <Resource:Resource> ; +abstract ResourceMapping ::= <Instance:Instance> ; +ResourceResourceMapping:ResourceMapping ::= <Resource:Resource> ResourceMapping* ; ResourceClassMapping:ResourceMapping ::= <ResourceClass:ResourceClass> ; ComponentMapping ::= <Instance:Instance> Assignment ; diff --git a/jastadd-mquat-base/src/main/jastadd/solution/Traversal.jrag b/jastadd-mquat-base/src/main/jastadd/solution/Traversal.jrag index bad9ede5296ae1c2fcdd9d7614aca1591f2dbc9f..4d409a3196b217ad66effecf55dd2407c249ec62 100644 --- a/jastadd-mquat-base/src/main/jastadd/solution/Traversal.jrag +++ b/jastadd-mquat-base/src/main/jastadd/solution/Traversal.jrag @@ -30,13 +30,8 @@ aspect Traversal { } } eq ResourceClassMapping.mappedResource(Instance instance) { - for (ResourceMapping subMapping : this.getResourceMappingList()) { - Resource result = subMapping.mappedResource(instance); - if (result != null) { - return result; - } - } - return null; + // TODO this method does not make sense. + throw new RuntimeException("A ResourceClassMapping does not have a mapped resource!"); } syn java.util.List<Assignment> Assignment.allAssignments() { diff --git a/jastadd-mquat-base/src/main/jastadd/solvers/Helpers.jadd b/jastadd-mquat-base/src/main/jastadd/solvers/Helpers.jadd index c5653a728f575d08c87b1f26f4807d96dde43695..2dd9c87b2e62a0fde75a683d4ca6e6c51ada2b9e 100644 --- a/jastadd-mquat-base/src/main/jastadd/solvers/Helpers.jadd +++ b/jastadd-mquat-base/src/main/jastadd/solvers/Helpers.jadd @@ -8,7 +8,7 @@ aspect Helpers { if (impl != null) { assignment.setImplementation(impl); - ResourceResourceMapping mapping = new ResourceResourceMapping(impl.getResourceRequirement().getInstance(0),new List<>(),resource); + ResourceResourceMapping mapping = new ResourceResourceMapping(impl.getResourceRequirement().getInstance(0),resource,new List<>()); Resource.populateResourceMapping(mapping,impl.getResourceRequirement(),resource); assignment.setResourceMapping(mapping); } @@ -23,7 +23,7 @@ aspect Helpers { if (impl != null) { assignment.setImplementation(impl); - ResourceClassMapping mapping = new ResourceClassMapping(impl.getResourceRequirement().getInstance(0),new List<>(),resourceClass); + ResourceClassMapping mapping = new ResourceClassMapping(impl.getResourceRequirement().getInstance(0), resourceClass); // Resource.populateResourceMapping(mapping,impl.getResourceRequirement(),resource); assignment.setResourceMapping(mapping); } diff --git a/jastadd-mquat-base/src/main/jastadd/solvers/SolverUtils.jadd b/jastadd-mquat-base/src/main/jastadd/solvers/SolverUtils.jadd index 9288e26634921f97b564c460c850479b9c66e32f..7e27e3056ab2215d7cba155eb004bddbbd977c80 100644 --- a/jastadd-mquat-base/src/main/jastadd/solvers/SolverUtils.jadd +++ b/jastadd-mquat-base/src/main/jastadd/solvers/SolverUtils.jadd @@ -10,7 +10,7 @@ aspect SolverUtils { Resource subResource = resource.getSubResource(currentResource); if (subResource.getType().getRef() == subRequirement.getResourceTypeRef().getRef()) { if (currentInstance == fittingResourceCount) { - ResourceResourceMapping newMapping = new ResourceResourceMapping(instance, new List<>(), subResource); + ResourceResourceMapping newMapping = new ResourceResourceMapping(instance, subResource, new List<>()); mapping.addResourceMapping(newMapping); populateResourceMapping(newMapping, subRequirement, subResource); fittingResourceCount++; diff --git a/jastadd-mquat-base/src/main/jastadd/solvers/simple/Construction.jadd b/jastadd-mquat-base/src/main/jastadd/solvers/simple/Construction.jadd index 4ab59ad36e4a9efddfc2956176d9686ee2764b44..90e3e8a608d49fd9b979372f52cd61997820a1c9 100644 --- a/jastadd-mquat-base/src/main/jastadd/solvers/simple/Construction.jadd +++ b/jastadd-mquat-base/src/main/jastadd/solvers/simple/Construction.jadd @@ -35,7 +35,7 @@ aspect Construction { } for (Instance instance : implementation.getResourceRequirement().getInstanceList()) { - assignment.setResourceMapping(new ResourceResourceMapping(instance, new List<>(), null)); + assignment.setResourceMapping(new ResourceResourceMapping(instance, null, new List<>())); } return assignment; diff --git a/jastadd-mquat-base/src/main/jastadd/solvers/simple/Iterator.jadd b/jastadd-mquat-base/src/main/jastadd/solvers/simple/Iterator.jadd index c70001e6a4275d481bf0510865e05778d6c249f9..dc243dc3f3f118f9091ed69a0c4c1966563c42ad 100644 --- a/jastadd-mquat-base/src/main/jastadd/solvers/simple/Iterator.jadd +++ b/jastadd-mquat-base/src/main/jastadd/solvers/simple/Iterator.jadd @@ -110,7 +110,7 @@ aspect Iterator { assignment.setImplementation(newImplementation); // the resourceRequirementAssignments change (even though just the keys are set.) - assignment.setResourceMapping(new ResourceResourceMapping(newImplementation.getResourceRequirement().getInstance(0), new List<>(), null)); + assignment.setResourceMapping(new ResourceResourceMapping(newImplementation.getResourceRequirement().getInstance(0), null, new List<>())); // the componentRequirementAssignments change! assignment.setComponentMappingList(new List<>()); diff --git a/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/generator/ScenarioGenerator.java b/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/generator/ScenarioGenerator.java index 85002991d7199563e1f46151da2934c6f9276b02..45d9ecd0734a3cb4061bf4a42d08244376aaf0f0 100644 --- a/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/generator/ScenarioGenerator.java +++ b/jastadd-mquat-base/src/main/java/de/tudresden/inf/st/mquat/generator/ScenarioGenerator.java @@ -568,7 +568,7 @@ public class ScenarioGenerator { // add a new resource to allocate the current component to Resource resource = createResource(model); model.getHardwareModel().addResource(resource); - currentAssignment.setResourceMapping(new ResourceResourceMapping(currentAssignment.getImplementation().getResourceRequirement().getInstance(0), new List<>(), resource)); + currentAssignment.setResourceMapping(new ResourceResourceMapping(currentAssignment.getImplementation().getResourceRequirement().getInstance(0), resource, new List<>())); // do the recursive assignment of dependent components for (ComponentRequirement componentRequirement : implementation.getComponentRequirementList()) { @@ -635,7 +635,7 @@ public class ScenarioGenerator { if (sub.getType().getRef().equals(cpuType)) { for (CurrentResourceValue value : sub.getCurrentResourceValueList()) { if (value.getPropertyRef().getRef().getName().getName().equals("frequency")) { - computeResourceMapping.addResourceMapping(new ResourceResourceMapping(cpuInstance[currentCpu], new List<>(), sub)); + computeResourceMapping.addResourceMapping(new ResourceResourceMapping(cpuInstance[currentCpu], sub, new List<>())); if (logger.isTraceEnabled()) { logger.trace("set frequency value from {} to {}", value.getValue().evalAsDouble(), frequencyValue[currentCpu]); } @@ -645,14 +645,14 @@ public class ScenarioGenerator { } } else if (sub.getType().getRef().equals(ramType)) { setTotalStorageValue(computeResourceMapping, totalRamValue, ramInstance, sub); - computeResourceMapping.addResourceMapping(new ResourceResourceMapping(ramInstance, new List<>(), sub)); + computeResourceMapping.addResourceMapping(new ResourceResourceMapping(ramInstance, sub, new List<>())); } else if (sub.getType().getRef().equals(diskType)) { setTotalStorageValue(computeResourceMapping, totalDiskValue, diskInstance, sub); - computeResourceMapping.addResourceMapping(new ResourceResourceMapping(diskInstance, new List<>(), sub)); + computeResourceMapping.addResourceMapping(new ResourceResourceMapping(diskInstance, sub, new List<>())); } else if (sub.getType().getRef().equals(networkType)) { for (CurrentResourceValue value : sub.getCurrentResourceValueList()) { if (value.getPropertyRef().getRef().getName().getName().equals("throughput")) { - computeResourceMapping.addResourceMapping(new ResourceResourceMapping(networkInstance, new List<>(), sub)); + computeResourceMapping.addResourceMapping(new ResourceResourceMapping(networkInstance, sub, new List<>())); if (logger.isTraceEnabled()) { logger.trace("set throughput value from {} to {}", value.getValue().evalAsDouble(), networkThroughputValue); } diff --git a/jastadd-mquat-solver-ilp/src/main/java/de/tudresden/inf/st/mquat/solving/ilp/AbstractILPSolver.java b/jastadd-mquat-solver-ilp/src/main/java/de/tudresden/inf/st/mquat/solving/ilp/AbstractILPSolver.java index b7d0e40b132c627aae0d3686573b74855dcb0741..327cdb80bd1ee30e67d6dbf5c6d34db13ea89095 100644 --- a/jastadd-mquat-solver-ilp/src/main/java/de/tudresden/inf/st/mquat/solving/ilp/AbstractILPSolver.java +++ b/jastadd-mquat-solver-ilp/src/main/java/de/tudresden/inf/st/mquat/solving/ilp/AbstractILPSolver.java @@ -117,7 +117,7 @@ public abstract class AbstractILPSolver implements BenchmarkableSolver { Assignment assignment = new Assignment(); assignment.setRequest(mappingVar.getRequest()); assignment.setImplementation(mappingVar.getImpl()); - assignment.setResourceMapping(new ResourceResourceMapping(assignment.getImplementation().getResourceRequirement().getInstance(0), new de.tudresden.inf.st.mquat.jastadd.model.List<>(), mappingVar.getResource())); + assignment.setResourceMapping(new ResourceResourceMapping(assignment.getImplementation().getResourceRequirement().getInstance(0), mappingVar.getResource(), new de.tudresden.inf.st.mquat.jastadd.model.List<>())); listOfAssignments.add(assignment); } } diff --git a/jastadd-mquat-solver/src/main/java/de/tudresden/inf/st/mquat/solving/SolverUtils.java b/jastadd-mquat-solver/src/main/java/de/tudresden/inf/st/mquat/solving/SolverUtils.java index 8e7d4eefa0d2146d676141dfefbeff7fa2e74134..c34cace34e2b8e9f8e0c371995d3b2855f91c796 100644 --- a/jastadd-mquat-solver/src/main/java/de/tudresden/inf/st/mquat/solving/SolverUtils.java +++ b/jastadd-mquat-solver/src/main/java/de/tudresden/inf/st/mquat/solving/SolverUtils.java @@ -21,7 +21,7 @@ public class SolverUtils { Implementation impl = assignment.getImplementation(); Resource resource = assignment.getResource(); - ResourceResourceMapping mapping = new ResourceResourceMapping(impl.getResourceRequirement().getInstance(0), new de.tudresden.inf.st.mquat.jastadd.model.List<>(), resource); + ResourceResourceMapping mapping = new ResourceResourceMapping(impl.getResourceRequirement().getInstance(0), resource, new de.tudresden.inf.st.mquat.jastadd.model.List<>()); Resource.populateResourceMapping(mapping, impl.getResourceRequirement(), resource); assignment.setResourceMapping(mapping); diff --git a/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java b/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java index 67a2a444b038aebb7d15aa81ec68c91c9d697662..b1e47887a115c5127f26013cc00b602e8edfcb8a 100644 --- a/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java +++ b/jastadd-mquat-solver/src/test/java/de/tudresden/inf/st/mquat/solving/HandwrittenTestSuite.java @@ -55,7 +55,7 @@ public abstract class HandwrittenTestSuite { Assignment expectedAssignment = new Assignment(); expectedAssignment.setRequest(model.getRequest(request)); expectedAssignment.setImplementation(model.resolveImplementation(impl).get()); - expectedAssignment.setResourceMapping(new ResourceResourceMapping(expectedAssignment.getImplementation().getResourceRequirement().getInstance(0), new List<>(), model.resolveResource(resource).get())); + expectedAssignment.setResourceMapping(new ResourceResourceMapping(expectedAssignment.getImplementation().getResourceRequirement().getInstance(0), model.resolveResource(resource).get(), new List<>())); // check if assignment matches (partly) one listed in the solution Iterator<Assignment> assignmentIterator = modelAndSolution.getSecondElement().assignmentIterator(); while (assignmentIterator.hasNext()) {