From d64646829610a5bdc1974b1693c8f17bee46914d Mon Sep 17 00:00:00 2001
From: Nikolaus Huber <nikolaus.huber@uni-wuerzburg.de>
Date: Wed, 12 Jun 2013 14:20:32 +0000
Subject: [PATCH] refactoring generation/derivation of experiment name factored
 out

git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@12056 9e42b895-fcda-4063-8a3b-11be15eb1bbd
---
 .../ObservationRepositoryHandler.java         | 10 +++---
 .../ObservationRepositoryHelper.java          | 21 +-----------
 .../util/BlueYonderExperimentTracker.java     | 32 +++++++++++++++++++
 3 files changed, 38 insertions(+), 25 deletions(-)
 create mode 100644 edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/util/BlueYonderExperimentTracker.java

diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java
index bcc3a048..473f6868 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java
@@ -7,6 +7,7 @@ import org.eclipse.emf.common.util.URI;
 
 import edu.kit.ipd.descartes.adaptation.TacticsHistory;
 import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader;
+import edu.kit.ipd.descartes.adaptation.util.BlueYonderExperimentTracker;
 import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
 import edu.kit.ipd.descartes.perfdatarepo.Impact;
 import edu.kit.ipd.descartes.perfdatarepo.Result;
@@ -15,10 +16,10 @@ import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
 
 public class ObservationRepositoryHandler implements IPerformanceDataRepositoryHandler {
 
+    private BlueYonderExperimentTracker tracker = new BlueYonderExperimentTracker();
     private static Logger logger = Logger.getLogger(ObservationRepositoryHandler.class);
     private AbstractEcoreModelLoader modelLoader = null;
     private ObservationRepository repository = null;
-    private int iteration = 1;
 
     public ObservationRepositoryHandler() {
         modelLoader = ObservationRepositoryModelLoader.getInstance();
@@ -43,22 +44,21 @@ public class ObservationRepositoryHandler implements IPerformanceDataRepositoryH
         if (latestTactic == null) {
             o = repository.getLatestObservation();
         } else {
-            String expName = ObservationRepositoryHelper.deriveExperimentName(latestTactic, iteration);
+            String expName = tracker.getCurrentExperimentName();
             logger.debug("Searching for result of " + expName);
             o = ObservationRepositoryHelper.getResultEndingWith(expName, repository);
         }
 
         return PerfDataRepoConverter.convertResult(o);
-        // return convertResult(repository.getObservations().get(iteration++));
     }
 
     @Override
     public Impact getLatestImpact(WeightedTactic tactic) {
-        String expName = ObservationRepositoryHelper.deriveExperimentName(tactic, iteration + 1);
+        tracker.track(tactic);
+        String expName = tracker.getCurrentExperimentName();
         logger.debug("Searching for impact of " + expName);
         Impact latestImpact = PerfDataRepoConverter.convertObservableImpact(ObservationRepositoryHelper
                 .searchImpactOfTactic(expName, repository));
-        iteration++;
         return latestImpact;
     }
 }
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHelper.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHelper.java
index d41553db..f81f7def 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHelper.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHelper.java
@@ -4,13 +4,12 @@ import java.util.List;
 
 import org.eclipse.emf.ecore.util.EcoreUtil;
 
-import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
 import edu.kit.ipd.descartes.ql.models.repository.ObservableImpact;
 import edu.kit.ipd.descartes.ql.models.repository.Observation;
 import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
 
 public class ObservationRepositoryHelper {
-
+    
     public static ObservableImpact searchImpactOfTactic(String name, ObservationRepository repository) {
         // Get correct result
         Observation o = getResultEndingWith(name, repository);
@@ -20,24 +19,6 @@ public class ObservationRepositoryHelper {
         return i;
     }
 
-    public static String deriveExperimentName(WeightedTactic tactic) {
-        return tactic.getName();
-    }
-
-    public static String deriveExperimentName(WeightedTactic tactic, int iteration) {
-
-        String execTacticName = tactic.getName();
-
-        if (execTacticName.contains("Low")) {
-            String desc1 = "Xreq-par-Yps-desc4-gw-desc3-db-desc2-predict-Z ps=$-req=5-size=50000";
-            return null;
-        } else if (execTacticName.contains("High")) {
-            String desc4 = "Xreq-par-Yps-desc4-gw-desc3-db-desc2-predict-Z ps=$-req=5-size=50000";
-            return desc4.replace("$", Integer.toString(iteration));
-        }
-        return null;
-    }
-
     public static ObservableImpact getImpactForObservation(Observation o, ObservationRepository repo) {
         if (o == null || repo == null)
             return null;
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/util/BlueYonderExperimentTracker.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/util/BlueYonderExperimentTracker.java
new file mode 100644
index 00000000..6d29bc93
--- /dev/null
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/util/BlueYonderExperimentTracker.java
@@ -0,0 +1,32 @@
+package edu.kit.ipd.descartes.adaptation.util;
+
+import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic;
+
+public class BlueYonderExperimentTracker {
+
+    private static final String RESULT_NAME = "Xreq-par-$1Yps-desc4-gw-desc3-db-desc2-predict-Z ps=$2-req=5-size=50000";
+    private int psOnDescOne = 0;
+    private int psOnDescFour = 1;
+
+    public String getCurrentExperimentName() {
+        String result = RESULT_NAME;
+        
+        if (psOnDescOne > 0)
+            result = RESULT_NAME.replace("$1", psOnDescOne + "ps-desc1-");
+        else
+            result = RESULT_NAME.replace("$1", "");
+        
+        result = result.replace("$2", Integer.toString(psOnDescFour));
+        return result;
+    }
+
+    public void track(WeightedTactic tactic) {
+        String execTacticName = tactic.getName();
+
+        if (execTacticName.contains("Low")) {
+            psOnDescOne++;
+        } else if (execTacticName.contains("High")) {
+            psOnDescFour++;
+        }
+    }
+}
-- 
GitLab