From eef2e4f902a96fb71e4c6071373f68037403631d Mon Sep 17 00:00:00 2001
From: Nikolaus Huber <nikolaus.huber@uni-wuerzburg.de>
Date: Tue, 11 Jun 2013 13:15:04 +0000
Subject: [PATCH] git-svn-id:
 https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@12020
 9e42b895-fcda-4063-8a3b-11be15eb1bbd

---
 .../descartes/adaptation/TacticsHistory.java  |  5 ++-
 .../IPerformanceDataRepositoryHandler.java    |  1 -
 .../ObservationRepositoryHandler.java         | 33 +++++++++++--------
 .../ObservationRepositoryHelper.java          |  1 -
 .../PerformanceDataRepositoryHandler.java     | 17 +++-------
 5 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/TacticsHistory.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/TacticsHistory.java
index e67e8fe0..f3504788 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/TacticsHistory.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/TacticsHistory.java
@@ -38,7 +38,10 @@ public class TacticsHistory {
 	}
 
 	public WeightedTactic getLatestAppliedTactic() {
-		return wTactic.get(wTactic.size() - 1);
+	    if (wTactic.size() <= 0)
+	        return null;
+	    else
+	        return wTactic.get(wTactic.size() - 1);
 	}
 
 	public String getLatestResultId() {
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/IPerformanceDataRepositoryHandler.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/IPerformanceDataRepositoryHandler.java
index 7d0ca26e..0732aef2 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/IPerformanceDataRepositoryHandler.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/IPerformanceDataRepositoryHandler.java
@@ -10,7 +10,6 @@ public interface IPerformanceDataRepositoryHandler {
     
     public Impact getLatestImpact();
     public Impact getLatestImpact(WeightedTactic tactic);
-    public Impact getImpactAt(int position);
 
     public Result getCurrentSystemState();
 }
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 88f6b129..bcc3a048 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
@@ -1,15 +1,16 @@
 package edu.kit.ipd.descartes.adaptation.model.perfdatarepo;
 
 import static edu.kit.ipd.descartes.adaptation.model.perfdatarepo.PerfDataRepoConverter.convertObservableImpact;
-import static edu.kit.ipd.descartes.adaptation.model.perfdatarepo.PerfDataRepoConverter.convertResult;
 
 import org.apache.log4j.Logger;
 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.mm.adaptation.WeightedTactic;
 import edu.kit.ipd.descartes.perfdatarepo.Impact;
 import edu.kit.ipd.descartes.perfdatarepo.Result;
+import edu.kit.ipd.descartes.ql.models.repository.Observation;
 import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository;
 
 public class ObservationRepositoryHandler implements IPerformanceDataRepositoryHandler {
@@ -17,26 +18,18 @@ public class ObservationRepositoryHandler implements IPerformanceDataRepositoryH
     private static Logger logger = Logger.getLogger(ObservationRepositoryHandler.class);
     private AbstractEcoreModelLoader modelLoader = null;
     private ObservationRepository repository = null;
-    private int iteration = 0;
-    
+    private int iteration = 1;
+
     public ObservationRepositoryHandler() {
         modelLoader = ObservationRepositoryModelLoader.getInstance();
         logger.debug("ObservationRepositoryHandler loaded.");
     }
-    
+
     @Override
     public Impact getLatestImpact() {
         return convertObservableImpact(repository.getLatestImpact());
     }
 
-    @Override
-    public Impact getImpactAt(int position) {
-        iteration++; //This is a hack, see getCurrentSystemState()
-        if (position > repository.getImpacts().size() - 1)
-            return null;
-        return convertObservableImpact(repository.getImpacts().get(position));
-    }
-
     @Override
     public void load(String modelFileUri) {
         repository = (ObservationRepository) modelLoader.load(URI.createFileURI(modelFileUri));
@@ -44,14 +37,28 @@ public class ObservationRepositoryHandler implements IPerformanceDataRepositoryH
 
     @Override
     public Result getCurrentSystemState() {
-        return convertResult(repository.getObservations().get(iteration));
+        WeightedTactic latestTactic = TacticsHistory.getInstance().getLatestAppliedTactic();
+        Observation o = null;
+        
+        if (latestTactic == null) {
+            o = repository.getLatestObservation();
+        } else {
+            String expName = ObservationRepositoryHelper.deriveExperimentName(latestTactic, iteration);
+            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);
+        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 1b9ef678..d41553db 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
@@ -68,5 +68,4 @@ public class ObservationRepositoryHelper {
         }
         return null;
     }
-
 }
diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandler.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandler.java
index 10d227bb..4e6d972d 100644
--- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandler.java
+++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandler.java
@@ -42,23 +42,14 @@ public class PerformanceDataRepositoryHandler implements IPerformanceDataReposit
     }
 
     @Override
-    public Impact getImpactAt(int position) {
-        iteration++; //TODO This is a hack, see getCurrentSystemState()
-        EList<Impact> impactHistory = repository.getImpactHistory();
-        if (position > impactHistory.size() - 1)
-            return null;
-        return impactHistory.get(position);
+    public Impact getLatestImpact(WeightedTactic tactic) {
+        // TODO Auto-generated method stub
+        return null;
     }
 
     @Override
     public Result getCurrentSystemState() {
-        return repository.getResultHistory().get(iteration);
-    }
-
-    @Override
-    public Impact getLatestImpact(WeightedTactic tactic) {
-        // TODO Auto-generated method stub
-        return null;
+        return repository.getResultHistory().get(iteration++);
     }
 
 }
-- 
GitLab