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 e67e8fe09f91b432fd23de2ea17d1eddbae0c5bb..f35047888ac6cbad41d49b6fb9bc9b45f2a5379a 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 7d0ca26e16c17d290ec47431e6fa6dd463512223..0732aef2288fb1ffbb80b7cfec79e4ebf9040599 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 88f6b12943985aa614825f5a6ce6e4418162f6b2..bcc3a0489222f74f9eb6f7d86f55a295d6e035c4 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 1b9ef67871545340d03618e2fc744d917be28e4b..d41553db5e5590d73316152c9114d087bcc97a48 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 10d227bb67d97eee7f08a9a51a01e83d6edf23e2..4e6d972d95782a09da1be44386d0ec701df7c93b 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++); } }