From 7ee4883783542aceaf930d0cf263b1cbc4846a45 Mon Sep 17 00:00:00 2001 From: Nikolaus Huber <nikolaus.huber@uni-wuerzburg.de> Date: Tue, 14 May 2013 15:11:04 +0000 Subject: [PATCH] - renaming of model loader - added PDRModelHandlerFactory - added PDR Handlers git-svn-id: https://se1.informatik.uni-wuerzburg.de/usvn/svn/code/code/DMM/trunk@11553 9e42b895-fcda-4063-8a3b-11be15eb1bbd --- .../adaptation/AdaptationControl.java | 46 ++++++++++--------- ...java => AdaptationProcessModelLoader.java} | 12 ++--- .../model/dmm/DmmModelActionHandler.java | 4 +- .../IPerformanceDataRepositoryHandler.java | 12 +++++ .../ObservationRepositoryHandler.java | 38 +++++++++++++++ .../ObservationRepositoryModelLoader.java | 15 ++++++ .../PerfDataRepoHelper.java | 2 +- .../PerformanceDataRepositoryHandler.java | 37 +++++++++++++++ ...rformanceDataRepositoryHandlerFactory.java | 18 ++++++++ ...PerformanceDataRepositoryModelLoader.java} | 14 +++--- 10 files changed, 160 insertions(+), 38 deletions(-) rename edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/{AdaptationProcessModelManager.java => AdaptationProcessModelLoader.java} (90%) create mode 100644 edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/IPerformanceDataRepositoryHandler.java create mode 100644 edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java create mode 100644 edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryModelLoader.java rename edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/{dmm/util => perfdatarepo}/PerfDataRepoHelper.java (96%) create mode 100644 edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandler.java create mode 100644 edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandlerFactory.java rename edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/{dmm/PerformanceDataRepositoryModelManager.java => perfdatarepo/PerformanceDataRepositoryModelLoader.java} (78%) diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/AdaptationControl.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/AdaptationControl.java index 87ac5dc7..c17c602a 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/AdaptationControl.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/AdaptationControl.java @@ -12,17 +12,16 @@ import org.eclipse.emf.common.util.URI; import edu.kit.ipd.descartes.adaptation.evaluation.WeightingFunctionEvaluator; import edu.kit.ipd.descartes.adaptation.model.analysis.IModelAnalyzer; import edu.kit.ipd.descartes.adaptation.model.analysis.pcm.PcmModelAnalyzer; -import edu.kit.ipd.descartes.adaptation.model.dmm.AdaptationProcessModelManager; +import edu.kit.ipd.descartes.adaptation.model.dmm.AdaptationProcessModelLoader; import edu.kit.ipd.descartes.adaptation.model.dmm.DmmModelActionHandler; -import edu.kit.ipd.descartes.adaptation.model.dmm.PerformanceDataRepositoryModelManager; -import edu.kit.ipd.descartes.adaptation.model.dmm.util.PerfDataRepoHelper; +import edu.kit.ipd.descartes.adaptation.model.perfdatarepo.IPerformanceDataRepositoryHandler; +import edu.kit.ipd.descartes.adaptation.model.perfdatarepo.PerformanceDataRepositoryHandlerFactory; import edu.kit.ipd.descartes.mm.adaptation.AdaptationFactory; import edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess; import edu.kit.ipd.descartes.mm.adaptation.Event; import edu.kit.ipd.descartes.mm.adaptation.Strategy; import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic; import edu.kit.ipd.descartes.perfdatarepo.Impact; -import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository; public class AdaptationControl { @@ -51,7 +50,8 @@ public class AdaptationControl { private static final String DEFAULT_PROP_FILE_PATH = "./default.properties"; private static final String PROP_ADAPTATION_PROCESS_XMI_FILE_PATH_NAME = "adaptationProcessModel"; - private static final String PROP_PERF_DATA_REPO_XMI_FILE_PATH_NAME = "performanceDataRepositoryModel"; + private static final String PROP_PERF_DATA_REPO_XMI_FILE_PATH_NAME = "perfdatarepo.instance"; + private static final String PROP_PERF_DATA_REPO_METAMODEL_TYPE = "perfdatarepo.metamodel"; private static final String PROP_ADAPTATION_PROCESS_NAME = "processName"; private static final String PROP_MAX_ITERATIONS = "maxIterations"; private static final String PROP_TRIGGERING_EVENT_TYPE = "eventType"; @@ -60,13 +60,12 @@ public class AdaptationControl { private String adaptationProcessXmiFilePath = null; private String performanceDataRepoXmiFilePath = null; + private String pdrMetamodelType = null; private String eventType = null; - private AdaptationProcessModelManager adaptationProcessModelManager = AdaptationProcessModelManager.getInstance(); - private PerformanceDataRepositoryModelManager perfDataModelManager = PerformanceDataRepositoryModelManager - .getInstance(); + private AdaptationProcessModelLoader adaptationProcessModelLoader = AdaptationProcessModelLoader.getInstance(); + private IPerformanceDataRepositoryHandler handler; private AdaptationProcess adaptationProcess = null; - private PerformanceDataRepository perfDataRepo = null; private TacticExecutor executor = null; private IModelAnalyzer modelAnalyzer = null; private WeightingFunctionEvaluator evaluator = null; @@ -93,7 +92,7 @@ public class AdaptationControl { } public void doAdaptation(Event triggeringEvent) { - + // Determine the suitable strategy via the objective // which is currently implemented as the first element Strategy currentStrategy = AdaptationControl.findTriggeredStrategy(adaptationProcess, triggeringEvent); @@ -102,40 +101,41 @@ public class AdaptationControl { abort(); return; } - + while (!isProblemSolved() && iteration < maxIterations) { // Execute the strategie's tactic with the currently highest weight WeightedTactic currentTactic = currentStrategy.getTacticWithHighestWeight(); - + applyTactic(currentTactic); analyzeModel(); processResults(currentTactic); evaluator.evaluate(currentTactic); - + // save results try { logger.debug("Saving tactics evaluation results..."); - adaptationProcessModelManager.saveAll(); + adaptationProcessModelLoader.saveAll(); } catch (IOException e) { logger.error("Error while persisting evaluation results.", e); } - + iteration++; } - + printLogInformation(); - + } public void init() { try { // load properties file loadProperties(DEFAULT_PROP_FILE_PATH); - + // load required models - adaptationProcess = adaptationProcessModelManager.load(URI.createFileURI(adaptationProcessXmiFilePath)); - perfDataRepo = perfDataModelManager.load(URI.createFileURI(performanceDataRepoXmiFilePath)); - + adaptationProcess = adaptationProcessModelLoader.load(URI.createFileURI(adaptationProcessXmiFilePath)); + handler = PerformanceDataRepositoryHandlerFactory.createHandler(pdrMetamodelType); + handler.load(performanceDataRepoXmiFilePath); + // set handlers executor = new TacticExecutor(new DmmModelActionHandler()); modelAnalyzer = new PcmModelAnalyzer(); @@ -167,6 +167,7 @@ public class AdaptationControl { FileInputStream propFile = new FileInputStream(propertiesFilePath); properties.load(propFile); logger.debug("Loaded properties of " + properties.getProperty(PROP_ADAPTATION_PROCESS_NAME)); + pdrMetamodelType = properties.getProperty(PROP_PERF_DATA_REPO_METAMODEL_TYPE); adaptationProcessXmiFilePath = properties.getProperty(PROP_ADAPTATION_PROCESS_XMI_FILE_PATH_NAME); performanceDataRepoXmiFilePath = properties.getProperty(PROP_PERF_DATA_REPO_XMI_FILE_PATH_NAME); maxIterations = Integer.parseInt(properties.getProperty(PROP_MAX_ITERATIONS)); @@ -191,7 +192,8 @@ public class AdaptationControl { } private void processResults(WeightedTactic tactic) { - Impact latestImpact = PerfDataRepoHelper.getImpactAt(perfDataRepo, iteration); + + Impact latestImpact = handler.getImpactAt(iteration); // Connect parsed results to the executed tactic if (latestImpact != null) tactic.setLastImpact(latestImpact); diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/AdaptationProcessModelManager.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/AdaptationProcessModelLoader.java similarity index 90% rename from edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/AdaptationProcessModelManager.java rename to edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/AdaptationProcessModelLoader.java index 9e30607c..44b98432 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/AdaptationProcessModelManager.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/AdaptationProcessModelLoader.java @@ -14,7 +14,7 @@ import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.XMIResource; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; -import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelManager; +import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader; import edu.kit.ipd.descartes.mm.adaptation.AdaptationPackage; import edu.kit.ipd.descartes.mm.adaptation.AdaptationProcess; import edu.kit.ipd.descartes.mm.adaptationpoints.AdaptationpointsPackage; @@ -22,7 +22,7 @@ import edu.kit.ipd.descartes.mm.containerrepository.ContainerrepositoryPackage; import edu.kit.ipd.descartes.mm.resourcelandscape.DistributedDataCenter; import edu.kit.ipd.descartes.mm.resourcelandscape.ResourcelandscapePackage; -public class AdaptationProcessModelManager extends AbstractEcoreModelManager { +public class AdaptationProcessModelLoader extends AbstractEcoreModelLoader { public static final EPackage[] DMM_EPACKAGES = new EPackage[] { ResourcelandscapePackage.eINSTANCE, @@ -30,16 +30,16 @@ public class AdaptationProcessModelManager extends AbstractEcoreModelManager { ContainerrepositoryPackage.eINSTANCE, AdaptationPackage.eINSTANCE }; - private static AdaptationProcessModelManager instance = null; + private static AdaptationProcessModelLoader instance = null; - public static AdaptationProcessModelManager getInstance() { + public static AdaptationProcessModelLoader getInstance() { if (instance == null) { - instance = new AdaptationProcessModelManager(); + instance = new AdaptationProcessModelLoader(); } return instance; } - public AdaptationProcessModelManager() { + public AdaptationProcessModelLoader() { initializeResourceSet(new ResourceSetImpl()); } 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 e3eeb147..f64acec4 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 @@ -32,11 +32,11 @@ import edu.kit.ipd.descartes.mm.resourcelandscape.RuntimeEnvironment; public class DmmModelActionHandler implements IActionHandler { static Logger logger = Logger.getLogger(DmmModelActionHandler.class); - private AdaptationProcessModelManager adaptProcessModelMgr; + private AdaptationProcessModelLoader adaptProcessModelMgr; public DmmModelActionHandler() { - adaptProcessModelMgr = AdaptationProcessModelManager.getInstance(); + adaptProcessModelMgr = AdaptationProcessModelLoader.getInstance(); logger.info("DMM Models loaded."); } 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 new file mode 100644 index 00000000..041da5dd --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/IPerformanceDataRepositoryHandler.java @@ -0,0 +1,12 @@ +package edu.kit.ipd.descartes.adaptation.model.perfdatarepo; + +import edu.kit.ipd.descartes.perfdatarepo.Impact; + +public interface IPerformanceDataRepositoryHandler { + + public Impact getLatestImpact(); + public Impact getImpactAt(int position); + + public void load(String modelFileUri); + +} 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 new file mode 100644 index 00000000..49047fbe --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryHandler.java @@ -0,0 +1,38 @@ +package edu.kit.ipd.descartes.adaptation.model.perfdatarepo; + +import org.apache.log4j.Logger; +import org.eclipse.emf.common.util.URI; + +import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader; +import edu.kit.ipd.descartes.perfdatarepo.Impact; +import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository; + +public class ObservationRepositoryHandler implements IPerformanceDataRepositoryHandler { + + private static Logger logger = Logger.getLogger(ObservationRepositoryHandler.class); + private AbstractEcoreModelLoader modelLoader = null; + private ObservationRepository repository = null; + + public ObservationRepositoryHandler() { + modelLoader = new ObservationRepositoryModelLoader(); + logger.debug("ObservationRepositoryHandler instantiated."); + } + + @Override + public Impact getLatestImpact() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Impact getImpactAt(int position) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void load(String modelFileUri) { + repository = (ObservationRepository) modelLoader.load(URI.createFileURI(modelFileUri)); + } + +} diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryModelLoader.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryModelLoader.java new file mode 100644 index 00000000..e53ffb32 --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/ObservationRepositoryModelLoader.java @@ -0,0 +1,15 @@ +package edu.kit.ipd.descartes.adaptation.model.perfdatarepo; + +import org.eclipse.emf.ecore.resource.ResourceSet; + +import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader; + +public class ObservationRepositoryModelLoader extends AbstractEcoreModelLoader { + + @Override + public void initializeResourceSet(ResourceSet resourceSet) { + // TODO Auto-generated method stub + + } + +} diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/PerfDataRepoHelper.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerfDataRepoHelper.java similarity index 96% rename from edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/PerfDataRepoHelper.java rename to edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerfDataRepoHelper.java index 518caeb2..a4234e8e 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/util/PerfDataRepoHelper.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerfDataRepoHelper.java @@ -1,4 +1,4 @@ -package edu.kit.ipd.descartes.adaptation.model.dmm.util; +package edu.kit.ipd.descartes.adaptation.model.perfdatarepo; import org.eclipse.emf.common.util.EList; 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 new file mode 100644 index 00000000..ab913c1c --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandler.java @@ -0,0 +1,37 @@ +package edu.kit.ipd.descartes.adaptation.model.perfdatarepo; + +import org.apache.log4j.Logger; +import org.eclipse.emf.common.util.URI; + +import edu.kit.ipd.descartes.perfdatarepo.Impact; +import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository; + +public class PerformanceDataRepositoryHandler implements IPerformanceDataRepositoryHandler { + + private static Logger logger = Logger.getLogger(PerformanceDataRepositoryHandler.class); + + private PerformanceDataRepository repository = null; + private PerformanceDataRepositoryModelLoader modelLoader = null; + + public PerformanceDataRepositoryHandler() { + modelLoader = new PerformanceDataRepositoryModelLoader(); + logger.debug("PerformanceDataRepositoryHandler instantiated."); + } + + public void load(String fileUri) { + repository = modelLoader.load(URI.createFileURI(fileUri)); + } + + @Override + public Impact getLatestImpact() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Impact getImpactAt(int position) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandlerFactory.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandlerFactory.java new file mode 100644 index 00000000..2bbcd7dc --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryHandlerFactory.java @@ -0,0 +1,18 @@ +package edu.kit.ipd.descartes.adaptation.model.perfdatarepo; + +import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository; +import edu.kit.ipd.descartes.ql.models.repository.ObservationRepository; + +public class PerformanceDataRepositoryHandlerFactory { + + public static IPerformanceDataRepositoryHandler createHandler(String repositoryType) { + + if (repositoryType.equals(PerformanceDataRepository.class.getName())) + return new PerformanceDataRepositoryHandler(); + + if (repositoryType.equals(ObservationRepository.class.getName())) + return new ObservationRepositoryHandler(); + + return null; + } +} diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/PerformanceDataRepositoryModelManager.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryModelLoader.java similarity index 78% rename from edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/PerformanceDataRepositoryModelManager.java rename to edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryModelLoader.java index 080f44b2..deae112e 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/dmm/PerformanceDataRepositoryModelManager.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/model/perfdatarepo/PerformanceDataRepositoryModelLoader.java @@ -1,4 +1,4 @@ -package edu.kit.ipd.descartes.adaptation.model.dmm; +package edu.kit.ipd.descartes.adaptation.model.perfdatarepo; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EPackage; @@ -7,24 +7,24 @@ import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; -import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelManager; +import edu.kit.ipd.descartes.adaptation.model.AbstractEcoreModelLoader; import edu.kit.ipd.descartes.perfdatarepo.PerfdatarepoPackage; import edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository; -public class PerformanceDataRepositoryModelManager extends AbstractEcoreModelManager { +public class PerformanceDataRepositoryModelLoader extends AbstractEcoreModelLoader { public static final EPackage[] PERF_DATA_REPO_EPACKAGES = new EPackage[] { PerfdatarepoPackage.eINSTANCE }; - private static PerformanceDataRepositoryModelManager instance = null; + private static PerformanceDataRepositoryModelLoader instance = null; - public static PerformanceDataRepositoryModelManager getInstance() { + public static PerformanceDataRepositoryModelLoader getInstance() { if (instance == null) { - instance = new PerformanceDataRepositoryModelManager(); + instance = new PerformanceDataRepositoryModelLoader(); } return instance; } - public PerformanceDataRepositoryModelManager() { + public PerformanceDataRepositoryModelLoader() { initializeResourceSet(new ResourceSetImpl()); } -- GitLab