diff --git a/edu.kit.ipd.descartes.adaptation/default.properties b/edu.kit.ipd.descartes.adaptation/default.properties index 41e3ee5432d6c77e272ab80dd56874a5530faae4..63d10d40017d92a05879ad3ec0b0f5b338513ad0 100644 --- a/edu.kit.ipd.descartes.adaptation/default.properties +++ b/edu.kit.ipd.descartes.adaptation/default.properties @@ -3,7 +3,7 @@ #perfdatarepo.metamodel=edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository #perfdatarepo.instance=/Users/nhuber/Documents/workspace/descartes/metamodel/edu.kit.ipd.descartes.adaptation.test/test_models/PerformanceDataRepositoryDummy.xmi #process.maxiterations=2 -## The list of triggering events can be found in AdaptationControl.java +## The list of triggering events can be found in EventTypeEnum.java #event.type= #process.name=SEAMS_PushPull-v1 @@ -11,7 +11,7 @@ #perfdatarepo.metamodel=edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository #perfdatarepo.instance=/Users/nhuber/Documents/workspace/descartes/metamodel/Examples/SEAMS_Case_Study/simucomresults.perfdatarepo #process.maxiterations=2 -## The list of triggering events can be found in AdaptationControl.java +## The list of triggering events can be found in EventTypeEnum.java #event.type=SlaViolatedEvent #process.name=BlueYonderTestAdaptationProcess @@ -19,7 +19,7 @@ #perfdatarepo.metamodel=edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository #perfdatarepo.instance=../Examples/SEAMS_Case_Study/simucom-simulationResults.perfdatarepo #process.maxiterations=1 -### The list of triggering events can be found in AdaptationControl.java +### The list of triggering events can be found in EventTypeEnum.java #event.type=BottleneckFoundEvent #process.name=SEAMS_PushPull-v2 @@ -27,7 +27,7 @@ #perfdatarepo.metamodel=edu.kit.ipd.descartes.perfdatarepo.PerformanceDataRepository #perfdatarepo.instance=/Users/nhuber/Documents/workspace/descartes/metamodel/edu.kit.ipd.descartes.adaptation.test/SEAMSv2_Case_Study/simucom-simulationResults.perfdatarepo #process.maxiterations=2 -## The list of triggering events can be found in AdaptationControl.java +## The list of triggering events can be found in EventTypeEnum.java #event.type=SlaViolatedEvent process.name=SEAMS_PushPull-v1 @@ -35,5 +35,5 @@ adaptationprocess.instance=/Users/nhuber/Documents/workspace/descartes/metamodel perfdatarepo.metamodel=edu.kit.ipd.descartes.ql.models.repository.ObservationRepository perfdatarepo.instance=/Users/nhuber/Documents/workspace/descartes/metamodel/Examples/SEAMS_Case_Study/pushpull-simresults.pdr process.maxiterations=2 -# The list of triggering events can be found in AdaptationControl.java +# The list of triggering events can be found in EventTypeEnum.java event.type=SlaViolatedEvent \ No newline at end of file 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 ec5d51ddc384677ca35d8cae715512363b28f116..76cd4d4b36a1220185faeef25093ce5518a495f6 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 @@ -11,6 +11,7 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.xmi.DanglingHREFException; import edu.kit.ipd.descartes.adaptation.evaluation.WeightingFunctionEvaluator; +import edu.kit.ipd.descartes.adaptation.event.EventTypeEnum; 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.AdaptationProcessModelLoader; @@ -26,32 +27,6 @@ import edu.kit.ipd.descartes.perfdatarepo.Impact; public class AdaptationControl { - public enum EventType { - SLA_VIOLATION("SlaViolatedEvent", "12345"), SCHEDULED_OPTIMIZATION("ScheduledOptimizationEvent", - "_H_MTgIAnEeKW2vVcg5ekRw"), BOTTLENECK_FOUND("BottleneckFoundEvent", "_VvZEwKEoEeKDl52Xojo4CQ"), - CUSTOMER_WORKLOAD_UPDATE("CustomerWorkloadUpdate","_XvZEwKEoEeKDl52Xojo4KQ"); - - private final String name; - private final String id; - - EventType(String name, String id) { - this.name = name; - this.id = id; - } - - public static EventType getEventType(String eventTypeName) { - if (eventTypeName.equals(SLA_VIOLATION.name)) - return SLA_VIOLATION; - if (eventTypeName.equals(SCHEDULED_OPTIMIZATION.name)) - return SCHEDULED_OPTIMIZATION; - if (eventTypeName.equals(BOTTLENECK_FOUND.name)) - return BOTTLENECK_FOUND; - if (eventTypeName.equals(CUSTOMER_WORKLOAD_UPDATE.name)) - return CUSTOMER_WORKLOAD_UPDATE; - return null; - } - } - private static final String DEFAULT_PROP_FILE_PATH = "./default.properties"; private static final String PROP_ADAPTATION_PROCESS_XMI_FILE_PATH_NAME = "adaptationprocess.instance"; private static final String PROP_PERF_DATA_REPO_XMI_FILE_PATH_NAME = "perfdatarepo.instance"; @@ -143,12 +118,14 @@ public class AdaptationControl { } public void init(String propertiesFile) { + + if (propertiesFile == null || propertiesFile.equals("")) { + logger.warn("No properties file given. Using default properties..."); + propertiesFile = DEFAULT_PROP_FILE_PATH; + } try { // load properties file - if (propertiesFile == null || propertiesFile.equals("")) - loadProperties(DEFAULT_PROP_FILE_PATH); - else - loadProperties(propertiesFile); + loadProperties(propertiesFile); // load required models adaptationProcess = adaptationProcessModelLoader.load(URI.createFileURI(adaptationProcessXmiFilePath)); @@ -196,7 +173,7 @@ public class AdaptationControl { // Creates an "artifical event". Will be replaced later when integrated in the system private Event findTriggeringEvent() { - EventType type = EventType.getEventType(eventType); + EventTypeEnum type = EventTypeEnum.getEventType(eventType); if (type == null) { logger.error("Could not create event " + eventType); @@ -205,7 +182,7 @@ public class AdaptationControl { for (Strategy strategy : adaptationProcess.getStrategies()) { Event event = strategy.getTriggeringEvents(); - if (event.getId().equals(type.id)&&event.getName().equals(type.name)){ + if (event.getId().equals(type.getId())&&event.getName().equals(type.getName())){ cause = event; return event; } diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/event/EventTypeEnum.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/event/EventTypeEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..ea03b55093cbbdbc6fd501a05263fcdf0802f63e --- /dev/null +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/event/EventTypeEnum.java @@ -0,0 +1,40 @@ +package edu.kit.ipd.descartes.adaptation.event; + +public enum EventTypeEnum { + + SLA_VIOLATION("SlaViolatedEvent", "12345"), + SCHEDULED_OPTIMIZATION("ScheduledOptimizationEvent","_H_MTgIAnEeKW2vVcg5ekRw"), + BOTTLENECK_FOUND("BottleneckFoundEvent", "_VvZEwKEoEeKDl52Xojo4CQ"), + CUSTOMER_WORKLOAD_UPDATE("CustomerWorkloadUpdate", "_XvZEwKEoEeKDl52Xojo4KQ"), + OPTIMIZATION_PERIOD("OptimizationPeriod","_E6I-wMwxEeKRorfNQMmH1Q"); + + private final String name; + private final String id; + + public String getId() { + return id; + } + + public String getName() { + return name; + } + + EventTypeEnum(String name, String id) { + this.name = name; + this.id = id; + } + + public static EventTypeEnum getEventType(String eventTypeName) { + if (eventTypeName.equals(SLA_VIOLATION.name)) + return SLA_VIOLATION; + if (eventTypeName.equals(SCHEDULED_OPTIMIZATION.name)) + return SCHEDULED_OPTIMIZATION; + if (eventTypeName.equals(BOTTLENECK_FOUND.name)) + return BOTTLENECK_FOUND; + if (eventTypeName.equals(CUSTOMER_WORKLOAD_UPDATE.name)) + return CUSTOMER_WORKLOAD_UPDATE; + if (eventTypeName.equals(OPTIMIZATION_PERIOD.name)) + return OPTIMIZATION_PERIOD; + return null; + } +}