diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/DmmModelActionHandler.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/DmmModelActionHandler.java index 9a28ccd5d3f2e36220cbf556609c4f0cea0085af..619403e46786f584d87269c7106c06a2b9b0a0dc 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/DmmModelActionHandler.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/DmmModelActionHandler.java @@ -16,6 +16,7 @@ import edu.kit.ipd.descartes.adaptation.model.dmm.util.OclEvaluationHelper; import edu.kit.ipd.descartes.core.AdaptableEntity; import edu.kit.ipd.descartes.core.Entity; import edu.kit.ipd.descartes.mm.adaptation.AdaptationActionOperation; +import edu.kit.ipd.descartes.mm.adaptation.AdaptationScope; import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationPoint; import edu.kit.ipd.descartes.mm.adaptationpoints.ModelEntityConfigurationRange; import edu.kit.ipd.descartes.mm.adaptationpoints.ModelVariableConfigurationRange; @@ -111,7 +112,7 @@ public class DmmModelActionHandler implements IActionHandler { break; case MIGRATE: logger.debug("Executing MIGRATE operation"); - migrate(adaptableEntity, range); + migrate(adaptableEntity, range, operation.getAdaptationOperationScope()); break; default: throw new OperationNotPerformedException("Operation " + operation + " on adaptation point " @@ -164,9 +165,10 @@ public class DmmModelActionHandler implements IActionHandler { return invariant; } - private void migrate(Entity adaptableEntity, VariationType targets) { + private void migrate(Entity adaptableEntity, VariationType targets, AdaptationScope adaptationScope) { switch (adaptableEntity.eClass().getClassifierID()) { case ResourcelandscapePackage.RUNTIME_ENVIRONMENT: + logger.debug("Starting migration of a runtime environment referring to container template " + adaptableEntity.getName() + " (ID: " + adaptableEntity.getId() + ")"); /* * 1. Copy RE 2. Attach copy to a target specified in the Adaptation Point 3. Delete * origin @@ -192,8 +194,10 @@ public class DmmModelActionHandler implements IActionHandler { parent.getContains().remove(migratedEntity); break; case ContainerrepositoryPackage.CONTAINER_TEMPLATE: - logger.debug("Migration a container referring to container template " + adaptableEntity); - //TODO: Implement ContainerTemplate Migration + logger.debug("Starting migration of a container referring to container template " + adaptableEntity.getName() + " (ID: " + adaptableEntity.getId() + ")"); + ContainerTemplate ct = (ContainerTemplate) adaptableEntity; + Container c = DmmModelActionHelper.findSuitableContainer(ct, adaptationScope); + migrate(c, targets, adaptationScope); break; default: throw new IllegalArgumentException("No implemented migrate operation for " + adaptableEntity);