From 71a6a8e96a9e18e29cd07142cf10f36d56323628 Mon Sep 17 00:00:00 2001
From: Nikolaus Huber <nikolaus.huber@uni-wuerzburg.de>
Date: Thu, 11 Apr 2013 09:38:53 +0000
Subject: [PATCH] migration implemented for container templates

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@11151 9e42b895-fcda-4063-8a3b-11be15eb1bbd
---
 .../adaptation/model/dmm/DmmModelActionHandler.java  | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

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 9a28ccd5..619403e4 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);
-- 
GitLab