Skip to content
Snippets Groups Projects
Commit 1d286f40 authored by Johannes Mey's avatar Johannes Mey
Browse files

refactoring of attributes

parent 764205a4
No related branches found
No related tags found
No related merge requests found
......@@ -8,8 +8,4 @@ import java.util.HashMap;
import java.util.Collection;
import java.util.Collections;
import java.util.NoSuchElementException;
aspect X {
syn Set Clause.x() = null;
}
\ No newline at end of file
import java.util.Optional;
\ No newline at end of file
......@@ -28,123 +28,144 @@ aspect Navigation {
eq Clause.getExpression().containingClause() = this;
eq BinaryExpression.getLeft().containingClause() = containingClause();
eq BinaryExpression.getRight().containingClause() = containingClause();
eq CurrentResourceValue.getValue().containingClause() = null;
eq MetaParameterAssignment.getLiteralExpression().containingClause() = null;
eq CurrentResourceValue.getValue().containingClause() {
throw new java.util.NoSuchElementException();
}
eq MetaParameterAssignment.getLiteralExpression().containingClause() {
throw new java.util.NoSuchElementException();
}
//--- containingResourceRequirement ---//
// downwards search ==================================================================================================
inh ResourceRequirement Instance.containingResourceRequirement();
eq ComponentRequirement.getInstance().containingResourceRequirement() = null;
eq ResourceRequirement.getInstance().containingResourceRequirement() = this;
//--- referringResourceType ---//
inh ResourceType Instance.referringResourceType();
eq ComponentRequirement.getInstance().referringResourceType() = null;
eq ResourceRequirement.getInstance().referringResourceType() = getResourceTypeRef().getRef();
//--- referringComponent ---//
inh Component Instance.referringComponent();
eq ComponentRequirement.getInstance(int i).referringComponent() = getComponentRef().getRef();
eq ResourceRequirement.getInstance(int i).referringComponent() = null;
//--- findRequestByName ---//
// downwards search ==================================================================================================
// request
syn Request Root.findRequestByName(String name) {
syn Optional<Request> Root.resolveRequest(String name) {
for (Request request : getRequestList()) {
if (request.name().equals(name)) {
return request;
return Optional.of(request);
}
}
throw new java.util.NoSuchElementException(name);
return Optional.empty();
}
//--- findImplementationByName ---//
// property
syn Implementation Root.findImplementationByName(String name) {
for (Component component : getSoftwareModel().getComponentList()) {
for (Implementation impl : component.getImplementationList()) {
if (impl.name().equals(name)) {
return impl;
syn Optional<Property> ResourceType.resolveProperty(String name) {
for (Property property: getPropertyList()) {
if (property.name().equals(name)) {
return Optional.of(property);
}
}
for (PropertyRef ref: getPropertyRefList()) {
if (ref.getRef().name().equals(name)) {
return Optional.of(ref.getRef());
}
throw new java.util.NoSuchElementException(name);
}
return Optional.empty();
}
//--- findResourceByName ---//
syn Resource Root.findResourceByName(String name) {
for (Resource resource : getHardwareModel().getResourceList()) {
if (resource.findResourceByName(name) != null) {
return resource.findResourceByName(name);
syn Optional<Property> SoftwareModel.resolveProperty(String name) {
for (Property property: getPropertyList()) {
if (property.name().equals(name)) {
return Optional.of(property);
}
}
throw new java.util.NoSuchElementException(name);
return Optional.empty();
}
syn Resource Resource.findResourceByName(String name) {
if (name().equals(name)) {
return this;
syn Optional<Property> Component.resolveProperty(String name) {
for (Property property : getPropertyList()) {
if (property.name().equals(name)) {
return Optional.of(property);
}
for (Resource sub : getSubResourceList()) {
if (sub.findResourceByName(name) != null) {
return sub.findResourceByName(name);
}
for (PropertyRef ref : getPropertyRefList()) {
if (ref.name().equals(name)) {
return Optional.of(ref.getRef());
}
return null;
}
return resolvePropertyGeneral(name);
}
//--- findInstanceByName ---//
inh Optional<Property> Component.resolvePropertyGeneral(String name);
syn Instance Implementation.findInstanceByName(String name) {
for (ComponentRequirement cr : getComponentRequirementList()) {
for (Instance instance : cr.getInstanceList()) {
if (instance.name().equals(name)) {
return instance;
}
}
}
for (Instance instance : getResourceRequirement().getInstanceList()) {
if (instance.name().equals(name)) {
return instance;
eq SoftwareModel.getComponent().resolvePropertyGeneral(String name) {
for (Property property : getPropertyList()) {
if (property.name().equals(name)) {
return Optional.of(property);
}
}
throw new java.util.NoSuchElementException(name);
return Optional.empty();
}
syn Instance ResourceRequirement.findInstanceByName(String name) {
// search sub resource requirements
for (ResourceRequirement subRequirement : getResourceRequirementList()) {
for (Instance instance : subRequirement.getInstanceList()) {
if (instance.name().equals(name)) {
return instance;
// implementation
syn Optional<Implementation> Root.resolveImplementation(String name) {
for (Component component : getSoftwareModel().getComponentList()) {
for (Implementation impl : component.getImplementationList()) {
if (impl.name().equals(name)) {
return Optional.of(impl);
}
}
}
throw new java.util.NoSuchElementException(name);
return Optional.empty();
}
//--- findResourceTypeByName ---//
// resource
syn ResourceType HardwareModel.findResourceTypeByName(String name) {
for (ResourceType type: getResourceTypeList()) {
if (type.name().equals(name)) {
return type;
syn Optional<Resource> Root.resolveResource(String name) {
for (Resource resource : getHardwareModel().getResourceList()) {
if (resource.resolveResource(name).isPresent()) {
return resource.resolveResource(name);
}
}
throw new RuntimeException("Did not find resource type '" + name + "'");
return Optional.empty();
}
//--- findSubResourceByName ---//
syn ResourceType ResourceType.findSubResourceTypeByName(String name) {
for (ResourceType sub: getSubTypeList()) {
if (sub.name().equals(name)) {
return sub;
syn Optional<Resource> Resource.resolveResource(String name) {
if (name().equals(name)) {
return Optional.of(this);
}
for (Resource sub : getSubResourceList()) {
Optional<Resource> result = sub.resolveResource(name);
if (result.isPresent()) {
return result;
}
throw new RuntimeException("Did not find sub-resource type '" + name + "'");
}
return Optional.empty();
}
syn Resource Resource.findSubResourceByTypeName(String name) {
syn Optional<Resource> Resource.resolveResourceByTypeName(String name) {
for (Resource sub: getSubResourceList()) {
if (sub.getType().getRef().name().equals(name)) {
return sub;
return Optional.of(sub);
}
}
throw new RuntimeException("Did not find sub-resource '" + name + "'");
return Optional.empty();
}
syn java.util.List<Resource> Resource.findSubResourcesByTypeName(String name) {
java.util.List<Resource> result = new java.util.ArrayList<Resource>();
java.util.List<Resource> result = new java.util.ArrayList<>();
for (Resource sub: getSubResourceList()) {
if (sub.getType().getRef().name().equals(name)) {
result.add(sub);
......@@ -153,106 +174,81 @@ aspect Navigation {
return result;
}
// instance
//--- getPropertyByName ---//
syn Property ResourceType.findPropertyByName(String name) {
// TODO rename to resolveProperty
for (Property property: getPropertyList()) {
if (property.name().equals(name)) {
return property;
syn Optional<Instance> Implementation.resolveInstance(String name) {
for (ComponentRequirement cr : getComponentRequirementList()) {
for (Instance instance : cr.getInstanceList()) {
if (instance.name().equals(name)) {
return Optional.of(instance);
}
}
for (PropertyRef ref: getPropertyRefList()) {
if (ref.getRef().name().equals(name)) {
return ref.getRef();
}
for (Instance instance : getResourceRequirement().getInstanceList()) {
if (instance.name().equals(name)) {
return Optional.of(instance);
}
throw new RuntimeException("Did not find property '" + name + "'");
}
return Optional.empty();
}
syn Property SoftwareModel.findPropertyByName(String name) {
for (Property property: getPropertyList()) {
if (property.name().equals(name)) {
return property;
syn Optional<Instance> ResourceRequirement.resolveInstance(String name) {
// search sub resource requirements
for (ResourceRequirement subRequirement : getResourceRequirementList()) {
for (Instance instance : subRequirement.getInstanceList()) {
if (instance.name().equals(name)) {
return Optional.of(instance);
}
}
throw new RuntimeException("Did not find property '" + name + "'");
}
return Optional.empty();
}
//--- requirementClauses ---//
// resourceType
syn java.util.List<Clause> Implementation.requirementClauses() {
java.util.List<Clause> result = new java.util.ArrayList<>();
for (Clause clause : getClauseList()) {
if (clause.isRequiringClause()) {
result.add(clause);
syn Optional<ResourceType> HardwareModel.resolveResourceType(String name) {
for (ResourceType type: getResourceTypeList()) {
if (type.name().equals(name)) {
return Optional.of(type);
}
}
return result;
return Optional.empty();
}
//--- allImplementations ---//
syn java.util.List<Implementation> Root.allImplementations() {
java.util.List<Implementation> result = new java.util.ArrayList<>();
for (Component component : this.getSoftwareModel().getComponents()) {
for (Implementation implementation : component.getImplementations()) {
result.add(implementation);
syn Optional<ResourceType> ResourceType.resolveResourceType(String name) {
for (ResourceType sub: getSubTypeList()) {
if (sub.name().equals(name)) {
return Optional.of(sub);
}
}
return result;
return Optional.empty();
}
syn Clause Implementation.findFirstProvidingClause(Property property) {
// clause
syn Optional<Clause> Implementation.findFirstProvidingClause(Property property) {
for (Clause clause : getClauseList()) {
if (clause.getClauseType() != ClauseType.PROVIDING) continue;
Designator designator = clause.getDesignator();
if (designator.isSoftwareDesignator() && designator.asSoftwareDesignator().getPropertyRef().getRef().equals(property)) {
return clause;
}
}
return null;
}
/**
* Searches in all implementations of the required component for providing clauses.
*/
syn java.util.List<Tuple<Implementation, Clause>> Clause.providingClausesOfRequiredComponent() {
java.util.List<Tuple<Implementation, Clause>> result = new java.util.ArrayList<>();
if (getDesignator().isSoftwareDesignator()) {
SoftwareDesignator swDesignator = getDesignator().asSoftwareDesignator();
Property prop = swDesignator.getPropertyRef().getRef();
if (swDesignator.hasInstanceRef()) {
Component reqComponent = getDesignator().asSoftwareDesignator().getInstanceRef().getRef().referringComponent();
for (Implementation reqImpl : reqComponent.getImplementationList()) {
// TODO maybe implement findFirstProvidingClause for Implementation
Clause providingClause = reqImpl.findFirstProvidingClause(prop);
if (providingClause != null) { result.add(new Tuple<>(reqImpl, providingClause)); }
return Optional.of(clause);
}
}
return Optional.empty();
}
return result;
}
// name resolution ===================================================================================================
//--- resolveQualifiedName ---//
// designator
inh Designator Clause.resolveQualifiedName(QualifiedName qn);
eq Request.getConstraint().resolveQualifiedName(QualifiedName qn) {
// this designator refers either to a MetaParameter ...
MetaParameter meta = resolveMetaParameter(qn.getName(0).getName());
if (meta != null) {
return new MetaParameterDesignator(meta.createRef());
Optional<MetaParameter> meta = resolveMetaParameter(qn.getName(0).getName());
if (meta.isPresent()) {
return new MetaParameterDesignator(meta.get().createRef());
}
// ... or to a property of the target component
return new SoftwareDesignator(new Opt<>(), getTarget().getRef().resolveProperty(qn.getName(0).getName()).createRef());
return new SoftwareDesignator(new Opt<>(), getTarget().getRef().resolveProperty(qn.getName(0).getName()).get().createRef());
}
eq Implementation.getClause().resolveQualifiedName(QualifiedName qn) = resolveQualifiedName(qn);
......@@ -260,14 +256,14 @@ aspect Navigation {
syn Designator Implementation.resolveQualifiedName(QualifiedName qn) {
if (qn.getNumName() == 1) {
// we have a meta parameter or something in the current context
MetaParameter meta=resolveMetaParameter(qn.getName(0).getName());
if(meta!=null) {
return new MetaParameterDesignator(meta.createRef());
Optional<MetaParameter> meta = resolveMetaParameter(qn.getName(0).getName());
if(meta.isPresent()) {
return new MetaParameterDesignator(meta.get().createRef());
}
// else, interpret the property as a local one of the current component
// this might cause an exception of the property can not be resolved
Property property=containingComponent().resolveProperty(qn.getName(0).getName());
return new SoftwareDesignator(new Opt<>(),property.createRef());
Optional<Property> property = containingComponent().resolveProperty(qn.getName(0).getName());
return new SoftwareDesignator(new Opt<>(),property.get().createRef());
} else {
// first, check if it is a component requirement
......@@ -281,7 +277,7 @@ aspect Navigation {
// now resolve property of the type of the instance. we know, the instance refers to a component.
Component component=instance.referringComponent();
return new SoftwareDesignator(new Opt<>(instance.createRef()),
component.resolveProperty(propertyName).createRef());
component.resolveProperty(propertyName).get().createRef());
}
}
}
......@@ -305,120 +301,77 @@ aspect Navigation {
}
}
// now, currentRequirement refers to the final resource type
return new PropertyResourceDesignator(currentInstance.createRef(), currentRequirement.getResourceTypeRef().getRef().findPropertyByName(qn.getName(qn.getNumName()-1).getName()).createRef());
}
}
//--- resolveProperty ---//
syn Property Component.resolveProperty(String name) {
for (Property p : getPropertyList()) {
if (p.name().equals(name)) {
return p;
}
}
for (PropertyRef ref : getPropertyRefList()) {
if (ref.name().equals(name)) {
return ref.getRef();
}
return new PropertyResourceDesignator(currentInstance.createRef(), currentRequirement.getResourceTypeRef().getRef().resolveProperty(qn.getName(qn.getNumName()-1).getName()).get().createRef());
}
// TODO resolvePropertyGeneral should actually not be needed anymore (all properties must be def'ed in Component)
return resolvePropertyGeneral(name);
}
//--- resolvePropertyGeneral ---//
inh Property Component.resolvePropertyGeneral(String name);
eq SoftwareModel.getComponent().resolvePropertyGeneral(String name) {
for (Property p : getPropertyList()) {
if (p.name().equals(name)) {
return p;
}
}
throw new RuntimeException("Property not found: " + name);
}
// metaparameter
//--- resolveMetaParameter ---//
syn MetaParameter SoftwareModel.resolveMetaParameter(String name) {
syn Optional<MetaParameter> SoftwareModel.resolveMetaParameter(String name) {
for (MetaParameter meta : getMetaParameterList()) {
if (meta.name().equals(name)) {
return meta;
return Optional.of(meta);
}
}
// TODO maybe add a note here for unsuccessful resolving. or throw something?
return null;
return Optional.empty();
}
inh MetaParameter Component.resolveMetaParameter(String name);
inh Optional<MetaParameter> Component.resolveMetaParameter(String name);
eq SoftwareModel.getComponent().resolveMetaParameter(String name) = resolveMetaParameter(name);
inh MetaParameter Implementation.resolveMetaParameter(String name);
inh Optional<MetaParameter> Implementation.resolveMetaParameter(String name);
eq Component.getImplementation().resolveMetaParameter(String name) = resolveMetaParameter(name);
inh MetaParameter Request.resolveMetaParameter(String name);
inh Optional<MetaParameter> Request.resolveMetaParameter(String name);
eq Root.getRequest().resolveMetaParameter(String name) = getSoftwareModel().resolveMetaParameter(name);
//--- getRequiringClauseInstance ---//
// collections =======================================================================================================
syn Instance Implementation.getRequiringClauseInstance(ResourceType type, String propertyName) {
//--- requiy-crementClauses ---//
syn java.util.List<Clause> Implementation.requirementClauses() {
java.util.List<Clause> result = new java.util.ArrayList<>();
for (Clause clause : getClauseList()) {
Designator designator = clause.getDesignator();
if (clause.getClauseType() == ClauseType.REQUIRING
&& designator.isPropertyResourceDesignator()
&& designator.asPropertyResourceDesignator().getInstanceRef().getRef().referringResourceType().equals(type)
&& designator.simpleName().equals(propertyName)) {
return designator.asPropertyResourceDesignator().getInstanceRef().getRef();
if (clause.isRequiringClause()) {
result.add(clause);
}
}
return null;
return result;
}
syn Instance Implementation.getRequiringClauseInstance(ResourceType type, String propertyName, int index) {
int i = 0;
for (Clause clause: getClauseList()) {
Designator designator = clause.getDesignator();
if (clause.getClauseType() == ClauseType.REQUIRING
&& designator.isPropertyResourceDesignator()
&& designator.asPropertyResourceDesignator().getInstanceRef().getRef().referringResourceType().equals(type)
&& designator.simpleName().equals(propertyName)) {
if (i==index) {
return designator.asPropertyResourceDesignator().getInstanceRef().getRef();
} else {
i++;
}
syn java.util.List<Implementation> Root.allImplementations() {
java.util.List<Implementation> result = new java.util.ArrayList<>();
for (Component component : this.getSoftwareModel().getComponents()) {
for (Implementation implementation : component.getImplementations()) {
result.add(implementation);
}
}
return null;
return result;
}
//--- containingResourceRequirement ---//
inh ResourceRequirement Instance.containingResourceRequirement();
eq ComponentRequirement.getInstance().containingResourceRequirement() {
throw new RuntimeException("There is no resource requirement for an instance of a component.");
/**
* Searches in all implementations of the required component for providing clauses.
*/
syn java.util.List<Tuple<Implementation, Clause>> Clause.providingClausesOfRequiredComponent() {
java.util.List<Tuple<Implementation, Clause>> result = new java.util.ArrayList<>();
if (getDesignator().isSoftwareDesignator()) {
SoftwareDesignator swDesignator = getDesignator().asSoftwareDesignator();
Property prop = swDesignator.getPropertyRef().getRef();
if (swDesignator.hasInstanceRef()) {
Component reqComponent = getDesignator().asSoftwareDesignator().getInstanceRef().getRef().referringComponent();
for (Implementation reqImpl : reqComponent.getImplementationList()) {
// TODO maybe implement findFirstProvidingClause for Implementation
Optional<Clause> providingClause = reqImpl.findFirstProvidingClause(prop);
if (providingClause.isPresent()) { result.add(new Tuple<>(reqImpl, providingClause.get())); }
}
eq ResourceRequirement.getInstance().containingResourceRequirement() = this;
//--- referringResourceType ---//
inh ResourceType Instance.referringResourceType();
eq ComponentRequirement.getInstance().referringResourceType() {
throw new RuntimeException("There is no resource for an instance of a component.");
}
eq ResourceRequirement.getInstance().referringResourceType() = getResourceTypeRef().getRef();
//--- referringComponent ---//
inh Component Instance.referringComponent();
eq ComponentRequirement.getInstance(int i).referringComponent() = getComponentRef().getRef();
eq ResourceRequirement.getInstance(int i).referringComponent() = null;
}
return result;
}
syn java.util.Collection<Component> Implementation.getRequiredComponents() {
java.util.List<Component> result = new java.util.ArrayList();
......@@ -522,5 +475,26 @@ aspect Navigation {
throw new RuntimeException("Did not find a requiring clause for designator '" + propertyName + "'");
}
syn Instance Implementation.getRequiringClauseInstance(ResourceType type, String propertyName) {
return getRequiringClauseInstance(type, propertyName, 0);
}
syn Instance Implementation.getRequiringClauseInstance(ResourceType type, String propertyName, int index) {
int i = 0;
for (Clause clause: getClauseList()) {
Designator designator = clause.getDesignator();
if (clause.getClauseType() == ClauseType.REQUIRING
&& designator.isPropertyResourceDesignator()
&& designator.asPropertyResourceDesignator().getInstanceRef().getRef().referringResourceType().equals(type)
&& designator.simpleName().equals(propertyName)) {
if (i==index) {
return designator.asPropertyResourceDesignator().getInstanceRef().getRef();
} else {
i++;
}
}
}
return null;
}
}
......@@ -72,9 +72,9 @@ aspect ILP {
IlpTerm term = new IlpTerm();
IlpVariable var = info.getIlpVariable(request, impl, resource);
term.setRef(var);
Clause providingObjectiveClause = impl.findFirstProvidingClause(getObjective().getPropertyRef().getRef());
if (providingObjectiveClause != null) {
term.setValue(providingObjectiveClause.evalUsing(request, resource));
Optional<Clause> providingObjectiveClause = impl.findFirstProvidingClause(getObjective().getPropertyRef().getRef());
if (providingObjectiveClause.isPresent()) {
term.setValue(providingObjectiveClause.get().evalUsing(request, resource));
} else {
term.setValue(0);
}
......@@ -150,10 +150,10 @@ aspect ILP {
Property requiredProperty = requiredClause.getDesignator().asSoftwareDesignator().getPropertyRef().getRef();
for(Implementation impl : request.getTarget().getRef().getImplementationList()) {
for (Resource resource : this.getHardwareModel().getResources()) {
Clause providingClause = impl.findFirstProvidingClause(requiredProperty);
if (providingClause != null) {
Optional<Clause> providingClause = impl.findFirstProvidingClause(requiredProperty);
if (providingClause.isPresent()) {
IlpVariable var = info.getIlpVariable(request, impl, resource);
reqLhs.addIlpTerm(new IlpTerm(providingClause.evalUsing(request, resource), var));
reqLhs.addIlpTerm(new IlpTerm(providingClause.get().evalUsing(request, resource), var));
}
}
}
......
......@@ -237,12 +237,12 @@ public class ScenarioGenerator {
ResourceType diskType = hardwareModel.diskType();
ResourceType networkType = hardwareModel.networkType();
Property frequency = cpuType.findPropertyByName("frequency");
Property load = cpuType.findPropertyByName("load");
Property total = ramType.findPropertyByName("total");
Property free = ramType.findPropertyByName("free");
Property throughput = networkType.findPropertyByName("throughput");
Property latency = networkType.findPropertyByName("latency");
Property frequency = cpuType.resolveProperty("frequency").get();
Property load = cpuType.resolveProperty("load").get();
Property total = ramType.resolveProperty("total").get();
Property free = ramType.resolveProperty("free").get();
Property throughput = networkType.resolveProperty("throughput").get();
Property latency = networkType.resolveProperty("latency").get();
// create a new resource
Resource resource = new Resource(new Name("resource" + String.valueOf(i)), type.createRef(), new List<>(), new List<>());
......@@ -288,22 +288,16 @@ public class ScenarioGenerator {
model.getSoftwareModel().addComponent(component);
// get the ResourceTypes we need
ResourceType cpu = model.getHardwareModel().findResourceTypeByName("ComputeNode").findSubResourceTypeByName("CPU");
ResourceType ram = model.getHardwareModel().findResourceTypeByName("ComputeNode").findSubResourceTypeByName("RAM");
ResourceType disk = model.getHardwareModel().findResourceTypeByName("ComputeNode").findSubResourceTypeByName("DISK");
ResourceType network = model.getHardwareModel().findResourceTypeByName("ComputeNode").findSubResourceTypeByName("NETWORK");
// get the properties we need
assert cpu != null;
assert ram != null;
assert network != null;
assert disk != null;
Property frequency = cpu.findPropertyByName("frequency");
Property total = ram.findPropertyByName("total");
Property throughput = network.findPropertyByName("throughput");
Property quality = model.getSoftwareModel().findPropertyByName("quality");
Property energy = model.getSoftwareModel().findPropertyByName("energy");
ResourceType cpu = model.getHardwareModel().resolveResourceType("ComputeNode").get().resolveResourceType("CPU").get();
ResourceType ram = model.getHardwareModel().resolveResourceType("ComputeNode").get().resolveResourceType("RAM").get();
ResourceType disk = model.getHardwareModel().resolveResourceType("ComputeNode").get().resolveResourceType("DISK").get();
ResourceType network = model.getHardwareModel().resolveResourceType("ComputeNode").get().resolveResourceType("NETWORK").get();
Property frequency = cpu.resolveProperty("frequency").get();
Property total = ram.resolveProperty("total").get();
Property throughput = network.resolveProperty("throughput").get();
Property quality = model.getSoftwareModel().resolveProperty("quality").get();
Property energy = model.getSoftwareModel().resolveProperty("energy").get();
// Property flops = model.getHardwareModel().getResourceType(0).getPropertyByName("flops");
component.addPropertyRef(quality.createRef());
......@@ -557,10 +551,10 @@ public class ScenarioGenerator {
Root model = solution.getModel();
ResourceType computeType = model.getHardwareModel().getResourceType(0);
ResourceType cpuType = model.getHardwareModel().getResourceType(0).findSubResourceTypeByName("CPU");
ResourceType ramType = model.getHardwareModel().getResourceType(0).findSubResourceTypeByName("RAM");
ResourceType diskType = model.getHardwareModel().getResourceType(0).findSubResourceTypeByName("DISK");
ResourceType networkType = model.getHardwareModel().getResourceType(0).findSubResourceTypeByName("NETWORK");
ResourceType cpuType = model.getHardwareModel().getResourceType(0).resolveResourceType("CPU").get();
ResourceType ramType = model.getHardwareModel().getResourceType(0).resolveResourceType("RAM").get();
ResourceType diskType = model.getHardwareModel().getResourceType(0).resolveResourceType("DISK").get();
ResourceType networkType = model.getHardwareModel().getResourceType(0).resolveResourceType("NETWORK").get();
Assignment currentAssignment = new Assignment();
currentAssignment.setTopLevel(isTopLevel);
......
......@@ -75,11 +75,11 @@ public class MquatParserHelper {
Tuple<String, String> tuple = resourceMappingTerminals.get(rm);
// first name in tuple is instance name
// resolve instance using implementation of assignment
Instance instance = impl.findInstanceByName(tuple.getFirstElement());
Instance instance = impl.resolveInstance(tuple.getFirstElement()).get();
rm.setInstance(instance);
// second name in tuple is resource name
// resolve top-level resource using model
Resource container = impl.root().findResourceByName(tuple.getSecondElement());
Resource container = impl.root().resolveResource(tuple.getSecondElement()).get();
rm.setResource(container);
ResourceRequirement rr = instance.containingResourceRequirement();
for (ResourceMapping subResMapping : rm.getResourceMappingList()) {
......@@ -91,10 +91,10 @@ public class MquatParserHelper {
// resolve sub-resource using the top-level resource, and the corresponding resource requirement
Tuple<String, String> tuple = resourceMappingTerminals.get(rm);
// first name in tuple is instance name
Instance instance = rr.findInstanceByName(tuple.getFirstElement());
Instance instance = rr.resolveInstance(tuple.getFirstElement()).get();
rm.setInstance(instance);
// second name in tuple is resource name
Resource resource = container.findResourceByName(tuple.getSecondElement());
Resource resource = container.resolveResource(tuple.getSecondElement()).get();
rm.setResource(resource);
if (rm.getNumResourceMapping() > 0) {
ResourceRequirement subResReq = instance.containingResourceRequirement();
......@@ -116,10 +116,10 @@ public class MquatParserHelper {
for (Assignment assignment : unfinishedSolution.getAssignmentList()) {
Tuple<String, String> value = assignmentTerminals.get(assignment);
// first name in value is request name
Request request = model.findRequestByName(value.getFirstElement());
Request request = model.resolveRequest(value.getFirstElement()).get();
assignment.setRequest(request);
// second name in value is impl name
Implementation impl = model.findImplementationByName(value.getSecondElement());
Implementation impl = model.resolveImplementation(value.getSecondElement()).get();
assignment.setImplementation(impl);
resolveResourceMappingOf(assignment);
}
......@@ -156,9 +156,9 @@ public class MquatParserHelper {
ComponentMapping cm = assignment.containingComponentMapping();
// to find correct instance, we need to start at implementation of parentAssignment
parentAssignment = cm.containingAssignment();
cm.setInstance(parentAssignment.getImplementation().findInstanceByName(entry.getValue().getFirstElement()));
cm.setInstance(parentAssignment.getImplementation().resolveInstance(entry.getValue().getFirstElement()).get());
// second name in value is name of impl
Implementation impl = model.findImplementationByName(entry.getValue().getSecondElement());
Implementation impl = model.resolveImplementation(entry.getValue().getSecondElement()).get();
assignment.setImplementation(impl);
resolveResourceMappingOf(assignment);
}
......
......@@ -52,8 +52,8 @@ public abstract class HandwrittenTestSuite {
Root model = modelAndSolution.getFirstElement();
Assignment expectedAssignment = new Assignment();
expectedAssignment.setRequest(model.getRequest(request));
expectedAssignment.setImplementation(model.findImplementationByName(impl));
expectedAssignment.setResourceMapping(new ResourceMapping(expectedAssignment.getImplementation().getResourceRequirement().getInstance(0), model.findResourceByName(resource), new List<>()));
expectedAssignment.setImplementation(model.resolveImplementation(impl).get());
expectedAssignment.setResourceMapping(new ResourceMapping(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()) {
......@@ -70,7 +70,7 @@ public abstract class HandwrittenTestSuite {
private void assertComponentRequirement(Assignment requiringAssignment,
String instanceName, Assignment expectedProvidingAssignment) {
Instance instance = requiringAssignment.getImplementation().findInstanceByName(instanceName);
Instance instance = requiringAssignment.getImplementation().resolveInstance(instanceName).get();
Assignment actualProvidingAssignment = requiringAssignment.mappedAssignment(instance);
Assert.assertEquals(String.format("Not matching assignment for %s", instanceName),
expectedProvidingAssignment, actualProvidingAssignment);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment