From 9a80208dd02d747b40b8ad267101496f2a7065fa Mon Sep 17 00:00:00 2001 From: erbel <johannes.erbel@cs.uni-goettingen.de> Date: Thu, 3 Jan 2019 17:22:46 +0100 Subject: [PATCH] Prototyp V2 tmp --- .settings/org.eclipse.buildship.core.prefs | 2 +- build.gradle | 2 +- .../bin/.gitignore | 1 + .../rwm/mocci/connector/ConnectorFactory.java | 21 +- ...ector.java => MartpublisherConnector.java} | 16 +- .../MonitoringpropertyConnector.java | 104 +++ .../org.eclipse.buildship.core.prefs | 2 +- de.ugoe.cs.rwm.mocci.connector/bin/.gitignore | 1 + .../rwm/mocci/connector/ConnectorFactory.java | 21 +- ...ector.java => MartpublisherConnector.java} | 16 +- .../MonitoringpropertyConnector.java | 104 +++ .../mocci/connector/PublisherConnector.java | 30 +- .../rwm/mocci/connector/SensorConnector.java | 21 +- de.ugoe.cs.rwm.mocci.model.edit/.classpath | 1 + .../org.eclipse.buildship.core.prefs | 2 +- .../icons/full/obj16/Martpublisher.gif | Bin 0 -> 129 bytes .../plugin.properties | 8 + .../provider/DatagathererItemProvider.java | 7 +- ...er.java => MartpublisherItemProvider.java} | 77 +- .../MonitoringItemProviderAdapterFactory.java | 88 +-- .../MonitoringPropertyArrayItemProvider.java | 178 ----- ...va => MonitoringpropertyItemProvider.java} | 106 ++- .../provider/ProcessorItemProvider.java | 40 +- .../provider/PublisherItemProvider.java | 40 +- .../provider/SensorItemProvider.java | 7 +- de.ugoe.cs.rwm.mocci.model/.classpath | 1 + .../org.eclipse.buildship.core.prefs | 2 +- .../model/monitoring.ecore | 74 +- .../model/monitoring.genmodel | 45 +- .../model/monitoring.occie | 39 +- .../new Extension diagram2.svg | 698 ++++++++++++++++++ .../representations.aird | 475 ++++++------ .../src-gen/monitoring/Martpublisher.java | 126 ++++ .../src-gen/monitoring/MonitoringFactory.java | 33 +- .../src-gen/monitoring/MonitoringPackage.java | 619 ++++++++++------ .../monitoring/MonitoringProperty.java | 114 --- .../monitoring/MonitoringPropertyArray.java | 53 -- .../src-gen/monitoring/MonitoringTables.java | 197 +++-- .../monitoring/Monitoringproperties.java | 72 -- .../monitoring/Monitoringproperty.java | 103 +++ .../src-gen/monitoring/Processor.java | 32 + .../src-gen/monitoring/Publisher.java | 32 + .../monitoring/impl/MartpublisherImpl.java | 357 +++++++++ .../impl/MonitoringFactoryImpl.java | 41 +- .../impl/MonitoringPackageImpl.java | 196 ++--- .../impl/MonitoringPropertyArrayImpl.java | 162 ---- .../impl/MonitoringPropertyImpl.java | 281 ------- .../impl/MonitoringpropertiesImpl.java | 268 ------- .../impl/MonitoringpropertyImpl.java | 303 ++++++++ .../monitoring/impl/ProcessorImpl.java | 125 ++++ .../monitoring/impl/PublisherImpl.java | 125 ++++ .../util/MonitoringAdapterFactory.java | 83 ++- .../monitoring/util/MonitoringSwitch.java | 95 ++- .../monitoring/util/MonitoringValidator.java | 109 ++- .../ugoe/cs/rwm/mocci/CreateElementsTest.java | 29 +- .../rwm/mocci/DeployHadoopMonitoringTest.java | 2 +- .../java/de/ugoe/cs/rwm/mocci/EmptyTest.java | 58 ++ .../ugoe/cs/rwm/mocci/ResolveProxyTest.java | 2 +- .../de/ugoe/cs/rwm/mocci/TestUtility.java | 1 - .../live/DeployHadoopMonitoringTestLive.java | 3 +- .../de.ugoe.cs.rwm.mocci.connector.dummy.jar | Bin 8401 -> 9260 bytes .../de.ugoe.cs.rwm.mocci.model.jar | Bin 59467 -> 61423 bytes .../occi/hadoopClusterNewExtCPUOnly.occic | 288 ++++++++ .../occi/hadoopClusterNewExtWithMem.occic | 353 +++++++++ .../resources/roles/memprocessor/.travis.yml | 29 + .../resources/roles/memprocessor/README.md | 38 + .../roles/memprocessor/defaults/main.yml | 2 + .../roles/memprocessor/files/memprocessor.sh | 33 + .../roles/memprocessor/handlers/main.yml | 2 + .../roles/memprocessor/meta/main.yml | 246 ++++++ .../roles/memprocessor/tasks/main.yml | 37 + .../roles/memprocessor/tests/inventory | 1 + .../roles/memprocessor/tests/test.yml | 5 + .../roles/memprocessor/vars/main.yml | 2 + .../resources/roles/mempublisher/.travis.yml | 29 + .../resources/roles/mempublisher/README.md | 38 + .../roles/mempublisher/defaults/main.yml | 2 + .../roles/mempublisher/files/mempublisher.sh | 60 ++ .../roles/mempublisher/handlers/main.yml | 2 + .../roles/mempublisher/meta/main.yml | 246 ++++++ .../roles/mempublisher/tasks/main.yml | 42 ++ .../roles/mempublisher/tests/inventory | 1 + .../roles/mempublisher/tests/test.yml | 5 + .../roles/mempublisher/vars/main.yml | 2 + 84 files changed, 5089 insertions(+), 2224 deletions(-) create mode 100644 de.ugoe.cs.rwm.mocci.connector.dummy/bin/.gitignore rename de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/{MonitoringpropertiesConnector.java => MartpublisherConnector.java} (65%) create mode 100644 de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertyConnector.java create mode 100644 de.ugoe.cs.rwm.mocci.connector/bin/.gitignore rename de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/{MonitoringpropertiesConnector.java => MartpublisherConnector.java} (65%) create mode 100644 de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertyConnector.java create mode 100644 de.ugoe.cs.rwm.mocci.model.edit/icons/full/obj16/Martpublisher.gif rename de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/{MonitoringPropertyItemProvider.java => MartpublisherItemProvider.java} (63%) delete mode 100644 de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringPropertyArrayItemProvider.java rename de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/{MonitoringpropertiesItemProvider.java => MonitoringpropertyItemProvider.java} (50%) create mode 100644 de.ugoe.cs.rwm.mocci.model/new Extension diagram2.svg create mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Martpublisher.java delete mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringProperty.java delete mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringPropertyArray.java delete mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Monitoringproperties.java create mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Monitoringproperty.java create mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MartpublisherImpl.java delete mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPropertyArrayImpl.java delete mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPropertyImpl.java delete mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringpropertiesImpl.java create mode 100644 de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringpropertyImpl.java create mode 100644 src/test/java/de/ugoe/cs/rwm/mocci/EmptyTest.java create mode 100644 src/test/resources/occi/hadoopClusterNewExtCPUOnly.occic create mode 100644 src/test/resources/occi/hadoopClusterNewExtWithMem.occic create mode 100644 src/test/resources/roles/memprocessor/.travis.yml create mode 100644 src/test/resources/roles/memprocessor/README.md create mode 100644 src/test/resources/roles/memprocessor/defaults/main.yml create mode 100644 src/test/resources/roles/memprocessor/files/memprocessor.sh create mode 100644 src/test/resources/roles/memprocessor/handlers/main.yml create mode 100644 src/test/resources/roles/memprocessor/meta/main.yml create mode 100644 src/test/resources/roles/memprocessor/tasks/main.yml create mode 100644 src/test/resources/roles/memprocessor/tests/inventory create mode 100644 src/test/resources/roles/memprocessor/tests/test.yml create mode 100644 src/test/resources/roles/memprocessor/vars/main.yml create mode 100644 src/test/resources/roles/mempublisher/.travis.yml create mode 100644 src/test/resources/roles/mempublisher/README.md create mode 100644 src/test/resources/roles/mempublisher/defaults/main.yml create mode 100644 src/test/resources/roles/mempublisher/files/mempublisher.sh create mode 100644 src/test/resources/roles/mempublisher/handlers/main.yml create mode 100644 src/test/resources/roles/mempublisher/meta/main.yml create mode 100644 src/test/resources/roles/mempublisher/tasks/main.yml create mode 100644 src/test/resources/roles/mempublisher/tests/inventory create mode 100644 src/test/resources/roles/mempublisher/tests/test.yml create mode 100644 src/test/resources/roles/mempublisher/vars/main.yml diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs index e8c143f..52a12ad 100644 --- a/.settings/org.eclipse.buildship.core.prefs +++ b/.settings/org.eclipse.buildship.core.prefs @@ -1,2 +1,2 @@ -connection.project.dir=de.ugoe.cs.rwm.mocci.connector +connection.project.dir=de.ugoe.cs.rwm.mocci.connector.dummy eclipse.preferences.version=1 diff --git a/build.gradle b/build.gradle index e7fb8bc..8f1ec32 100644 --- a/build.gradle +++ b/build.gradle @@ -129,7 +129,7 @@ javadoc { failOnError = true } test { - exclude 'de/ugoe/cs/rwm/mocci/live/**' + //exclude 'de/ugoe/cs/rwm/mocci/live/**' testLogging.showStandardStreams = true testLogging { exceptionFormat = 'full' diff --git a/de.ugoe.cs.rwm.mocci.connector.dummy/bin/.gitignore b/de.ugoe.cs.rwm.mocci.connector.dummy/bin/.gitignore new file mode 100644 index 0000000..fd04598 --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.connector.dummy/bin/.gitignore @@ -0,0 +1 @@ +/de/ diff --git a/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/ConnectorFactory.java b/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/ConnectorFactory.java index 1676048..7824ea7 100644 --- a/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/ConnectorFactory.java +++ b/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/ConnectorFactory.java @@ -10,7 +10,7 @@ * - Philippe Merle <philippe.merle@inria.fr> * - Faiez Zalila <faiez.zalila@inria.fr> * - * Generated at Wed Dec 19 10:30:40 CET 2018 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector + * Generated at Thu Jan 03 13:17:39 CET 2019 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector */ package de.ugoe.cs.rwm.mocci.connector; @@ -68,12 +68,23 @@ public class ConnectorFactory extends monitoring.impl.MonitoringFactoryImpl /** * EFactory method for OCCI kind: * - scheme: http://schemas.ugoe.cs.rwm/monitoring# - * - term: monitoringproperties - * - title: MonitoringProperty Mixin + * - term: monitoringproperty + * - title: MonitoringProperty Component */ @Override - public monitoring.Monitoringproperties createMonitoringproperties() { - return new MonitoringpropertiesConnector(); + public monitoring.Monitoringproperty createMonitoringproperty() { + return new MonitoringpropertyConnector(); + } + + /** + * EFactory method for OCCI kind: + * - scheme: http://schemas.ugoe.cs.rwm/monitoring# + * - term: martpublisher + * - title: MartPublisher Mixin + */ + @Override + public monitoring.Martpublisher createMartpublisher() { + return new MartpublisherConnector(); } } diff --git a/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertiesConnector.java b/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MartpublisherConnector.java similarity index 65% rename from de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertiesConnector.java rename to de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MartpublisherConnector.java index 3286ff5..a13a97d 100644 --- a/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertiesConnector.java +++ b/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MartpublisherConnector.java @@ -10,7 +10,7 @@ * - Philippe Merle <philippe.merle@inria.fr> * - Faiez Zalila <faiez.zalila@inria.fr> * - * Generated at Wed Dec 19 10:30:40 CET 2018 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector + * Generated at Thu Jan 03 13:17:39 CET 2019 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector */ package de.ugoe.cs.rwm.mocci.connector; @@ -22,21 +22,21 @@ import org.slf4j.LoggerFactory; /** * Connector implementation for the OCCI kind: * - scheme: http://schemas.ugoe.cs.rwm/monitoring# - * - term: monitoringproperties - * - title: MonitoringProperty Mixin + * - term: martpublisher + * - title: MartPublisher Mixin */ -public class MonitoringpropertiesConnector extends monitoring.impl.MonitoringpropertiesImpl +public class MartpublisherConnector extends monitoring.impl.MartpublisherImpl { /** * Initialize the logger. */ - private static Logger LOGGER = LoggerFactory.getLogger(MonitoringpropertiesConnector.class); + private static Logger LOGGER = LoggerFactory.getLogger(MartpublisherConnector.class); - // Start of user code Monitoringpropertiesconnector_constructor + // Start of user code Martpublisherconnector_constructor /** - * Constructs a monitoringproperties connector. + * Constructs a martpublisher connector. */ - MonitoringpropertiesConnector() + MartpublisherConnector() { LOGGER.debug("Constructor called on " + this); // TODO: Implement this constructor. diff --git a/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertyConnector.java b/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertyConnector.java new file mode 100644 index 0000000..b012b52 --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.connector.dummy/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertyConnector.java @@ -0,0 +1,104 @@ +/** + * Copyright (c) 2016-2017 Inria + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * - Philippe Merle <philippe.merle@inria.fr> + * - Faiez Zalila <faiez.zalila@inria.fr> + * + * Generated at Thu Jan 03 13:17:39 CET 2019 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector + */ +package de.ugoe.cs.rwm.mocci.connector; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + + +/** + * Connector implementation for the OCCI kind: + * - scheme: http://schemas.ugoe.cs.rwm/monitoring# + * - term: monitoringproperty + * - title: MonitoringProperty Component + */ +public class MonitoringpropertyConnector extends monitoring.impl.MonitoringpropertyImpl +{ + /** + * Initialize the logger. + */ + private static Logger LOGGER = LoggerFactory.getLogger(MonitoringpropertyConnector.class); + + // Start of user code Monitoringpropertyconnector_constructor + /** + * Constructs a monitoringproperty connector. + */ + MonitoringpropertyConnector() + { + LOGGER.debug("Constructor called on " + this); + // TODO: Implement this constructor. + } + // End of user code + // + // OCCI CRUD callback operations. + // + + // Start of user code MonitoringpropertyocciCreate + /** + * Called when this Monitoringproperty instance is completely created. + */ + @Override + public void occiCreate() + { + LOGGER.debug("occiCreate() called on " + this); + // TODO: Implement this callback or remove this method. + } + // End of user code + + // Start of user code Monitoringproperty_occiRetrieve_method + /** + * Called when this Monitoringproperty instance must be retrieved. + */ + @Override + public void occiRetrieve() + { + LOGGER.debug("occiRetrieve() called on " + this); + // TODO: Implement this callback or remove this method. + } + // End of user code + + // Start of user code Monitoringproperty_occiUpdate_method + /** + * Called when this Monitoringproperty instance is completely updated. + */ + @Override + public void occiUpdate() + { + LOGGER.debug("occiUpdate() called on " + this); + // TODO: Implement this callback or remove this method. + } + // End of user code + + // Start of user code MonitoringpropertyocciDelete_method + /** + * Called when this Monitoringproperty instance will be deleted. + */ + @Override + public void occiDelete() + { + LOGGER.debug("occiDelete() called on " + this); + // TODO: Implement this callback or remove this method. + } + // End of user code + + // + // Monitoringproperty actions. + // + + + + +} diff --git a/de.ugoe.cs.rwm.mocci.connector/.settings/org.eclipse.buildship.core.prefs b/de.ugoe.cs.rwm.mocci.connector/.settings/org.eclipse.buildship.core.prefs index e889521..dacbfbb 100644 --- a/de.ugoe.cs.rwm.mocci.connector/.settings/org.eclipse.buildship.core.prefs +++ b/de.ugoe.cs.rwm.mocci.connector/.settings/org.eclipse.buildship.core.prefs @@ -1,2 +1,2 @@ -connection.project.dir= +connection.project.dir=../de.ugoe.cs.rwm.mocci.connector.dummy eclipse.preferences.version=1 diff --git a/de.ugoe.cs.rwm.mocci.connector/bin/.gitignore b/de.ugoe.cs.rwm.mocci.connector/bin/.gitignore new file mode 100644 index 0000000..fd04598 --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.connector/bin/.gitignore @@ -0,0 +1 @@ +/de/ diff --git a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/ConnectorFactory.java b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/ConnectorFactory.java index b597b3b..f68ca2e 100644 --- a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/ConnectorFactory.java +++ b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/ConnectorFactory.java @@ -10,7 +10,7 @@ * - Philippe Merle <philippe.merle@inria.fr> * - Faiez Zalila <faiez.zalila@inria.fr> * - * Generated at Wed Dec 19 11:10:50 CET 2018 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector + * Generated at Wed Jan 02 16:14:48 CET 2019 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector */ package de.ugoe.cs.rwm.mocci.connector; @@ -68,12 +68,23 @@ public class ConnectorFactory extends monitoring.impl.MonitoringFactoryImpl /** * EFactory method for OCCI kind: * - scheme: http://schemas.ugoe.cs.rwm/monitoring# - * - term: monitoringproperties - * - title: MonitoringProperty Mixin + * - term: monitoringproperty + * - title: MonitoringProperty Component */ @Override - public monitoring.Monitoringproperties createMonitoringproperties() { - return new MonitoringpropertiesConnector(); + public monitoring.Monitoringproperty createMonitoringproperty() { + return new MonitoringpropertyConnector(); + } + + /** + * EFactory method for OCCI kind: + * - scheme: http://schemas.ugoe.cs.rwm/monitoring# + * - term: martpublisher + * - title: MartPublisher Mixin + */ + @Override + public monitoring.Martpublisher createMartpublisher() { + return new MartpublisherConnector(); } } diff --git a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertiesConnector.java b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MartpublisherConnector.java similarity index 65% rename from de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertiesConnector.java rename to de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MartpublisherConnector.java index 19effac..9edc371 100644 --- a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertiesConnector.java +++ b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MartpublisherConnector.java @@ -10,7 +10,7 @@ * - Philippe Merle <philippe.merle@inria.fr> * - Faiez Zalila <faiez.zalila@inria.fr> * - * Generated at Wed Dec 19 11:10:50 CET 2018 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector + * Generated at Wed Jan 02 16:14:48 CET 2019 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector */ package de.ugoe.cs.rwm.mocci.connector; @@ -22,21 +22,21 @@ import org.slf4j.LoggerFactory; /** * Connector implementation for the OCCI kind: * - scheme: http://schemas.ugoe.cs.rwm/monitoring# - * - term: monitoringproperties - * - title: MonitoringProperty Mixin + * - term: martpublisher + * - title: MartPublisher Mixin */ -public class MonitoringpropertiesConnector extends monitoring.impl.MonitoringpropertiesImpl +public class MartpublisherConnector extends monitoring.impl.MartpublisherImpl { /** * Initialize the logger. */ - private static Logger LOGGER = LoggerFactory.getLogger(MonitoringpropertiesConnector.class); + private static Logger LOGGER = LoggerFactory.getLogger(MartpublisherConnector.class); - // Start of user code Monitoringpropertiesconnector_constructor + // Start of user code Martpublisherconnector_constructor /** - * Constructs a monitoringproperties connector. + * Constructs a martpublisher connector. */ - MonitoringpropertiesConnector() + MartpublisherConnector() { LOGGER.debug("Constructor called on " + this); // TODO: Implement this constructor. diff --git a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertyConnector.java b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertyConnector.java new file mode 100644 index 0000000..00b6111 --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/MonitoringpropertyConnector.java @@ -0,0 +1,104 @@ +/** + * Copyright (c) 2016-2017 Inria + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * - Philippe Merle <philippe.merle@inria.fr> + * - Faiez Zalila <faiez.zalila@inria.fr> + * + * Generated at Wed Jan 02 16:14:48 CET 2019 from platform:/resource/monitoring/model/monitoring.occie by org.eclipse.cmf.occi.core.gen.connector + */ +package de.ugoe.cs.rwm.mocci.connector; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + + +/** + * Connector implementation for the OCCI kind: + * - scheme: http://schemas.ugoe.cs.rwm/monitoring# + * - term: monitoringproperty + * - title: MonitoringProperty Component + */ +public class MonitoringpropertyConnector extends monitoring.impl.MonitoringpropertyImpl +{ + /** + * Initialize the logger. + */ + private static Logger LOGGER = LoggerFactory.getLogger(MonitoringpropertyConnector.class); + + // Start of user code Monitoringpropertyconnector_constructor + /** + * Constructs a monitoringproperty connector. + */ + MonitoringpropertyConnector() + { + LOGGER.debug("Constructor called on " + this); + // TODO: Implement this constructor. + } + // End of user code + // + // OCCI CRUD callback operations. + // + + // Start of user code MonitoringpropertyocciCreate + /** + * Called when this Monitoringproperty instance is completely created. + */ + @Override + public void occiCreate() + { + LOGGER.debug("occiCreate() called on " + this); + // TODO: Implement this callback or remove this method. + } + // End of user code + + // Start of user code Monitoringproperty_occiRetrieve_method + /** + * Called when this Monitoringproperty instance must be retrieved. + */ + @Override + public void occiRetrieve() + { + LOGGER.debug("occiRetrieve() called on " + this); + // TODO: Implement this callback or remove this method. + } + // End of user code + + // Start of user code Monitoringproperty_occiUpdate_method + /** + * Called when this Monitoringproperty instance is completely updated. + */ + @Override + public void occiUpdate() + { + LOGGER.debug("occiUpdate() called on " + this); + // TODO: Implement this callback or remove this method. + } + // End of user code + + // Start of user code MonitoringpropertyocciDelete_method + /** + * Called when this Monitoringproperty instance will be deleted. + */ + @Override + public void occiDelete() + { + LOGGER.debug("occiDelete() called on " + this); + // TODO: Implement this callback or remove this method. + } + // End of user code + + // + // Monitoringproperty actions. + // + + + + +} diff --git a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/PublisherConnector.java b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/PublisherConnector.java index 3513962..bbc1b2b 100644 --- a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/PublisherConnector.java +++ b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/PublisherConnector.java @@ -14,9 +14,15 @@ */ package de.ugoe.cs.rwm.mocci.connector; +import org.eclipse.cmf.occi.core.AttributeState; +import org.eclipse.cmf.occi.core.Link; +import org.eclipse.cmf.occi.core.impl.OCCIFactoryImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import monitoring.Monitoringproperty; +import monitoring.Sensor; + /** @@ -30,8 +36,10 @@ public class PublisherConnector extends monitoring.impl.PublisherImpl /** * Initialize the logger. */ + private OCCIFactoryImpl factory = new OCCIFactoryImpl(); private static Logger LOGGER = LoggerFactory.getLogger(PublisherConnector.class); -private ComponentManager compMan; + private Monitoringproperty monProp; + private ComponentManager compMan; // Start of user code Publisherconnector_constructor /** @@ -41,6 +49,7 @@ private ComponentManager compMan; { LOGGER.debug("Constructor called on " + this); this.compMan = new ComponentManager(this); + // TODO: Implement this constructor. } // End of user code @@ -140,9 +149,26 @@ private ComponentManager compMan; @Override public void start() { + AttributeState sensorlocation = factory.createAttributeState(); + sensorlocation.setValue(getContainingSensorLocation()); + sensorlocation.setName("sensor"); + System.out.println(sensorlocation); + this.attributes.add(sensorlocation); + System.out.println(this.attributes); LOGGER.debug("Action start() called on " + this); compMan.start(); - // TODO: Implement how to start this publisher. + //this.attributes.remove(sensorlocation); + System.out.println(this.attributes); + } + + + private String getContainingSensorLocation() { + for(Link link: this.getRlinks()) { + if(link.getSource() instanceof Sensor) { + return link.getSource().getLocation(); + } + } + return "No containing sensor found"; } // End of user code // Start of user code Publisher_Kind_configure_action diff --git a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/SensorConnector.java b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/SensorConnector.java index 82d8143..a08bb83 100644 --- a/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/SensorConnector.java +++ b/de.ugoe.cs.rwm.mocci.connector/src-gen/de/ugoe/cs/rwm/mocci/connector/SensorConnector.java @@ -131,7 +131,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl } status = cmtool.configure(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.INACTIVE)) + if (status == 0) setOcciAppState(Status.INACTIVE); else setOcciAppState(Status.ERROR); @@ -164,7 +164,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl component.start(); } status = cmtool.start(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.ACTIVE)) + if (status == 0) setOcciAppState(Status.ACTIVE); else setOcciAppState(Status.ERROR); @@ -191,7 +191,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl } status = cmtool.start(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.ACTIVE)) + if (status == 0) setOcciAppState(Status.ACTIVE); else setOcciAppState(Status.ERROR); @@ -224,7 +224,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl component.stop(); } status = cmtool.stop(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.INACTIVE)) + if (status == 0) setOcciAppState(Status.INACTIVE); else setOcciAppState(Status.ERROR); @@ -260,7 +260,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl } status = cmtool.deploy(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.DEPLOYED)) + if (status == 0) setOcciAppState(Status.DEPLOYED); else setOcciAppState(Status.ERROR); @@ -298,7 +298,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl component.undeploy(); } status = cmtool.undeploy(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.UNDEPLOYED)) + if (status == 0) setOcciAppState(Status.UNDEPLOYED); else setOcciAppState(Status.ERROR); @@ -309,7 +309,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl component.undeploy(); } status = cmtool.undeploy(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.UNDEPLOYED)) + if (status == 0) setOcciAppState(Status.UNDEPLOYED); else setOcciAppState(Status.ERROR); @@ -320,7 +320,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl component.undeploy(); } status = cmtool.undeploy(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.UNDEPLOYED)) + if (status == 0) setOcciAppState(Status.UNDEPLOYED); else setOcciAppState(Status.ERROR); @@ -331,7 +331,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl component.undeploy(); } status = cmtool.undeploy(this); - if (status == 0 && assertCompsStatusEquals(getConnectedComponents(), Status.UNDEPLOYED)) + if (status == 0) setOcciAppState(Status.UNDEPLOYED); else setOcciAppState(Status.ERROR); @@ -354,6 +354,7 @@ public class SensorConnector extends monitoring.impl.SensorImpl } + /* private boolean assertCompsStatusEquals(List<Component> components, Status status) { for (Component component: components) { if (component.getOcciComponentState().getValue() != status.getValue()) { @@ -364,6 +365,6 @@ public class SensorConnector extends monitoring.impl.SensorImpl } } return true; -} +}*/ } diff --git a/de.ugoe.cs.rwm.mocci.model.edit/.classpath b/de.ugoe.cs.rwm.mocci.model.edit/.classpath index ba95638..9f26f94 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/.classpath +++ b/de.ugoe.cs.rwm.mocci.model.edit/.classpath @@ -3,5 +3,6 @@ <classpathentry kind="src" path="src-gen"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/> <classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/de.ugoe.cs.rwm.mocci.model.edit/.settings/org.eclipse.buildship.core.prefs b/de.ugoe.cs.rwm.mocci.model.edit/.settings/org.eclipse.buildship.core.prefs index 1752c93..dacbfbb 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/.settings/org.eclipse.buildship.core.prefs +++ b/de.ugoe.cs.rwm.mocci.model.edit/.settings/org.eclipse.buildship.core.prefs @@ -1,2 +1,2 @@ -connection.project.dir=../de.ugoe.cs.rwm.mocci.connector +connection.project.dir=../de.ugoe.cs.rwm.mocci.connector.dummy eclipse.preferences.version=1 diff --git a/de.ugoe.cs.rwm.mocci.model.edit/icons/full/obj16/Martpublisher.gif b/de.ugoe.cs.rwm.mocci.model.edit/icons/full/obj16/Martpublisher.gif new file mode 100644 index 0000000000000000000000000000000000000000..420eee177528d9bd6d862c38d2a66c14835a6140 GIT binary patch literal 129 zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;<Lna0M7 zKUo+V7&sYpKsrHYFtF$uob+71*W&e;Zz}u`3thLHvffHb@LI6&tBu~rX=+!^%6nF7 S^6M^V>~uRaQAn7P!5RRp7cZRv literal 0 HcmV?d00001 diff --git a/de.ugoe.cs.rwm.mocci.model.edit/plugin.properties b/de.ugoe.cs.rwm.mocci.model.edit/plugin.properties index 0c40c49..e2bbd98 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/plugin.properties +++ b/de.ugoe.cs.rwm.mocci.model.edit/plugin.properties @@ -73,3 +73,11 @@ _UI_MonitoringProperty_value_feature = Value _UI_MonitoringProperty_Id_feature = Id _UI_MonitoringPropertyArray_monitoringpropertyarrayValues_feature = Monitoringpropertyarray Values _UI_Monitoringproperties_monitoringProperties_feature = Monitoring Properties +_UI_Monitoringproperty_monitoringPropertyResource_feature = Monitoring Property Resource +_UI_Martpublisher_type = Martpublisher +_UI_Processor_gathererAddress_feature = Gatherer Address +_UI_Publisher_publisherEndpoint_feature = Publisher Endpoint +_UI_Martpublisher_monitoringPropertyName_feature = Monitoring Property Name +_UI_Martpublisher_monitoringPropertyValue_feature = Monitoring Property Value +_UI_Martpublisher_monitoringPropertyResource_feature = Monitoring Property Resource +_UI_Martpublisher_monitoringPropertyId_feature = Monitoring Property Id diff --git a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/DatagathererItemProvider.java b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/DatagathererItemProvider.java index b98bd74..150cb48 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/DatagathererItemProvider.java +++ b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/DatagathererItemProvider.java @@ -196,7 +196,12 @@ public class DatagathererItemProvider extends ComponentItemProvider { newChildDescriptors.add (createChildParameter (OCCIPackage.Literals.ENTITY__PARTS, - MonitoringFactory.eINSTANCE.createMonitoringproperties())); + MonitoringFactory.eINSTANCE.createMartpublisher())); + + newChildDescriptors.add + (createChildParameter + (OCCIPackage.Literals.RESOURCE__LINKS, + MonitoringFactory.eINSTANCE.createMonitoringproperty())); } /** diff --git a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringPropertyItemProvider.java b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MartpublisherItemProvider.java similarity index 63% rename from de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringPropertyItemProvider.java rename to de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MartpublisherItemProvider.java index 9d567fe..ff5c320 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringPropertyItemProvider.java +++ b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MartpublisherItemProvider.java @@ -16,8 +16,10 @@ package monitoring.provider; import java.util.Collection; import java.util.List; +import monitoring.Martpublisher; import monitoring.MonitoringPackage; -import monitoring.MonitoringProperty; + +import org.eclipse.cmf.occi.core.provider.MixinBaseItemProvider; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notification; @@ -25,37 +27,24 @@ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.util.ResourceLocator; import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; -import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; -import org.eclipse.emf.edit.provider.IItemLabelProvider; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; -import org.eclipse.emf.edit.provider.IItemPropertySource; -import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; -import org.eclipse.emf.edit.provider.ITreeItemContentProvider; import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; -import org.eclipse.emf.edit.provider.ItemProviderAdapter; import org.eclipse.emf.edit.provider.ViewerNotification; /** - * This is the item provider adapter for a {@link monitoring.MonitoringProperty} object. + * This is the item provider adapter for a {@link monitoring.Martpublisher} object. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ -public class MonitoringPropertyItemProvider - extends ItemProviderAdapter - implements - IEditingDomainItemProvider, - IStructuredItemContentProvider, - ITreeItemContentProvider, - IItemLabelProvider, - IItemPropertySource { +public class MartpublisherItemProvider extends MixinBaseItemProvider { /** * This constructs an instance from a factory and a notifier. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - public MonitoringPropertyItemProvider(AdapterFactory adapterFactory) { + public MartpublisherItemProvider(AdapterFactory adapterFactory) { super(adapterFactory); } @@ -70,27 +59,27 @@ public class MonitoringPropertyItemProvider if (itemPropertyDescriptors == null) { super.getPropertyDescriptors(object); - addNamePropertyDescriptor(object); - addValuePropertyDescriptor(object); - addIdPropertyDescriptor(object); + addMonitoringPropertyNamePropertyDescriptor(object); + addMonitoringPropertyIdPropertyDescriptor(object); + addMonitoringPropertyResourcePropertyDescriptor(object); } return itemPropertyDescriptors; } /** - * This adds a property descriptor for the Name feature. + * This adds a property descriptor for the Monitoring Property Name feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - protected void addNamePropertyDescriptor(Object object) { + protected void addMonitoringPropertyNamePropertyDescriptor(Object object) { itemPropertyDescriptors.add (createItemPropertyDescriptor (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), - getString("_UI_MonitoringProperty_name_feature"), - getString("_UI_PropertyDescriptor_description", "_UI_MonitoringProperty_name_feature", "_UI_MonitoringProperty_type"), - MonitoringPackage.Literals.MONITORING_PROPERTY__NAME, + getString("_UI_Martpublisher_monitoringPropertyName_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Martpublisher_monitoringPropertyName_feature", "_UI_Martpublisher_type"), + MonitoringPackage.Literals.MARTPUBLISHER__MONITORING_PROPERTY_NAME, true, false, false, @@ -100,19 +89,19 @@ public class MonitoringPropertyItemProvider } /** - * This adds a property descriptor for the Value feature. + * This adds a property descriptor for the Monitoring Property Id feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - protected void addValuePropertyDescriptor(Object object) { + protected void addMonitoringPropertyIdPropertyDescriptor(Object object) { itemPropertyDescriptors.add (createItemPropertyDescriptor (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), - getString("_UI_MonitoringProperty_value_feature"), - getString("_UI_PropertyDescriptor_description", "_UI_MonitoringProperty_value_feature", "_UI_MonitoringProperty_type"), - MonitoringPackage.Literals.MONITORING_PROPERTY__VALUE, + getString("_UI_Martpublisher_monitoringPropertyId_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Martpublisher_monitoringPropertyId_feature", "_UI_Martpublisher_type"), + MonitoringPackage.Literals.MARTPUBLISHER__MONITORING_PROPERTY_ID, true, false, false, @@ -122,19 +111,19 @@ public class MonitoringPropertyItemProvider } /** - * This adds a property descriptor for the Id feature. + * This adds a property descriptor for the Monitoring Property Resource feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - protected void addIdPropertyDescriptor(Object object) { + protected void addMonitoringPropertyResourcePropertyDescriptor(Object object) { itemPropertyDescriptors.add (createItemPropertyDescriptor (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), - getString("_UI_MonitoringProperty_Id_feature"), - getString("_UI_PropertyDescriptor_description", "_UI_MonitoringProperty_Id_feature", "_UI_MonitoringProperty_type"), - MonitoringPackage.Literals.MONITORING_PROPERTY__ID, + getString("_UI_Martpublisher_monitoringPropertyResource_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Martpublisher_monitoringPropertyResource_feature", "_UI_Martpublisher_type"), + MonitoringPackage.Literals.MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE, true, false, false, @@ -144,14 +133,14 @@ public class MonitoringPropertyItemProvider } /** - * This returns MonitoringProperty.gif. + * This returns Martpublisher.gif. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object getImage(Object object) { - return overlayImage(object, getResourceLocator().getImage("full/obj16/MonitoringProperty")); + return overlayImage(object, getResourceLocator().getImage("full/obj16/Martpublisher")); } /** @@ -162,10 +151,10 @@ public class MonitoringPropertyItemProvider */ @Override public String getText(Object object) { - String label = ((MonitoringProperty)object).getName(); + String label = ((Martpublisher)object).getMonitoringPropertyName(); return label == null || label.length() == 0 ? - getString("_UI_MonitoringProperty_type") : - getString("_UI_MonitoringProperty_type") + " " + label; + getString("_UI_Martpublisher_type") : + getString("_UI_Martpublisher_type") + " " + label; } @@ -180,10 +169,10 @@ public class MonitoringPropertyItemProvider public void notifyChanged(Notification notification) { updateChildren(notification); - switch (notification.getFeatureID(MonitoringProperty.class)) { - case MonitoringPackage.MONITORING_PROPERTY__NAME: - case MonitoringPackage.MONITORING_PROPERTY__VALUE: - case MonitoringPackage.MONITORING_PROPERTY__ID: + switch (notification.getFeatureID(Martpublisher.class)) { + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_NAME: + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_ID: + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE: fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); return; } diff --git a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringItemProviderAdapterFactory.java b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringItemProviderAdapterFactory.java index 2392515..0af5520 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringItemProviderAdapterFactory.java +++ b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringItemProviderAdapterFactory.java @@ -81,52 +81,6 @@ public class MonitoringItemProviderAdapterFactory extends MonitoringAdapterFacto supportedTypes.add(IItemPropertySource.class); } - /** - * This keeps track of the one adapter used for all {@link monitoring.MonitoringProperty} instances. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - protected MonitoringPropertyItemProvider monitoringPropertyItemProvider; - - /** - * This creates an adapter for a {@link monitoring.MonitoringProperty}. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public Adapter createMonitoringPropertyAdapter() { - if (monitoringPropertyItemProvider == null) { - monitoringPropertyItemProvider = new MonitoringPropertyItemProvider(this); - } - - return monitoringPropertyItemProvider; - } - - /** - * This keeps track of the one adapter used for all {@link monitoring.MonitoringPropertyArray} instances. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - protected MonitoringPropertyArrayItemProvider monitoringPropertyArrayItemProvider; - - /** - * This creates an adapter for a {@link monitoring.MonitoringPropertyArray}. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public Adapter createMonitoringPropertyArrayAdapter() { - if (monitoringPropertyArrayItemProvider == null) { - monitoringPropertyArrayItemProvider = new MonitoringPropertyArrayItemProvider(this); - } - - return monitoringPropertyArrayItemProvider; - } - /** * This keeps track of the one adapter used for all {@link monitoring.Sensor} instances. * <!-- begin-user-doc --> @@ -220,26 +174,49 @@ public class MonitoringItemProviderAdapterFactory extends MonitoringAdapterFacto } /** - * This keeps track of the one adapter used for all {@link monitoring.Monitoringproperties} instances. + * This keeps track of the one adapter used for all {@link monitoring.Monitoringproperty} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MonitoringpropertyItemProvider monitoringpropertyItemProvider; + + /** + * This creates an adapter for a {@link monitoring.Monitoringproperty}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createMonitoringpropertyAdapter() { + if (monitoringpropertyItemProvider == null) { + monitoringpropertyItemProvider = new MonitoringpropertyItemProvider(this); + } + + return monitoringpropertyItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link monitoring.Martpublisher} instances. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - protected MonitoringpropertiesItemProvider monitoringpropertiesItemProvider; + protected MartpublisherItemProvider martpublisherItemProvider; /** - * This creates an adapter for a {@link monitoring.Monitoringproperties}. + * This creates an adapter for a {@link monitoring.Martpublisher}. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override - public Adapter createMonitoringpropertiesAdapter() { - if (monitoringpropertiesItemProvider == null) { - monitoringpropertiesItemProvider = new MonitoringpropertiesItemProvider(this); + public Adapter createMartpublisherAdapter() { + if (martpublisherItemProvider == null) { + martpublisherItemProvider = new MartpublisherItemProvider(this); } - return monitoringpropertiesItemProvider; + return martpublisherItemProvider; } /** @@ -341,13 +318,12 @@ public class MonitoringItemProviderAdapterFactory extends MonitoringAdapterFacto * @generated */ public void dispose() { - if (monitoringPropertyItemProvider != null) monitoringPropertyItemProvider.dispose(); - if (monitoringPropertyArrayItemProvider != null) monitoringPropertyArrayItemProvider.dispose(); if (sensorItemProvider != null) sensorItemProvider.dispose(); if (datagathererItemProvider != null) datagathererItemProvider.dispose(); if (processorItemProvider != null) processorItemProvider.dispose(); if (publisherItemProvider != null) publisherItemProvider.dispose(); - if (monitoringpropertiesItemProvider != null) monitoringpropertiesItemProvider.dispose(); + if (monitoringpropertyItemProvider != null) monitoringpropertyItemProvider.dispose(); + if (martpublisherItemProvider != null) martpublisherItemProvider.dispose(); } } diff --git a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringPropertyArrayItemProvider.java b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringPropertyArrayItemProvider.java deleted file mode 100644 index 0067c3c..0000000 --- a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringPropertyArrayItemProvider.java +++ /dev/null @@ -1,178 +0,0 @@ -/** - * Copyright (c) 2015-2017 Obeo, Inria - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * - William Piers <william.piers@obeo.fr> - * - Philippe Merle <philippe.merle@inria.fr> - * - Faiez Zalila <faiez.zalila@inria.fr> - */ -package monitoring.provider; - - -import java.util.Collection; -import java.util.List; - -import monitoring.MonitoringFactory; -import monitoring.MonitoringPackage; -import monitoring.MonitoringPropertyArray; - -import org.eclipse.emf.common.notify.AdapterFactory; -import org.eclipse.emf.common.notify.Notification; - -import org.eclipse.emf.common.util.ResourceLocator; - -import org.eclipse.emf.ecore.EStructuralFeature; - -import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; -import org.eclipse.emf.edit.provider.IItemLabelProvider; -import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; -import org.eclipse.emf.edit.provider.IItemPropertySource; -import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; -import org.eclipse.emf.edit.provider.ITreeItemContentProvider; -import org.eclipse.emf.edit.provider.ItemProviderAdapter; -import org.eclipse.emf.edit.provider.ViewerNotification; - -/** - * This is the item provider adapter for a {@link monitoring.MonitoringPropertyArray} object. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ -public class MonitoringPropertyArrayItemProvider - extends ItemProviderAdapter - implements - IEditingDomainItemProvider, - IStructuredItemContentProvider, - ITreeItemContentProvider, - IItemLabelProvider, - IItemPropertySource { - /** - * This constructs an instance from a factory and a notifier. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public MonitoringPropertyArrayItemProvider(AdapterFactory adapterFactory) { - super(adapterFactory); - } - - /** - * This returns the property descriptors for the adapted class. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { - if (itemPropertyDescriptors == null) { - super.getPropertyDescriptors(object); - - } - return itemPropertyDescriptors; - } - - /** - * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an - * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or - * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) { - if (childrenFeatures == null) { - super.getChildrenFeatures(object); - childrenFeatures.add(MonitoringPackage.Literals.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES); - } - return childrenFeatures; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - protected EStructuralFeature getChildFeature(Object object, Object child) { - // Check the type of the specified child object and return the proper feature to use for - // adding (see {@link AddCommand}) it as a child. - - return super.getChildFeature(object, child); - } - - /** - * This returns MonitoringPropertyArray.gif. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public Object getImage(Object object) { - return overlayImage(object, getResourceLocator().getImage("full/obj16/MonitoringPropertyArray")); - } - - /** - * This returns the label text for the adapted class. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public String getText(Object object) { - return getString("_UI_MonitoringPropertyArray_type"); - } - - - /** - * This handles model notifications by calling {@link #updateChildren} to update any cached - * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public void notifyChanged(Notification notification) { - updateChildren(notification); - - switch (notification.getFeatureID(MonitoringPropertyArray.class)) { - case MonitoringPackage.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES: - fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); - return; - } - super.notifyChanged(notification); - } - - /** - * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children - * that can be created under this object. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { - super.collectNewChildDescriptors(newChildDescriptors, object); - - newChildDescriptors.add - (createChildParameter - (MonitoringPackage.Literals.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES, - MonitoringFactory.eINSTANCE.createMonitoringProperty())); - } - - /** - * Return the resource locator for this item provider's resources. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public ResourceLocator getResourceLocator() { - return MonitoringEditPlugin.INSTANCE; - } - -} diff --git a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringpropertiesItemProvider.java b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringpropertyItemProvider.java similarity index 50% rename from de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringpropertiesItemProvider.java rename to de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringpropertyItemProvider.java index cfaf3d3..f9a2412 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringpropertiesItemProvider.java +++ b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/MonitoringpropertyItemProvider.java @@ -18,34 +18,38 @@ import java.util.List; import monitoring.MonitoringFactory; import monitoring.MonitoringPackage; -import monitoring.Monitoringproperties; +import monitoring.Monitoringproperty; -import org.eclipse.cmf.occi.core.provider.MixinBaseItemProvider; +import org.eclipse.cmf.occi.core.OCCIPackage; + +import org.eclipse.cmf.occi.core.provider.LinkItemProvider; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.util.ResourceLocator; -import org.eclipse.emf.ecore.EStructuralFeature; - +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; import org.eclipse.emf.edit.provider.ViewerNotification; +import org.modmacao.occi.platform.PlatformFactory; + /** - * This is the item provider adapter for a {@link monitoring.Monitoringproperties} object. + * This is the item provider adapter for a {@link monitoring.Monitoringproperty} object. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ -public class MonitoringpropertiesItemProvider extends MixinBaseItemProvider { +public class MonitoringpropertyItemProvider extends LinkItemProvider { /** * This constructs an instance from a factory and a notifier. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - public MonitoringpropertiesItemProvider(AdapterFactory adapterFactory) { + public MonitoringpropertyItemProvider(AdapterFactory adapterFactory) { super(adapterFactory); } @@ -60,49 +64,65 @@ public class MonitoringpropertiesItemProvider extends MixinBaseItemProvider { if (itemPropertyDescriptors == null) { super.getPropertyDescriptors(object); + addMonitoringPropertyNamePropertyDescriptor(object); + addMonitoringPropertyValuePropertyDescriptor(object); } return itemPropertyDescriptors; } /** - * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an - * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or - * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * This adds a property descriptor for the Monitoring Property Name feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - @Override - public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) { - if (childrenFeatures == null) { - super.getChildrenFeatures(object); - childrenFeatures.add(MonitoringPackage.Literals.MONITORINGPROPERTIES__MONITORING_PROPERTIES); - } - return childrenFeatures; + protected void addMonitoringPropertyNamePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Monitoringproperty_monitoringPropertyName_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Monitoringproperty_monitoringPropertyName_feature", "_UI_Monitoringproperty_type"), + MonitoringPackage.Literals.MONITORINGPROPERTY__MONITORING_PROPERTY_NAME, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); } /** + * This adds a property descriptor for the Monitoring Property Value feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - @Override - protected EStructuralFeature getChildFeature(Object object, Object child) { - // Check the type of the specified child object and return the proper feature to use for - // adding (see {@link AddCommand}) it as a child. - - return super.getChildFeature(object, child); + protected void addMonitoringPropertyValuePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Monitoringproperty_monitoringPropertyValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Monitoringproperty_monitoringPropertyValue_feature", "_UI_Monitoringproperty_type"), + MonitoringPackage.Literals.MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); } /** - * This returns Monitoringproperties.gif. + * This returns Monitoringproperty.gif. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object getImage(Object object) { - return overlayImage(object, getResourceLocator().getImage("full/obj16/Monitoringproperties")); + return overlayImage(object, getResourceLocator().getImage("full/obj16/Monitoringproperty")); } /** @@ -113,7 +133,10 @@ public class MonitoringpropertiesItemProvider extends MixinBaseItemProvider { */ @Override public String getText(Object object) { - return getString("_UI_Monitoringproperties_type"); + String label = ((Monitoringproperty)object).getId(); + return label == null || label.length() == 0 ? + getString("_UI_Monitoringproperty_type") : + getString("_UI_Monitoringproperty_type") + " " + label; } @@ -128,9 +151,10 @@ public class MonitoringpropertiesItemProvider extends MixinBaseItemProvider { public void notifyChanged(Notification notification) { updateChildren(notification); - switch (notification.getFeatureID(Monitoringproperties.class)) { - case MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES: - fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + switch (notification.getFeatureID(Monitoringproperty.class)) { + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_NAME: + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); return; } super.notifyChanged(notification); @@ -149,8 +173,28 @@ public class MonitoringpropertiesItemProvider extends MixinBaseItemProvider { newChildDescriptors.add (createChildParameter - (MonitoringPackage.Literals.MONITORINGPROPERTIES__MONITORING_PROPERTIES, - MonitoringFactory.eINSTANCE.createMonitoringPropertyArray())); + (OCCIPackage.Literals.ENTITY__PARTS, + MonitoringFactory.eINSTANCE.createMartpublisher())); + + newChildDescriptors.add + (createChildParameter + (OCCIPackage.Literals.ENTITY__PARTS, + PlatformFactory.eINSTANCE.createApp_tpl())); + + newChildDescriptors.add + (createChildParameter + (OCCIPackage.Literals.ENTITY__PARTS, + PlatformFactory.eINSTANCE.createRes_tpl())); + + newChildDescriptors.add + (createChildParameter + (OCCIPackage.Literals.ENTITY__PARTS, + PlatformFactory.eINSTANCE.createDatabase())); + + newChildDescriptors.add + (createChildParameter + (OCCIPackage.Literals.ENTITY__PARTS, + PlatformFactory.eINSTANCE.createDatabaselink())); } /** diff --git a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/ProcessorItemProvider.java b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/ProcessorItemProvider.java index c6e12b8..071a9cd 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/ProcessorItemProvider.java +++ b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/ProcessorItemProvider.java @@ -17,6 +17,7 @@ import java.util.Collection; import java.util.List; import monitoring.MonitoringFactory; +import monitoring.MonitoringPackage; import monitoring.Processor; import org.eclipse.cmf.occi.core.OCCIPackage; @@ -26,7 +27,10 @@ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; import org.modmacao.occi.platform.provider.ComponentItemProvider; @@ -58,10 +62,33 @@ public class ProcessorItemProvider extends ComponentItemProvider { if (itemPropertyDescriptors == null) { super.getPropertyDescriptors(object); + addGathererAddressPropertyDescriptor(object); } return itemPropertyDescriptors; } + /** + * This adds a property descriptor for the Gatherer Address feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addGathererAddressPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Processor_gathererAddress_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Processor_gathererAddress_feature", "_UI_Processor_type"), + MonitoringPackage.Literals.PROCESSOR__GATHERER_ADDRESS, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + /** * This returns Processor.gif. * <!-- begin-user-doc --> @@ -98,6 +125,12 @@ public class ProcessorItemProvider extends ComponentItemProvider { @Override public void notifyChanged(Notification notification) { updateChildren(notification); + + switch (notification.getFeatureID(Processor.class)) { + case MonitoringPackage.PROCESSOR__GATHERER_ADDRESS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } super.notifyChanged(notification); } @@ -115,7 +148,12 @@ public class ProcessorItemProvider extends ComponentItemProvider { newChildDescriptors.add (createChildParameter (OCCIPackage.Literals.ENTITY__PARTS, - MonitoringFactory.eINSTANCE.createMonitoringproperties())); + MonitoringFactory.eINSTANCE.createMartpublisher())); + + newChildDescriptors.add + (createChildParameter + (OCCIPackage.Literals.RESOURCE__LINKS, + MonitoringFactory.eINSTANCE.createMonitoringproperty())); } /** diff --git a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/PublisherItemProvider.java b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/PublisherItemProvider.java index e69b724..b59182b 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/PublisherItemProvider.java +++ b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/PublisherItemProvider.java @@ -17,6 +17,7 @@ import java.util.Collection; import java.util.List; import monitoring.MonitoringFactory; +import monitoring.MonitoringPackage; import monitoring.Publisher; import org.eclipse.cmf.occi.core.OCCIPackage; @@ -26,7 +27,10 @@ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; import org.modmacao.occi.platform.provider.ComponentItemProvider; @@ -58,10 +62,33 @@ public class PublisherItemProvider extends ComponentItemProvider { if (itemPropertyDescriptors == null) { super.getPropertyDescriptors(object); + addPublisherEndpointPropertyDescriptor(object); } return itemPropertyDescriptors; } + /** + * This adds a property descriptor for the Publisher Endpoint feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addPublisherEndpointPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_Publisher_publisherEndpoint_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Publisher_publisherEndpoint_feature", "_UI_Publisher_type"), + MonitoringPackage.Literals.PUBLISHER__PUBLISHER_ENDPOINT, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + /** * This returns Publisher.gif. * <!-- begin-user-doc --> @@ -98,6 +125,12 @@ public class PublisherItemProvider extends ComponentItemProvider { @Override public void notifyChanged(Notification notification) { updateChildren(notification); + + switch (notification.getFeatureID(Publisher.class)) { + case MonitoringPackage.PUBLISHER__PUBLISHER_ENDPOINT: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } super.notifyChanged(notification); } @@ -115,7 +148,12 @@ public class PublisherItemProvider extends ComponentItemProvider { newChildDescriptors.add (createChildParameter (OCCIPackage.Literals.ENTITY__PARTS, - MonitoringFactory.eINSTANCE.createMonitoringproperties())); + MonitoringFactory.eINSTANCE.createMartpublisher())); + + newChildDescriptors.add + (createChildParameter + (OCCIPackage.Literals.RESOURCE__LINKS, + MonitoringFactory.eINSTANCE.createMonitoringproperty())); } /** diff --git a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/SensorItemProvider.java b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/SensorItemProvider.java index e7f38f8..04a6eaf 100644 --- a/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/SensorItemProvider.java +++ b/de.ugoe.cs.rwm.mocci.model.edit/src-gen/monitoring/provider/SensorItemProvider.java @@ -268,7 +268,12 @@ public class SensorItemProvider extends ApplicationItemProvider { newChildDescriptors.add (createChildParameter (OCCIPackage.Literals.ENTITY__PARTS, - MonitoringFactory.eINSTANCE.createMonitoringproperties())); + MonitoringFactory.eINSTANCE.createMartpublisher())); + + newChildDescriptors.add + (createChildParameter + (OCCIPackage.Literals.RESOURCE__LINKS, + MonitoringFactory.eINSTANCE.createMonitoringproperty())); } /** diff --git a/de.ugoe.cs.rwm.mocci.model/.classpath b/de.ugoe.cs.rwm.mocci.model/.classpath index ba95638..9f26f94 100644 --- a/de.ugoe.cs.rwm.mocci.model/.classpath +++ b/de.ugoe.cs.rwm.mocci.model/.classpath @@ -3,5 +3,6 @@ <classpathentry kind="src" path="src-gen"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/> <classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/de.ugoe.cs.rwm.mocci.model/.settings/org.eclipse.buildship.core.prefs b/de.ugoe.cs.rwm.mocci.model/.settings/org.eclipse.buildship.core.prefs index 1752c93..dacbfbb 100644 --- a/de.ugoe.cs.rwm.mocci.model/.settings/org.eclipse.buildship.core.prefs +++ b/de.ugoe.cs.rwm.mocci.model/.settings/org.eclipse.buildship.core.prefs @@ -1,2 +1,2 @@ -connection.project.dir=../de.ugoe.cs.rwm.mocci.connector +connection.project.dir=../de.ugoe.cs.rwm.mocci.connector.dummy eclipse.preferences.version=1 diff --git a/de.ugoe.cs.rwm.mocci.model/model/monitoring.ecore b/de.ugoe.cs.rwm.mocci.model/model/monitoring.ecore index 827421a..a76cef0 100644 --- a/de.ugoe.cs.rwm.mocci.model/model/monitoring.ecore +++ b/de.ugoe.cs.rwm.mocci.model/model/monitoring.ecore @@ -18,27 +18,6 @@ </eClassifiers> <eClassifiers xsi:type="ecore:EDataType" name="Second" instanceClassName="java.lang.String"/> <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/> - <eClassifiers xsi:type="ecore:EClass" name="MonitoringProperty"> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="#//String"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value=""/> - </eAnnotations> - </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="#//String"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value=""/> - </eAnnotations> - </eStructuralFeatures> - <eStructuralFeatures xsi:type="ecore:EAttribute" name="Id" lowerBound="1" eType="#//String"> - <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> - <details key="documentation" value=""/> - </eAnnotations> - </eStructuralFeatures> - </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="MonitoringPropertyArray"> - <eStructuralFeatures xsi:type="ecore:EReference" name="monitoringpropertyarrayValues" - upperBound="-1" eType="#//MonitoringProperty" containment="true"/> - </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="Sensor" eSuperTypes="platform:/plugin/org.modmacao.occi.platform/model/platform.ecore#//Application"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="Sensor Component"/> @@ -103,21 +82,66 @@ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="Processor Resource"/> </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="gathererAddress" eType="#//String"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value=""/> + </eAnnotations> + </eStructuralFeatures> </eClassifiers> <eClassifiers xsi:type="ecore:EClass" name="Publisher" eSuperTypes="platform:/plugin/org.modmacao.occi.platform/model/platform.ecore#//Component"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="Publisher Resource"/> </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="publisherEndpoint" lowerBound="1" + eType="#//String"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value=""/> + </eAnnotations> + </eStructuralFeatures> </eClassifiers> - <eClassifiers xsi:type="ecore:EClass" name="Monitoringproperties" eSuperTypes="platform:/plugin/org.eclipse.cmf.occi.core/model/OCCI.ecore#//MixinBase"> + <eClassifiers xsi:type="ecore:EClass" name="Monitoringproperty" eSuperTypes="platform:/plugin/org.eclipse.cmf.occi.core/model/OCCI.ecore#//Link"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value="MonitoringProperty Component"/> + </eAnnotations> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="targetConstraint"/> + </eAnnotations> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"> + <details key="targetConstraint" value="self.target.oclIsKindOf(monitoring::Sensor)"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="monitoringPropertyName" + lowerBound="1" eType="#//String"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value=""/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="monitoringPropertyValue" + eType="#//String"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value=""/> + </eAnnotations> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Martpublisher" eSuperTypes="platform:/plugin/org.eclipse.cmf.occi.core/model/OCCI.ecore#//MixinBase"> <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> <details key="constraints" value="appliesConstraint"/> </eAnnotations> <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"> - <details key="appliesConstraint" value="self.entity.oclIsKindOf(occi::Resource)"/> + <details key="appliesConstraint" value="self.entity.oclIsKindOf(monitoring::Publisher)"/> </eAnnotations> - <eStructuralFeatures xsi:type="ecore:EReference" name="monitoringProperties" eType="#//MonitoringPropertyArray" - containment="true"> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="monitoringPropertyName" + lowerBound="1" eType="#//String"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value=""/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="monitoringPropertyId" eType="#//String"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="documentation" value=""/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="monitoringPropertyResource" + lowerBound="1" eType="#//String"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value=""/> </eAnnotations> diff --git a/de.ugoe.cs.rwm.mocci.model/model/monitoring.genmodel b/de.ugoe.cs.rwm.mocci.model/model/monitoring.genmodel index 2c09698..9b30c56 100644 --- a/de.ugoe.cs.rwm.mocci.model/model/monitoring.genmodel +++ b/de.ugoe.cs.rwm.mocci.model/model/monitoring.genmodel @@ -15,24 +15,6 @@ <genDataTypes> <ecoreDataType href="monitoring.ecore#//String"/> </genDataTypes> - <genClasses> - <ecoreClass href="monitoring.ecore#//MonitoringProperty"/> - <genFeatures createChild="false"> - <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//MonitoringProperty/name"/> - </genFeatures> - <genFeatures createChild="false"> - <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//MonitoringProperty/value"/> - </genFeatures> - <genFeatures createChild="false"> - <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//MonitoringProperty/Id"/> - </genFeatures> - </genClasses> - <genClasses> - <ecoreClass href="monitoring.ecore#//MonitoringPropertyArray"/> - <genFeatures property="None" children="true" createChild="true"> - <ecoreFeature xsi:type="ecore:EReference" href="monitoring.ecore#//MonitoringPropertyArray/monitoringpropertyarrayValues"/> - </genFeatures> - </genClasses> <genClasses> <ecoreClass href="monitoring.ecore#//Sensor"/> <genFeatures createChild="false"> @@ -68,14 +50,35 @@ </genClasses> <genClasses> <ecoreClass href="monitoring.ecore#//Processor"/> + <genFeatures createChild="false"> + <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//Processor/gathererAddress"/> + </genFeatures> </genClasses> <genClasses> <ecoreClass href="monitoring.ecore#//Publisher"/> + <genFeatures createChild="false"> + <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//Publisher/publisherEndpoint"/> + </genFeatures> </genClasses> <genClasses> - <ecoreClass href="monitoring.ecore#//Monitoringproperties"/> - <genFeatures property="None" children="true" createChild="true"> - <ecoreFeature xsi:type="ecore:EReference" href="monitoring.ecore#//Monitoringproperties/monitoringProperties"/> + <ecoreClass href="monitoring.ecore#//Monitoringproperty"/> + <genFeatures createChild="false"> + <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//Monitoringproperty/monitoringPropertyName"/> + </genFeatures> + <genFeatures createChild="false"> + <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//Monitoringproperty/monitoringPropertyValue"/> + </genFeatures> + </genClasses> + <genClasses> + <ecoreClass href="monitoring.ecore#//Martpublisher"/> + <genFeatures createChild="false"> + <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//Martpublisher/monitoringPropertyName"/> + </genFeatures> + <genFeatures createChild="false"> + <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//Martpublisher/monitoringPropertyId"/> + </genFeatures> + <genFeatures createChild="false"> + <ecoreFeature xsi:type="ecore:EAttribute" href="monitoring.ecore#//Martpublisher/monitoringPropertyResource"/> </genFeatures> </genClasses> </genPackages> diff --git a/de.ugoe.cs.rwm.mocci.model/model/monitoring.occie b/de.ugoe.cs.rwm.mocci.model/model/monitoring.occie index 4cd16a3..a8d07fa 100644 --- a/de.ugoe.cs.rwm.mocci.model/model/monitoring.occie +++ b/de.ugoe.cs.rwm.mocci.model/model/monitoring.occie @@ -3,37 +3,40 @@ <import href="http://schemas.modmacao.org/occi/platform#/"/> <import href="http://schemas.ogf.org/occi/core#/"/> <kinds name="Sensor" scheme="http://schemas.ugoe.cs.rwm/monitoring#" title="Sensor Component"> - <attributes name="occi.sensor.timebase" mutable="true" description="Base time reference (ISO8601)" type="//@types.0"/> - <attributes name="occi.sensor.timestart" mutable="true" description="Start time offset (seconds)" type="//@types.1"/> - <attributes name="occi.sensor.timestop" mutable="true" type="//@types.1"/> - <attributes name="occi.sensor.period" mutable="true" required="true" description="Time between two following measurements (seconds)" type="//@types.1"/> - <attributes name="occi.sensor.granularity" mutable="true" description="Granularity of time measument (seconds)" type="//@types.1"/> - <attributes name="occi.sensor.accuracy" mutable="true" description="Accuracy of time measument (seconds)" type="//@types.1"/> + <attributes name="occi.sensor.timebase" description="Base time reference (ISO8601)" type="//@types.0"/> + <attributes name="occi.sensor.timestart" description="Start time offset (seconds)" type="//@types.1"/> + <attributes name="occi.sensor.timestop" type="//@types.1"/> + <attributes name="occi.sensor.period" required="true" description="Time between two following measurements (seconds)" type="//@types.1"/> + <attributes name="occi.sensor.granularity" description="Granularity of time measument (seconds)" type="//@types.1"/> + <attributes name="occi.sensor.accuracy" description="Accuracy of time measument (seconds)" type="//@types.1"/> <parent href="http://schemas.modmacao.org/occi/platform#//@kinds[term='application']"/> </kinds> <kinds name="DataGatherer" scheme="http://schemas.ugoe.cs.rwm/monitoring#" title="DataGatherer Resource"> - <attributes name="occi.collector.period" mutable="true" required="true" description="Time between two following measurements (seconds)." type="//@types.1"/> - <attributes name="occi.collector.granularity" mutable="true" description="Granularity of time measurement (seconds)." type="//@types.1"/> - <attributes name="occi.collector.accuracy" mutable="true" description="Accuracy of time measurement (seconds)." type="//@types.1"/> + <attributes name="occi.collector.period" required="true" description="Time between two following measurements (seconds)." type="//@types.1"/> + <attributes name="occi.collector.granularity" description="Granularity of time measurement (seconds)." type="//@types.1"/> + <attributes name="occi.collector.accuracy" description="Accuracy of time measurement (seconds)." type="//@types.1"/> <parent href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> </kinds> <kinds name="Processor" scheme="http://schemas.ugoe.cs.rwm/monitoring#" title="Processor Resource"> + <attributes name="gatherer.address" type="//@types.2"/> <parent href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> </kinds> <kinds name="Publisher" scheme="http://schemas.ugoe.cs.rwm/monitoring#" title="Publisher Resource"> + <attributes name="publisher.endpoint" required="true" type="//@types.2"/> <parent href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> </kinds> - <mixins name="MonitoringProperties" scheme="http://schemas.ugoe.cs.rwm/monitoring#" title="MonitoringProperty Mixin"> - <attributes name="monitoring.properties" mutable="true" type="//@types.4"/> - <applies href="http://schemas.ogf.org/occi/core#//@kinds[term='resource']"/> + <kinds name="MonitoringProperty" scheme="http://schemas.ugoe.cs.rwm/monitoring#" title="MonitoringProperty Component" target="//@kinds[term='sensor']"> + <attributes name="monitoring.property.name" mutable="false" required="true" description="" type="//@types.2"/> + <attributes name="monitoring.property.value" description="" type="//@types.2"/> + <parent href="http://schemas.ogf.org/occi/core#//@kinds[term='link']"/> + <source href="http://schemas.ogf.org/occi/core#//@kinds[term='resource']"/> + </kinds> + <mixins name="MartPublisher" scheme="http://schemas.ugoe.cs.rwm/monitoring#" title="MartPublisher Mixin" applies="//@kinds[term='publisher']"> + <attributes name="monitoring.property.name" mutable="false" required="true" description="" type="//@types.2"/> + <attributes name="monitoring.property.id" description="" type="//@types.2"/> + <attributes name="monitoring.property.resource" mutable="false" required="true" description="" type="//@types.2"/> </mixins> <types xsi:type="occi:StringType" name="DateTime" pattern="^(\d{4}((-)?(0[1-9]|1[0-2])((-)?(0[1-9]|[1-2][0-9]|3[0-1])(T(24:00(:00(\.[0]+)?)?|(([0-1][0-9]|2[0-3])(:)[0-5][0-9])((:)[0-5][0-9](\.[\d]+)?)?)((\+|-)(14:00|(0[0-9]|1[0-3])(:)[0-5][0-9])|Z))?)?)?)$"/> <types xsi:type="occi:StringType" name="Second"/> <types xsi:type="occi:StringType" name="String"/> - <types xsi:type="occi:RecordType" name="MonitoringProperty"> - <recordFields name="name" mutable="true" type="//@types.2"/> - <recordFields name="value" mutable="true" type="//@types.2"/> - <recordFields name="Id" mutable="true" type="//@types.2"/> - </types> - <types xsi:type="occi:ArrayType" name="MonitoringPropertyArray" type="//@types.3"/> </occi:Extension> diff --git a/de.ugoe.cs.rwm.mocci.model/new Extension diagram2.svg b/de.ugoe.cs.rwm.mocci.model/new Extension diagram2.svg new file mode 100644 index 0000000..fc6f236 --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.model/new Extension diagram2.svg @@ -0,0 +1,698 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-dasharray="none" shape-rendering="auto" font-family="'Dialog'" width="1276" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-interpolation="auto" color-rendering="auto" preserveAspectRatio="xMidYMid meet" font-size="12" viewBox="0 0 1276 629" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="629" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1"> +<!--Generated by the Batik Graphics2D SVG Generator--> +<defs id="genericDefs"/> +<g> +<defs id="defs1"> +<linearGradient x1="298" x2="788" y1="82" gradientUnits="userSpaceOnUse" y2="82" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient1" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="white" offset="0%"/> +<stop stop-opacity="1" stop-color="rgb(214,214,214)" offset="100%"/> +</linearGradient> +<linearGradient x1="334" x2="334" y1="118" gradientUnits="userSpaceOnUse" y2="309" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient2" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="550" x2="550" y1="118" gradientUnits="userSpaceOnUse" y2="261" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient3" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="298" x2="298" y1="334" gradientUnits="userSpaceOnUse" y2="461" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient4" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="730" x2="730" y1="334" gradientUnits="userSpaceOnUse" y2="413" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient5" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="694" x2="694" y1="380" gradientUnits="userSpaceOnUse" y2="427" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient6" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="550" x2="550" y1="334" gradientUnits="userSpaceOnUse" y2="381" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient7" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="958" x2="1264" y1="82" gradientUnits="userSpaceOnUse" y2="82" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient8" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="white" offset="0%"/> +<stop stop-opacity="1" stop-color="rgb(214,214,214)" offset="100%"/> +</linearGradient> +<linearGradient x1="982" x2="982" y1="110" gradientUnits="userSpaceOnUse" y2="173" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient9" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="1119" x2="1119" y1="136" gradientUnits="userSpaceOnUse" y2="183" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient10" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="154" x2="154" y1="526" gradientUnits="userSpaceOnUse" y2="589" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient11" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,242,196)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="526" x2="526" y1="538" gradientUnits="userSpaceOnUse" y2="617" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient12" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="rgb(187,221,255)" offset="0%"/> +<stop stop-opacity="1" stop-color="white" offset="100%"/> +</linearGradient> +<linearGradient x1="10" x2="108" y1="69" gradientUnits="userSpaceOnUse" y2="140" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient13" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="white" offset="0%"/> +<stop stop-opacity="1" stop-color="rgb(255,250,191)" offset="100%"/> +</linearGradient> +<linearGradient x1="10" x2="108" y1="-3" gradientUnits="userSpaceOnUse" y2="68" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient14" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="white" offset="0%"/> +<stop stop-opacity="1" stop-color="rgb(255,250,191)" offset="100%"/> +</linearGradient> +<linearGradient x1="166" x2="264" y1="-3" gradientUnits="userSpaceOnUse" y2="68" xlink:type="simple" xlink:actuate="onLoad" id="linearGradient15" xlink:show="other" spreadMethod="pad"> +<stop stop-opacity="1" stop-color="white" offset="0%"/> +<stop stop-opacity="1" stop-color="rgb(255,250,191)" offset="100%"/> +</linearGradient> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> +<path d="M297 81 L791 81 L791 320 L297 320 L297 81 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> +<path d="M297 81 L789 81 L789 318 L297 318 L297 81 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> +<path d="M498 86 L588 86 L588 106 L498 106 L498 86 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> +<path d="M498 86 L592 86 L592 106 L498 106 L498 86 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> +<path d="M333 117 L524 117 L524 312 L333 312 L333 117 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> +<path d="M333 117 L522 117 L522 310 L333 310 L333 117 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> +<path d="M381 122 L477 122 L477 142 L381 142 L381 122 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> +<path d="M338 147 L478 147 L478 165 L338 165 L338 147 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> +<path d="M338 147 L481 147 L481 165 L338 165 L338 147 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> +<path d="M338 163 L487 163 L487 181 L338 181 L338 163 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> +<path d="M338 163 L490 163 L490 181 L338 181 L338 163 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> +<path d="M338 179 L461 179 L461 197 L338 197 L338 179 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> +<path d="M338 179 L464 179 L464 197 L338 197 L338 179 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> +<path d="M338 195 L488 195 L488 213 L338 213 L338 195 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> +<path d="M338 195 L490 195 L490 213 L338 213 L338 195 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> +<path d="M338 211 L517 211 L517 229 L338 229 L338 211 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> +<path d="M338 211 L519 211 L519 229 L338 229 L338 211 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> +<path d="M338 227 L409 227 L409 245 L338 245 L338 227 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> +<path d="M338 227 L412 227 L412 245 L338 245 L338 227 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> +<path d="M338 243 L423 243 L423 261 L338 261 L338 243 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> +<path d="M338 243 L426 243 L426 261 L338 261 L338 243 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> +<path d="M338 259 L424 259 L424 277 L338 277 L338 259 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23"> +<path d="M338 259 L426 259 L426 277 L338 277 L338 259 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24"> +<path d="M338 275 L396 275 L396 293 L338 293 L338 275 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25"> +<path d="M338 275 L398 275 L398 293 L338 293 L338 275 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> +<path d="M338 291 L395 291 L395 309 L338 309 L338 291 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27"> +<path d="M338 291 L398 291 L398 309 L338 309 L338 291 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28"> +<path d="M334 145 L521 145 L521 309 L334 309 L334 145 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29"> +<path d="M549 117 L783 117 L783 264 L549 264 L549 117 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30"> +<path d="M549 117 L781 117 L781 262 L549 262 L549 117 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31"> +<path d="M620 122 L714 122 L714 142 L620 142 L620 122 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32"> +<path d="M554 147 L745 147 L745 165 L554 165 L554 147 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33"> +<path d="M554 147 L748 147 L748 165 L554 165 L554 147 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34"> +<path d="M554 163 L776 163 L776 181 L554 181 L554 163 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35"> +<path d="M554 163 L778 163 L778 181 L554 181 L554 163 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36"> +<path d="M554 179 L625 179 L625 197 L554 197 L554 179 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath37"> +<path d="M554 179 L628 179 L628 197 L554 197 L554 179 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath38"> +<path d="M554 195 L639 195 L639 213 L554 213 L554 195 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath39"> +<path d="M554 195 L642 195 L642 213 L554 213 L554 195 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath40"> +<path d="M554 211 L640 211 L640 229 L554 229 L554 211 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath41"> +<path d="M554 211 L642 211 L642 229 L554 229 L554 211 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath42"> +<path d="M554 227 L612 227 L612 245 L554 245 L554 227 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath43"> +<path d="M554 227 L614 227 L614 245 L554 245 L554 227 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath44"> +<path d="M554 243 L611 243 L611 261 L554 261 L554 243 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath45"> +<path d="M554 243 L614 243 L614 261 L554 261 L554 243 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath46"> +<path d="M550 145 L780 145 L780 261 L550 261 L550 145 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath47"> +<path d="M297 333 L513 333 L513 464 L297 464 L297 333 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath48"> +<path d="M297 333 L511 333 L511 462 L297 462 L297 333 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath49"> +<path d="M377 338 L435 338 L435 358 L377 358 L377 338 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath50"> +<path d="M302 363 L506 363 L506 381 L302 381 L302 363 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath51"> +<path d="M302 363 L509 363 L509 381 L302 381 L302 363 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath52"> +<path d="M302 379 L493 379 L493 397 L302 397 L302 379 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath53"> +<path d="M302 379 L495 379 L495 397 L302 397 L302 379 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath54"> +<path d="M302 395 L492 395 L492 413 L302 413 L302 395 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath55"> +<path d="M302 395 L495 395 L495 413 L302 413 L302 395 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath56"> +<path d="M302 411 L489 411 L489 429 L302 429 L302 411 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath57"> +<path d="M302 411 L492 411 L492 429 L302 429 L302 411 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath58"> +<path d="M302 427 L503 427 L503 445 L302 445 L302 427 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath59"> +<path d="M302 427 L505 427 L505 445 L302 445 L302 427 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath60"> +<path d="M302 443 L489 443 L489 461 L302 461 L302 443 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath61"> +<path d="M302 443 L491 443 L491 461 L302 461 L302 443 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath62"> +<path d="M298 361 L510 361 L510 461 L298 461 L298 361 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath63"> +<path d="M729 333 L956 333 L956 416 L729 416 L729 333 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath64"> +<path d="M729 333 L954 333 L954 414 L729 414 L729 333 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath65"> +<path d="M788 338 L899 338 L899 358 L788 358 L788 338 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath66"> +<path d="M734 363 L937 363 L937 381 L734 381 L734 363 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath67"> +<path d="M734 363 L940 363 L940 381 L734 381 L734 363 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath68"> +<path d="M734 379 L949 379 L949 397 L734 397 L734 379 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath69"> +<path d="M734 379 L951 379 L951 397 L734 397 L734 379 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath70"> +<path d="M734 395 L935 395 L935 413 L734 413 L734 395 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath71"> +<path d="M734 395 L937 395 L937 413 L734 413 L734 395 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath72"> +<path d="M730 361 L953 361 L953 413 L730 413 L730 361 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath73"> +<path d="M693 379 L867 379 L867 430 L693 430 L693 379 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath74"> +<path d="M693 379 L865 379 L865 428 L693 428 L693 379 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath75"> +<path d="M739 384 L822 384 L822 404 L739 404 L739 384 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath76"> +<path d="M698 409 L860 409 L860 427 L698 427 L698 409 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath77"> +<path d="M698 409 L862 409 L862 427 L698 427 L698 409 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath78"> +<path d="M694 407 L864 407 L864 427 L694 427 L694 407 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath79"> +<path d="M549 333 L746 333 L746 384 L549 384 L549 333 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath80"> +<path d="M549 333 L744 333 L744 382 L549 382 L549 333 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath81"> +<path d="M609 338 L687 338 L687 358 L609 358 L609 338 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath82"> +<path d="M554 363 L739 363 L739 381 L554 381 L554 363 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath83"> +<path d="M554 363 L742 363 L742 381 L554 381 L554 363 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath84"> +<path d="M550 361 L743 361 L743 381 L550 381 L550 361 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath85"> +<path d="M957 81 L1267 81 L1267 194 L957 194 L957 81 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath86"> +<path d="M957 81 L1265 81 L1265 192 L957 192 L957 81 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath87"> +<path d="M1083 86 L1138 86 L1138 106 L1083 106 L1083 86 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath88"> +<path d="M1083 86 L1142 86 L1142 106 L1083 106 L1083 86 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath89"> +<path d="M981 109 L1093 109 L1093 176 L981 176 L981 109 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath90"> +<path d="M981 109 L1091 109 L1091 174 L981 174 L981 109 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath91"> +<path d="M1011 114 L1063 114 L1063 134 L1011 134 L1011 114 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath92"> +<path d="M986 139 L1074 139 L1074 157 L986 157 L986 139 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath93"> +<path d="M986 139 L1076 139 L1076 157 L986 157 L986 139 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath94"> +<path d="M986 155 L1086 155 L1086 173 L986 173 L986 155 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath95"> +<path d="M986 155 L1088 155 L1088 173 L986 173 L986 155 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath96"> +<path d="M982 137 L1090 137 L1090 173 L982 173 L982 137 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath97"> +<path d="M1118 135 L1259 135 L1259 186 L1118 186 L1118 135 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath98"> +<path d="M1118 135 L1257 135 L1257 184 L1118 184 L1118 135 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath99"> +<path d="M1151 140 L1228 140 L1228 160 L1151 160 L1151 140 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath100"> +<path d="M1123 165 L1252 165 L1252 183 L1123 183 L1123 165 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath101"> +<path d="M1123 165 L1255 165 L1255 183 L1123 183 L1123 165 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath102"> +<path d="M1119 163 L1256 163 L1256 183 L1119 183 L1119 163 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath103"> +<path d="M153 525 L386 525 L386 592 L153 592 L153 525 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath104"> +<path d="M153 525 L384 525 L384 590 L153 590 L153 525 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath105"> +<path d="M190 530 L351 530 L351 550 L190 550 L190 530 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath106"> +<path d="M158 555 L379 555 L379 573 L158 573 L158 555 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath107"> +<path d="M158 555 L382 555 L382 573 L158 573 L158 555 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath108"> +<path d="M158 571 L375 571 L375 589 L158 589 L158 571 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath109"> +<path d="M158 571 L377 571 L377 589 L158 589 L158 571 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath110"> +<path d="M154 553 L383 553 L383 589 L154 589 L154 553 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath111"> +<path d="M525 537 L778 537 L778 620 L525 620 L525 537 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath112"> +<path d="M525 537 L776 537 L776 618 L525 618 L525 537 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath113"> +<path d="M595 542 L710 542 L710 562 L595 562 L595 542 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath114"> +<path d="M530 567 L751 567 L751 585 L530 585 L530 567 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath115"> +<path d="M530 567 L754 567 L754 585 L530 585 L530 567 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath116"> +<path d="M530 583 L726 583 L726 601 L530 601 L530 583 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath117"> +<path d="M530 583 L728 583 L728 601 L530 601 L530 583 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath118"> +<path d="M530 599 L771 599 L771 617 L530 617 L530 599 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath119"> +<path d="M530 599 L774 599 L774 617 L530 617 L530 599 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath120"> +<path d="M526 565 L775 565 L775 617 L526 617 L526 565 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath121"> +<path d="M9 81 L111 81 L111 130 L9 130 L9 81 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath122"> +<path d="M9 81 L109 81 L109 128 L9 128 L9 81 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath123"> +<path d="M20 86 L101 86 L101 106 L20 106 L20 86 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath124"> +<path d="M14 111 L106 111 L106 127 L14 127 L14 111 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath125"> +<path d="M10 109 L108 109 L108 127 L10 127 L10 109 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath126"> +<path d="M9 9 L111 9 L111 58 L9 58 L9 9 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath127"> +<path d="M9 9 L109 9 L109 56 L9 56 L9 9 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath128"> +<path d="M30 14 L91 14 L91 34 L30 34 L30 14 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath129"> +<path d="M14 39 L106 39 L106 55 L14 55 L14 39 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath130"> +<path d="M10 37 L108 37 L108 55 L10 55 L10 37 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath131"> +<path d="M165 9 L267 9 L267 58 L165 58 L165 9 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath132"> +<path d="M165 9 L265 9 L265 56 L165 56 L165 9 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath133"> +<path d="M190 14 L242 14 L242 34 L190 34 L190 14 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath134"> +<path d="M170 39 L262 39 L262 55 L170 55 L170 39 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath135"> +<path d="M166 37 L264 37 L264 55 L166 55 L166 37 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath136"> +<path d="M-1 -1 L1277 -1 L1277 630 L-1 630 L-1 -1 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath137"> +<path d="M1088 145 L1101 145 L1101 158 L1088 158 L1088 145 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath138"> +<path d="M731 259 L744 259 L744 273 L731 273 L731 259 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath139"> +<path d="M408 307 L421 307 L421 320 L408 320 L408 307 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath140"> +<path d="M680 259 L693 259 L693 273 L680 273 L680 259 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath141"> +<path d="M624 259 L636 259 L636 273 L624 273 L624 259 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath142"> +<path d="M642 379 L653 379 L653 391 L642 391 L642 379 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath143"> +<path d="M318 475 L363 475 L363 491 L318 491 L318 475 Z"/> +</clipPath> +<clipPath clipPathUnits="userSpaceOnUse" id="clipPath144"> +<path d="M395 459 L408 459 L408 470 L395 470 L395 459 Z"/> +</clipPath> +</defs> +<g font-size="16" fill="rgb(131,122,133)" font-family="'Ubuntu'" stroke-linejoin="round" stroke="rgb(131,122,133)" font-weight="bold" stroke-width="0" stroke-miterlimit="0"> +<rect x="299" y="83" clip-path="url(#clipPath1)" width="490" rx="0" opacity="0.2549" ry="0" height="235" stroke="none"/> +<rect x="300" y="84" clip-path="url(#clipPath1)" width="490" rx="0" opacity="0.2549" ry="0" height="235" stroke="none"/> +<rect x="298" y="82" clip-path="url(#clipPath2)" fill="url(#linearGradient1)" width="490" rx="0" ry="0" height="235" stroke="none"/> +</g> +<g stroke-width="1.1" font-size="16" font-family="'Ubuntu'" font-weight="bold" stroke-linecap="butt"> +<rect x="298" y="82" clip-path="url(#clipPath2)" fill="none" width="489" rx="0" ry="0" height="234"/> +<image x="499" y="88" clip-path="url(#clipPath3)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAXUlEQVR42mNgGPKA EUTExsb+x6Vg8eLFjPgMYIExFi1ahCEZFxdHuQvwAZDr4C5obW0lSXN1dTWqF0CA n5+fZFcwURoLKC5gYWGhzABGRkbKDGBiYiLfAFiojkAAAOmKD9Q+w1PmAAAAAElF TkSuQmCC" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> +<text xml:space="preserve" x="518" y="102" clip-path="url(#clipPath4)" stroke="none">platform</text> +<rect x="335" y="119" clip-path="url(#clipPath5)" fill="rgb(131,122,133)" width="187" rx="4" opacity="0.2549" ry="4" height="191" stroke="none"/> +<rect x="336" y="120" clip-path="url(#clipPath5)" fill="rgb(131,122,133)" width="187" rx="4" opacity="0.2549" ry="4" height="191" stroke="none"/> +<rect x="334" y="118" clip-path="url(#clipPath6)" fill="url(#linearGradient2)" width="187" rx="4" ry="4" height="191" stroke="none"/> +<rect x="334" y="118" clip-path="url(#clipPath6)" fill="none" width="186" rx="4" ry="4" height="190" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="382" y="138" clip-path="url(#clipPath7)" stroke="none">Application</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath8)" preserveAspectRatio="none" height="16" x="339" y="148" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="162" clip-path="url(#clipPath9)" stroke="none" xml:space="preserve">occi.app.name: null</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath10)" preserveAspectRatio="none" height="16" font-style="italic" x="339" y="164" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="178" clip-path="url(#clipPath11)" font-style="italic" stroke="none" xml:space="preserve">occi.app.context: URL</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath12)" preserveAspectRatio="none" height="16" font-style="italic" x="339" y="180" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="194" clip-path="url(#clipPath13)" font-style="italic" stroke="none" xml:space="preserve">occi.app.url: URL</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath14)" preserveAspectRatio="none" height="16" font-style="italic" x="339" y="196" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="210" clip-path="url(#clipPath15)" font-style="italic" stroke="none" xml:space="preserve">occi.app.state: Status</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath16)" preserveAspectRatio="none" font-weight="normal" height="16" font-style="italic" x="339" y="212" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="226" clip-path="url(#clipPath17)" font-style="italic" stroke="none" font-weight="normal" xml:space="preserve">occi.app.state.message: null</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath18)" preserveAspectRatio="none" font-weight="normal" height="16" x="339" y="228" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="242" clip-path="url(#clipPath19)" stroke="none" font-weight="normal" xml:space="preserve">deploy()</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath20)" preserveAspectRatio="none" font-weight="normal" height="16" x="339" y="244" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="258" clip-path="url(#clipPath21)" stroke="none" font-weight="normal" xml:space="preserve">undeploy()</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath22)" preserveAspectRatio="none" font-weight="normal" height="16" x="339" y="260" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="274" clip-path="url(#clipPath23)" stroke="none" font-weight="normal" xml:space="preserve">configure()</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath24)" preserveAspectRatio="none" font-weight="normal" height="16" x="339" y="276" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="290" clip-path="url(#clipPath25)" stroke="none" font-weight="normal" xml:space="preserve">start()</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath26)" preserveAspectRatio="none" font-weight="normal" height="16" x="339" y="292" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="358" font-size="13" y="306" clip-path="url(#clipPath27)" stroke="none" font-weight="normal" xml:space="preserve">stop()</text> +<line clip-path="url(#clipPath28)" fill="none" x1="335" x2="520" y1="146" y2="146" stroke="rgb(0,47,0)"/> +<rect x="551" y="119" clip-path="url(#clipPath29)" fill="rgb(131,122,133)" width="230" rx="4" opacity="0.2549" ry="4" height="143" stroke="none"/> +<rect x="552" y="120" clip-path="url(#clipPath29)" fill="rgb(131,122,133)" width="230" rx="4" opacity="0.2549" ry="4" height="143" stroke="none"/> +<rect x="550" y="118" clip-path="url(#clipPath30)" fill="url(#linearGradient3)" width="230" rx="4" ry="4" height="143" stroke="none"/> +<rect x="550" y="118" clip-path="url(#clipPath30)" fill="none" width="229" rx="4" ry="4" height="142" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="621" y="138" clip-path="url(#clipPath31)" stroke="none">Component</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath32)" preserveAspectRatio="none" height="16" font-style="italic" x="555" y="148" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="574" font-size="13" y="162" clip-path="url(#clipPath33)" font-style="italic" stroke="none" xml:space="preserve">occi.component.state: Status</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath34)" preserveAspectRatio="none" font-weight="normal" height="16" font-style="italic" x="555" y="164" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="574" font-size="13" y="178" clip-path="url(#clipPath35)" font-style="italic" stroke="none" font-weight="normal" xml:space="preserve">occi.component.state.message: null</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath36)" preserveAspectRatio="none" font-weight="normal" height="16" x="555" y="180" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="574" font-size="13" y="194" clip-path="url(#clipPath37)" stroke="none" font-weight="normal" xml:space="preserve">deploy()</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath38)" preserveAspectRatio="none" font-weight="normal" height="16" x="555" y="196" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="574" font-size="13" y="210" clip-path="url(#clipPath39)" stroke="none" font-weight="normal" xml:space="preserve">undeploy()</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath40)" preserveAspectRatio="none" font-weight="normal" height="16" x="555" y="212" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="574" font-size="13" y="226" clip-path="url(#clipPath41)" stroke="none" font-weight="normal" xml:space="preserve">configure()</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath42)" preserveAspectRatio="none" font-weight="normal" height="16" x="555" y="228" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="574" font-size="13" y="242" clip-path="url(#clipPath43)" stroke="none" font-weight="normal" xml:space="preserve">start()</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath44)" preserveAspectRatio="none" font-weight="normal" height="16" x="555" y="244" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABUElEQVR42s1TsY6C QBB9cBYUFP6MtRXfIIkfAJWGUGtAa0M0/o2hovAnCJ3EANFILCjQPWaCRE683F11 WzA7b+a9md0dgH+7LMsSlRHT6VR8lyd3kWjveR6EEFiv14+wqOPdAlTpQaLk4/HI eJIk7BNO8a8dSU97UZOfAUiS1MJqX+oSYE6e57jf79hsNgzcbjfYts1Yv99/4ciP 9okcBAHO5zO22y0T5vM5VySxy+UCilNeJShaAnRRvu+jLEuEYcjWcRw+AlnyoyhC URTY7XZYrVZNBx/0qRQd0zQxGAwYTNMUmqZhOBxisVhwF4qi4HA4QNd1PtJ+v3c7 74DapYrX67UBVVVFr9fDZDJ54bReYTab8dllWW6/deWTKNnlctniNZmGYXDwdDqx jeMYWZbxHLiu2+DVML0fy9Fo1Ewi2fF43PKfb//H/8KvSH9Zny/Wwn+ks4LSAAAA AElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="574" font-size="13" y="258" clip-path="url(#clipPath45)" stroke="none" font-weight="normal" xml:space="preserve">stop()</text> +<line clip-path="url(#clipPath46)" fill="none" x1="551" x2="779" y1="146" y2="146" stroke="rgb(0,47,0)"/> +<rect x="299" y="335" clip-path="url(#clipPath47)" fill="rgb(131,122,133)" width="212" rx="4" opacity="0.2549" ry="4" height="127" stroke="none"/> +<rect x="300" y="336" clip-path="url(#clipPath47)" fill="rgb(131,122,133)" width="212" rx="4" opacity="0.2549" ry="4" height="127" stroke="none"/> +<rect x="298" y="334" clip-path="url(#clipPath48)" fill="url(#linearGradient4)" width="212" rx="4" ry="4" height="127" stroke="none"/> +<rect x="298" y="334" clip-path="url(#clipPath48)" fill="none" width="211" rx="4" ry="4" height="126" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="378" y="354" clip-path="url(#clipPath49)" stroke="none">Sensor</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath50)" preserveAspectRatio="none" font-weight="normal" height="16" x="303" y="364" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="322" font-size="13" y="378" clip-path="url(#clipPath51)" stroke="none" font-weight="normal" xml:space="preserve">occi.sensor.timebase: DateTime</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath52)" preserveAspectRatio="none" font-weight="normal" height="16" x="303" y="380" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="322" font-size="13" y="394" clip-path="url(#clipPath53)" stroke="none" font-weight="normal" xml:space="preserve">occi.sensor.timestart: Second</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath54)" preserveAspectRatio="none" font-weight="normal" height="16" x="303" y="396" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="322" font-size="13" y="410" clip-path="url(#clipPath55)" stroke="none" font-weight="normal" xml:space="preserve">occi.sensor.timestop: Second</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath56)" preserveAspectRatio="none" height="16" x="303" y="412" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="322" font-size="13" y="426" clip-path="url(#clipPath57)" stroke="none" xml:space="preserve">occi.sensor.period: Second</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath58)" preserveAspectRatio="none" font-weight="normal" height="16" x="303" y="428" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="322" font-size="13" y="442" clip-path="url(#clipPath59)" stroke="none" font-weight="normal" xml:space="preserve">occi.sensor.granularity: Second</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath60)" preserveAspectRatio="none" font-weight="normal" height="16" x="303" y="444" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="322" font-size="13" y="458" clip-path="url(#clipPath61)" stroke="none" font-weight="normal" xml:space="preserve">occi.sensor.accuracy: Second</text> +<line clip-path="url(#clipPath62)" fill="none" x1="299" x2="509" y1="362" y2="362" stroke="rgb(0,47,0)"/> +<rect x="731" y="335" clip-path="url(#clipPath63)" fill="rgb(131,122,133)" width="223" rx="4" opacity="0.2549" ry="4" height="79" stroke="none"/> +<rect x="732" y="336" clip-path="url(#clipPath63)" fill="rgb(131,122,133)" width="223" rx="4" opacity="0.2549" ry="4" height="79" stroke="none"/> +<rect x="730" y="334" clip-path="url(#clipPath64)" fill="url(#linearGradient5)" width="223" rx="4" ry="4" height="79" stroke="none"/> +<rect x="730" y="334" clip-path="url(#clipPath64)" fill="none" width="222" rx="4" ry="4" height="78" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="789" y="354" clip-path="url(#clipPath65)" stroke="none">DataGatherer</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath66)" preserveAspectRatio="none" height="16" x="735" y="364" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="754" font-size="13" y="378" clip-path="url(#clipPath67)" stroke="none" xml:space="preserve">occi.collector.period: Second</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath68)" preserveAspectRatio="none" font-weight="normal" height="16" x="735" y="380" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="754" font-size="13" y="394" clip-path="url(#clipPath69)" stroke="none" font-weight="normal" xml:space="preserve">occi.collector.granularity: Second</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath70)" preserveAspectRatio="none" font-weight="normal" height="16" x="735" y="396" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="754" font-size="13" y="410" clip-path="url(#clipPath71)" stroke="none" font-weight="normal" xml:space="preserve">occi.collector.accuracy: Second</text> +<line clip-path="url(#clipPath72)" fill="none" x1="731" x2="952" y1="362" y2="362" stroke="rgb(0,47,0)"/> +<rect x="695" y="381" clip-path="url(#clipPath73)" fill="rgb(131,122,133)" width="170" rx="4" opacity="0.2549" ry="4" height="47" stroke="none"/> +<rect x="696" y="382" clip-path="url(#clipPath73)" fill="rgb(131,122,133)" width="170" rx="4" opacity="0.2549" ry="4" height="47" stroke="none"/> +<rect x="694" y="380" clip-path="url(#clipPath74)" fill="url(#linearGradient6)" width="170" rx="4" ry="4" height="47" stroke="none"/> +<rect x="694" y="380" clip-path="url(#clipPath74)" fill="none" width="169" rx="4" ry="4" height="46" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="740" y="400" clip-path="url(#clipPath75)" stroke="none">Processor</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath76)" preserveAspectRatio="none" font-weight="normal" height="16" x="699" y="410" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="718" font-size="13" y="424" clip-path="url(#clipPath77)" stroke="none" font-weight="normal" xml:space="preserve">gatherer.address: String</text> +<line clip-path="url(#clipPath78)" fill="none" x1="695" x2="863" y1="408" y2="408" stroke="rgb(0,47,0)"/> +<rect x="551" y="335" clip-path="url(#clipPath79)" fill="rgb(131,122,133)" width="193" rx="4" opacity="0.2549" ry="4" height="47" stroke="none"/> +<rect x="552" y="336" clip-path="url(#clipPath79)" fill="rgb(131,122,133)" width="193" rx="4" opacity="0.2549" ry="4" height="47" stroke="none"/> +<rect x="550" y="334" clip-path="url(#clipPath80)" fill="url(#linearGradient7)" width="193" rx="4" ry="4" height="47" stroke="none"/> +<rect x="550" y="334" clip-path="url(#clipPath80)" fill="none" width="192" rx="4" ry="4" height="46" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="610" y="354" clip-path="url(#clipPath81)" stroke="none">Publisher</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath82)" preserveAspectRatio="none" height="16" x="555" y="364" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="574" font-size="13" y="378" clip-path="url(#clipPath83)" stroke="none" xml:space="preserve">publisher.endpoint: String</text> +<line clip-path="url(#clipPath84)" fill="none" x1="551" x2="742" y1="362" y2="362" stroke="rgb(0,47,0)"/> +<rect x="959" y="83" clip-path="url(#clipPath85)" fill="rgb(131,122,133)" width="306" rx="0" opacity="0.2549" ry="0" height="109" stroke="none"/> +<rect x="960" y="84" clip-path="url(#clipPath85)" fill="rgb(131,122,133)" width="306" rx="0" opacity="0.2549" ry="0" height="109" stroke="none"/> +<rect x="958" y="82" clip-path="url(#clipPath86)" fill="url(#linearGradient8)" width="306" rx="0" ry="0" height="109" stroke="none"/> +<rect x="958" y="82" clip-path="url(#clipPath86)" fill="none" width="305" rx="0" ry="0" height="108"/> +<image x="1084" y="88" clip-path="url(#clipPath87)" width="16" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAXUlEQVR42mNgGPKA EUTExsb+x6Vg8eLFjPgMYIExFi1ahCEZFxdHuQvwAZDr4C5obW0lSXN1dTWqF0CA n5+fZFcwURoLKC5gYWGhzABGRkbKDGBiYiLfAFiojkAAAOmKD9Q+w1PmAAAAAElF TkSuQmCC" xlink:type="simple" xlink:actuate="onLoad" height="16" preserveAspectRatio="none" xlink:show="embed"/> +<text xml:space="preserve" x="1103" y="102" clip-path="url(#clipPath88)" stroke="none">core</text> +<rect x="983" y="111" clip-path="url(#clipPath89)" fill="rgb(131,122,133)" width="108" rx="4" opacity="0.2549" ry="4" height="63" stroke="none"/> +<rect x="984" y="112" clip-path="url(#clipPath89)" fill="rgb(131,122,133)" width="108" rx="4" opacity="0.2549" ry="4" height="63" stroke="none"/> +<rect x="982" y="110" clip-path="url(#clipPath90)" fill="url(#linearGradient9)" width="108" rx="4" ry="4" height="63" stroke="none"/> +<rect x="982" y="110" clip-path="url(#clipPath90)" fill="none" width="107" rx="4" ry="4" height="62" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="1012" y="130" clip-path="url(#clipPath91)" stroke="none">Entity</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath92)" preserveAspectRatio="none" height="16" font-style="italic" x="987" y="140" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="1006" font-size="13" y="154" clip-path="url(#clipPath93)" font-style="italic" stroke="none" xml:space="preserve">occi.core.id</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath94)" preserveAspectRatio="none" font-weight="normal" height="16" x="987" y="156" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="1006" font-size="13" y="170" clip-path="url(#clipPath95)" stroke="none" font-weight="normal" xml:space="preserve">occi.core.title</text> +<line clip-path="url(#clipPath96)" fill="none" x1="983" x2="1089" y1="138" y2="138" stroke="rgb(0,47,0)"/> +<rect x="1120" y="137" clip-path="url(#clipPath97)" fill="rgb(131,122,133)" width="137" rx="4" opacity="0.2549" ry="4" height="47" stroke="none"/> +<rect x="1121" y="138" clip-path="url(#clipPath97)" fill="rgb(131,122,133)" width="137" rx="4" opacity="0.2549" ry="4" height="47" stroke="none"/> +<rect x="1119" y="136" clip-path="url(#clipPath98)" fill="url(#linearGradient10)" width="137" rx="4" ry="4" height="47" stroke="none"/> +<rect x="1119" y="136" clip-path="url(#clipPath98)" fill="none" width="136" rx="4" ry="4" height="46" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="1152" y="156" clip-path="url(#clipPath99)" stroke="none">Resource</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath100)" preserveAspectRatio="none" font-weight="normal" height="16" x="1124" y="166" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="1143" font-size="13" y="180" clip-path="url(#clipPath101)" stroke="none" font-weight="normal" xml:space="preserve">occi.core.summary</text> +<line clip-path="url(#clipPath102)" fill="none" x1="1120" x2="1255" y1="164" y2="164" stroke="rgb(0,47,0)"/> +<rect x="155" y="527" clip-path="url(#clipPath103)" fill="rgb(131,122,133)" width="229" rx="4" opacity="0.2549" ry="4" height="63" stroke="none"/> +<rect x="156" y="528" clip-path="url(#clipPath103)" fill="rgb(131,122,133)" width="229" rx="4" opacity="0.2549" ry="4" height="63" stroke="none"/> +<rect x="154" y="526" clip-path="url(#clipPath104)" fill="url(#linearGradient11)" width="229" rx="4" ry="4" height="63" stroke="none"/> +<rect x="154" y="526" clip-path="url(#clipPath104)" fill="none" width="228" rx="4" ry="4" height="62" stroke="rgb(0,47,0)"/> +<text xml:space="preserve" x="191" y="546" clip-path="url(#clipPath105)" stroke="none">MonitoringProperty</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath106)" preserveAspectRatio="none" height="16" font-style="italic" x="159" y="556" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="178" font-size="13" y="570" clip-path="url(#clipPath107)" font-style="italic" stroke="none" xml:space="preserve">monitoring.property.name: String</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath108)" preserveAspectRatio="none" font-weight="normal" height="16" x="159" y="572" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="178" font-size="13" y="586" clip-path="url(#clipPath109)" stroke="none" font-weight="normal" xml:space="preserve">monitoring.property.value: String</text> +<line clip-path="url(#clipPath110)" fill="none" x1="155" x2="382" y1="554" y2="554" stroke="rgb(0,47,0)"/> +<rect x="527" y="539" clip-path="url(#clipPath111)" fill="rgb(131,122,133)" width="249" rx="4" opacity="0.2549" ry="4" height="79" stroke="none"/> +<rect x="528" y="540" clip-path="url(#clipPath111)" fill="rgb(131,122,133)" width="249" rx="4" opacity="0.2549" ry="4" height="79" stroke="none"/> +<rect x="526" y="538" clip-path="url(#clipPath112)" fill="url(#linearGradient12)" width="249" rx="4" ry="4" height="79" stroke="none"/> +<rect x="526" y="538" clip-path="url(#clipPath112)" fill="none" width="248" rx="4" ry="4" height="78" stroke="rgb(0,37,74)"/> +<text xml:space="preserve" x="596" y="558" clip-path="url(#clipPath113)" stroke="none">MartPublisher</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath114)" preserveAspectRatio="none" height="16" font-style="italic" x="531" y="568" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="550" font-size="13" y="582" clip-path="url(#clipPath115)" font-style="italic" stroke="none" xml:space="preserve">monitoring.property.name: String</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath116)" preserveAspectRatio="none" font-weight="normal" height="16" x="531" y="584" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="550" font-size="13" y="598" clip-path="url(#clipPath117)" stroke="none" font-weight="normal" xml:space="preserve">monitoring.property.id: String</text> +<image width="16" xlink:show="embed" xlink:type="simple" clip-path="url(#clipPath118)" preserveAspectRatio="none" height="16" font-style="italic" x="531" y="600" font-size="13" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAqElEQVR42u1TwQ3D IAx0UAdgGGZiAb4RD8SXBZiJVYAowJe0IIGIkrTpt+o9fAbjM8YC4I+pmHmet28T pZQ191FMSgmEELeTOefd7wIFjLHKOWdACB38AqVUP98FQgjQWGt9WZlSWjnG2Peq tPceRr5CizvnzgXWdX0r0OJjoV0L1loghHx8xGVZ9gJN2RhzawrjTessMcZbe+3C vb+TdZvMS2T6kb/wBKduW9nDgi/SAAAAAElFTkSuQmCC" xlink:actuate="onLoad"/> +<text x="550" font-size="13" y="614" clip-path="url(#clipPath119)" font-style="italic" stroke="none" xml:space="preserve">monitoring.property.resource: String</text> +<line clip-path="url(#clipPath120)" fill="none" x1="527" x2="774" y1="566" y2="566" stroke="rgb(0,37,74)"/> +<rect x="11" y="83" clip-path="url(#clipPath121)" fill="rgb(131,122,133)" width="98" rx="0" opacity="0.2549" ry="0" height="45" stroke="none"/> +<rect x="12" y="84" clip-path="url(#clipPath121)" fill="rgb(131,122,133)" width="98" rx="0" opacity="0.2549" ry="0" height="45" stroke="none"/> +<rect x="10" y="82" clip-path="url(#clipPath122)" fill="url(#linearGradient13)" width="98" rx="0" ry="0" height="45" stroke="none"/> +<rect x="10" y="82" clip-path="url(#clipPath122)" fill="none" width="97" rx="0" ry="0" height="44"/> +<text xml:space="preserve" x="21" y="102" clip-path="url(#clipPath123)" stroke="none">DateTime</text> +<text x="15" font-size="13" y="125" clip-path="url(#clipPath124)" font-style="italic" stroke="none" font-weight="normal" xml:space="preserve">java.lang.String</text> +<line clip-path="url(#clipPath125)" fill="none" x1="11" x2="107" y1="110" y2="110"/> +<rect x="11" y="11" clip-path="url(#clipPath126)" fill="rgb(131,122,133)" width="98" rx="0" opacity="0.2549" ry="0" height="45" stroke="none"/> +<rect x="12" y="12" clip-path="url(#clipPath126)" fill="rgb(131,122,133)" width="98" rx="0" opacity="0.2549" ry="0" height="45" stroke="none"/> +<rect x="10" y="10" clip-path="url(#clipPath127)" fill="url(#linearGradient14)" width="98" rx="0" ry="0" height="45" stroke="none"/> +<rect x="10" y="10" clip-path="url(#clipPath127)" fill="none" width="97" rx="0" ry="0" height="44"/> +<text xml:space="preserve" x="31" y="30" clip-path="url(#clipPath128)" stroke="none">Second</text> +<text x="15" font-size="13" y="53" clip-path="url(#clipPath129)" font-style="italic" stroke="none" font-weight="normal" xml:space="preserve">java.lang.String</text> +<line clip-path="url(#clipPath130)" fill="none" x1="11" x2="107" y1="38" y2="38"/> +<rect x="167" y="11" clip-path="url(#clipPath131)" fill="rgb(131,122,133)" width="98" rx="0" opacity="0.2549" ry="0" height="45" stroke="none"/> +<rect x="168" y="12" clip-path="url(#clipPath131)" fill="rgb(131,122,133)" width="98" rx="0" opacity="0.2549" ry="0" height="45" stroke="none"/> +<rect x="166" y="10" clip-path="url(#clipPath132)" fill="url(#linearGradient15)" width="98" rx="0" ry="0" height="45" stroke="none"/> +<rect x="166" y="10" clip-path="url(#clipPath132)" fill="none" width="97" rx="0" ry="0" height="44"/> +<text xml:space="preserve" x="191" y="30" clip-path="url(#clipPath133)" stroke="none">String</text> +<text x="171" font-size="13" y="53" clip-path="url(#clipPath134)" font-style="italic" stroke="none" font-weight="normal" xml:space="preserve">java.lang.String</text> +<line clip-path="url(#clipPath135)" fill="none" x1="167" x2="263" y1="38" y2="38"/> +</g> +<g stroke-linecap="butt" font-size="11" fill="rgb(136,136,136)" font-family="'Ubuntu'" stroke="rgb(136,136,136)" stroke-width="2.1"> +<line clip-path="url(#clipPath136)" fill="none" x1="1119" x2="1090" y1="151" y2="151"/> +<polygon fill="white" clip-path="url(#clipPath137)" points=" 1090 151 1098 147 1098 155" stroke="none"/> +<polygon fill="none" clip-path="url(#clipPath137)" points=" 1090 151 1098 147 1098 155"/> +<line clip-path="url(#clipPath136)" fill="none" x1="803" x2="733" y1="334" y2="261"/> +<polygon fill="white" clip-path="url(#clipPath138)" points=" 733 261 741 264 736 270" stroke="none"/> +<polygon fill="none" clip-path="url(#clipPath138)" points=" 733 261 741 264 736 270"/> +<line clip-path="url(#clipPath136)" fill="none" x1="412" x2="415" y1="334" y2="309"/> +<polygon fill="white" clip-path="url(#clipPath139)" points=" 415 309 418 317 410 316" stroke="none"/> +<polygon fill="none" clip-path="url(#clipPath139)" points=" 415 309 418 317 410 316"/> +<line clip-path="url(#clipPath136)" fill="none" x1="797" x2="682" y1="380" y2="261"/> +<polygon fill="white" clip-path="url(#clipPath140)" points=" 682 261 690 264 685 270" stroke="none"/> +<polygon fill="none" clip-path="url(#clipPath140)" points=" 682 261 690 264 685 270"/> +<line clip-path="url(#clipPath136)" fill="none" x1="642" x2="628" y1="334" y2="261"/> +<polygon fill="white" clip-path="url(#clipPath141)" points=" 628 261 633 268 626 270" stroke="none"/> +<polygon fill="none" clip-path="url(#clipPath141)" points=" 628 261 633 268 626 270"/> +<line clip-path="url(#clipPath136)" fill="none" x1="1119" x2="1090" y1="151" y2="151"/> +<polygon fill="white" clip-path="url(#clipPath137)" points=" 1090 151 1098 147 1098 155" stroke="none"/> +<polygon fill="none" clip-path="url(#clipPath137)" points=" 1090 151 1098 147 1098 155"/> +<line clip-path="url(#clipPath136)" fill="none" x1="647" x2="647" y1="538" y2="381" stroke-dasharray="5,5"/> +<line clip-path="url(#clipPath142)" fill="none" x1="650" x2="647" y1="388" y2="381"/> +<line clip-path="url(#clipPath142)" fill="none" x1="647" x2="644" y1="381" y2="388"/> +</g> +<g stroke-width="2.1" font-size="13" font-family="'Ubuntu'" font-weight="bold" stroke-linecap="butt"> +<line clip-path="url(#clipPath136)" fill="none" x1="269" x2="405" y1="526" y2="461"/> +<text xml:space="preserve" x="319" y="489" clip-path="url(#clipPath143)" stroke="none">target</text> +<line clip-path="url(#clipPath144)" fill="none" x1="400" x2="405" y1="467" y2="461"/> +<line clip-path="url(#clipPath144)" fill="none" x1="405" x2="397" y1="461" y2="461"/> +</g> +</g> +</svg> diff --git a/de.ugoe.cs.rwm.mocci.model/representations.aird b/de.ugoe.cs.rwm.mocci.model/representations.aird index 8e01604..23c7e40 100644 --- a/de.ugoe.cs.rwm.mocci.model/representations.aird +++ b/de.ugoe.cs.rwm.mocci.model/representations.aird @@ -9,11 +9,11 @@ <semanticResources>model/monitoring.occie</semanticResources> <semanticResources>http://schemas.modmacao.org/occi/platform</semanticResources> <semanticResources>http://schemas.ogf.org/occi/core</semanticResources> - <semanticResources>model/monitoring.ecore</semanticResources> - <semanticResources>model/monitoring.genmodel</semanticResources> <semanticResources>build/resources/main/model/monitoring.ecore</semanticResources> <semanticResources>build/resources/main/model/monitoring.genmodel</semanticResources> <semanticResources>build/resources/main/model/monitoring.occie</semanticResources> + <semanticResources>model/monitoring.ecore</semanticResources> + <semanticResources>model/monitoring.genmodel</semanticResources> <ownedViews xmi:type="viewpoint:DView" xmi:id="_y2oZQPcHEeiCiOA5ZDMQdg"> <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']"/> <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" xmi:id="_zR2VoPcHEeiCiOA5ZDMQdg" name="new Extension diagram" repPath="#_zIRi4PcHEeiCiOA5ZDMQdg"> @@ -445,44 +445,26 @@ <styles xmi:type="notation:ShapeStyle" xmi:id="_zUA40fcHEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="12" bold="true"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zUA40vcHEeiCiOA5ZDMQdg" x="720" y="252"/> </children> - <children xmi:type="notation:Node" xmi:id="_zUDVFPcHEeiCiOA5ZDMQdg" type="2003" element="_zRxdYPcHEeiCiOA5ZDMQdg"> - <children xmi:type="notation:Node" xmi:id="_zUD8IPcHEeiCiOA5ZDMQdg" type="5007"/> - <children xmi:type="notation:Node" xmi:id="_zUD8IfcHEeiCiOA5ZDMQdg" type="7004"> - <children xmi:type="notation:Node" xmi:id="_zVAXU_cHEeiCiOA5ZDMQdg" type="3010" element="_zRxdYvcHEeiCiOA5ZDMQdg"> - <styles xmi:type="notation:FontStyle" xmi:id="_zVAXVPcHEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="10" italic="true"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_zVAXVfcHEeiCiOA5ZDMQdg"/> - </children> - <styles xmi:type="notation:SortingStyle" xmi:id="_zUD8IvcHEeiCiOA5ZDMQdg"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_zUD8I_cHEeiCiOA5ZDMQdg"/> - </children> - <styles xmi:type="notation:ShapeStyle" xmi:id="_zUDVFfcHEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="12" bold="true"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zUDVFvcHEeiCiOA5ZDMQdg" x="156" y="54"/> - </children> - <children xmi:type="notation:Node" xmi:id="_zUD8JPcHEeiCiOA5ZDMQdg" type="2003" element="_zRxdZPcHEeiCiOA5ZDMQdg"> - <children xmi:type="notation:Node" xmi:id="_zUD8J_cHEeiCiOA5ZDMQdg" type="5007"/> - <children xmi:type="notation:Node" xmi:id="_zUEjMPcHEeiCiOA5ZDMQdg" type="7004"> - <children xmi:type="notation:Node" xmi:id="_zVAXVvcHEeiCiOA5ZDMQdg" type="3010" element="_zRxdZvcHEeiCiOA5ZDMQdg"> - <styles xmi:type="notation:FontStyle" xmi:id="_zVAXV_cHEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="10" italic="true"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_zVAXWPcHEeiCiOA5ZDMQdg"/> - </children> - <styles xmi:type="notation:SortingStyle" xmi:id="_zUEjMfcHEeiCiOA5ZDMQdg"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_zUEjMvcHEeiCiOA5ZDMQdg"/> - </children> - <styles xmi:type="notation:ShapeStyle" xmi:id="_zUD8JfcHEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="12" bold="true"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zUD8JvcHEeiCiOA5ZDMQdg" x="156"/> - </children> <children xmi:type="notation:Node" xmi:id="_Cr_IYPcIEeiCiOA5ZDMQdg" type="2003" element="_CqlaMPcIEeiCiOA5ZDMQdg"> <children xmi:type="notation:Node" xmi:id="_Cr_vcPcIEeiCiOA5ZDMQdg" type="5007"/> <children xmi:type="notation:Node" xmi:id="_Cr_vcfcIEeiCiOA5ZDMQdg" type="7004"> + <children xmi:type="notation:Node" xmi:id="_tnRP4A9aEemWZoTWtpdGMw" type="3010" element="_tlZAkA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnRP4Q9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnRP4g9aEemWZoTWtpdGMw"/> + </children> <styles xmi:type="notation:SortingStyle" xmi:id="_Cr_vcvcIEeiCiOA5ZDMQdg"/> <styles xmi:type="notation:FilteringStyle" xmi:id="_Cr_vc_cIEeiCiOA5ZDMQdg"/> </children> <styles xmi:type="notation:ShapeStyle" xmi:id="_Cr_IYfcIEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="12" bold="true"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cr_IYvcIEeiCiOA5ZDMQdg" x="624" y="252"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cr_IYvcIEeiCiOA5ZDMQdg" x="684" y="298"/> </children> <children xmi:type="notation:Node" xmi:id="_IhtloPcIEeiCiOA5ZDMQdg" type="2003" element="_IhgKQPcIEeiCiOA5ZDMQdg"> <children xmi:type="notation:Node" xmi:id="_Ihtlo_cIEeiCiOA5ZDMQdg" type="5007"/> <children xmi:type="notation:Node" xmi:id="_IhtlpPcIEeiCiOA5ZDMQdg" type="7004"> + <children xmi:type="notation:Node" xmi:id="_tnR28A9aEemWZoTWtpdGMw" type="3010" element="_tla1wA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnR28Q9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10" bold="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnR28g9aEemWZoTWtpdGMw"/> + </children> <styles xmi:type="notation:SortingStyle" xmi:id="_IhtlpfcIEeiCiOA5ZDMQdg"/> <styles xmi:type="notation:FilteringStyle" xmi:id="_IhtlpvcIEeiCiOA5ZDMQdg"/> </children> @@ -537,65 +519,82 @@ <styles xmi:type="notation:ShapeStyle" xmi:id="_SBkLQfcIEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="12" bold="true"/> <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SBkLQvcIEeiCiOA5ZDMQdg" x="948"/> </children> - <children xmi:type="notation:Node" xmi:id="_uIWPwPcIEeiCiOA5ZDMQdg" type="2003" element="_uHIHwPcIEeiCiOA5ZDMQdg"> - <children xmi:type="notation:Node" xmi:id="_uIWPw_cIEeiCiOA5ZDMQdg" type="5007"/> - <children xmi:type="notation:Node" xmi:id="_uIWPxPcIEeiCiOA5ZDMQdg" type="7004"> - <children xmi:type="notation:Node" xmi:id="_uIW20PcIEeiCiOA5ZDMQdg" type="3010" element="_uID74PcIEeiCiOA5ZDMQdg"> - <styles xmi:type="notation:FontStyle" xmi:id="_uIW20fcIEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="10" italic="true"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_uIW20vcIEeiCiOA5ZDMQdg"/> + <children xmi:type="notation:Node" xmi:id="_tnAxMA9aEemWZoTWtpdGMw" type="2003" element="_tlIh4A9aEemWZoTWtpdGMw"> + <children xmi:type="notation:Node" xmi:id="_tnIF8A9aEemWZoTWtpdGMw" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_tnItAA9aEemWZoTWtpdGMw" type="7004"> + <children xmi:type="notation:Node" xmi:id="_tnR28w9aEemWZoTWtpdGMw" type="3010" element="_tlK-IA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnR29A9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10" bold="true" italic="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnR29Q9aEemWZoTWtpdGMw"/> + </children> + <children xmi:type="notation:Node" xmi:id="_tnSeAA9aEemWZoTWtpdGMw" type="3010" element="_tlMzUA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnSeAQ9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnSeAg9aEemWZoTWtpdGMw"/> </children> - <styles xmi:type="notation:SortingStyle" xmi:id="_uIWPxfcIEeiCiOA5ZDMQdg"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_uIWPxvcIEeiCiOA5ZDMQdg"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_tnItAQ9aEemWZoTWtpdGMw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_tnItAg9aEemWZoTWtpdGMw"/> </children> - <styles xmi:type="notation:ShapeStyle" xmi:id="_uIWPwfcIEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="12" bold="true"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uIWPwvcIEeiCiOA5ZDMQdg" x="156" y="108"/> + <styles xmi:type="notation:ShapeStyle" xmi:id="_tnAxMQ9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tnAxMg9aEemWZoTWtpdGMw" x="144" y="444"/> </children> - <children xmi:type="notation:Node" xmi:id="_w0y1IP0tEei-2r9L9rzO0w" type="2003" element="_wzfNkP0tEei-2r9L9rzO0w"> - <children xmi:type="notation:Node" xmi:id="_w03toP0tEei-2r9L9rzO0w" type="5007"/> - <children xmi:type="notation:Node" xmi:id="_w04UsP0tEei-2r9L9rzO0w" type="7004"> - <children xmi:type="notation:Node" xmi:id="_w09NMP0tEei-2r9L9rzO0w" type="3010" element="_wzgbsP0tEei-2r9L9rzO0w"> - <styles xmi:type="notation:FontStyle" xmi:id="_w09NMf0tEei-2r9L9rzO0w" fontName="Ubuntu" fontHeight="10" bold="true" italic="true"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_w09NMv0tEei-2r9L9rzO0w"/> + <children xmi:type="notation:Node" xmi:id="_tnM-cA9aEemWZoTWtpdGMw" type="2003" element="_tld5EA9aEemWZoTWtpdGMw"> + <children xmi:type="notation:Node" xmi:id="_tnM-cw9aEemWZoTWtpdGMw" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_tnNlgA9aEemWZoTWtpdGMw" type="7004"> + <children xmi:type="notation:Node" xmi:id="_tnSeAw9aEemWZoTWtpdGMw" type="3010" element="_tlegIA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnSeBA9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10" bold="true" italic="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnSeBQ9aEemWZoTWtpdGMw"/> </children> - <styles xmi:type="notation:SortingStyle" xmi:id="_w04Usf0tEei-2r9L9rzO0w"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_w04Usv0tEei-2r9L9rzO0w"/> + <children xmi:type="notation:Node" xmi:id="_tnTsIA9aEemWZoTWtpdGMw" type="3010" element="_tlfuQA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnTsIQ9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnTsIg9aEemWZoTWtpdGMw"/> + </children> + <children xmi:type="notation:Node" xmi:id="_tnUTMA9aEemWZoTWtpdGMw" type="3010" element="_tloRIA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnUTMQ9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10" bold="true" italic="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnUTMg9aEemWZoTWtpdGMw"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_tnNlgQ9aEemWZoTWtpdGMw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_tnNlgg9aEemWZoTWtpdGMw"/> </children> - <styles xmi:type="notation:ShapeStyle" xmi:id="_w0y1If0tEei-2r9L9rzO0w" fontName="Ubuntu" fontHeight="12" bold="true"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w0y1Iv0tEei-2r9L9rzO0w" x="950" y="132" width="303"/> + <styles xmi:type="notation:ShapeStyle" xmi:id="_tnM-cQ9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tnM-cg9aEemWZoTWtpdGMw" x="516" y="456"/> </children> - <children xmi:type="notation:Node" xmi:id="_VZoGAAH6EemtgKPSfKVeNA" type="2003" element="_VXmswAH6EemtgKPSfKVeNA"> - <children xmi:type="notation:Node" xmi:id="_VZsXcAH6EemtgKPSfKVeNA" type="5007"/> - <children xmi:type="notation:Node" xmi:id="_VZsXcQH6EemtgKPSfKVeNA" type="7004"> - <children xmi:type="notation:Node" xmi:id="_BxEVkAH7EemtgKPSfKVeNA" type="3010" element="_BvN7cAH7EemtgKPSfKVeNA"> - <styles xmi:type="notation:FontStyle" xmi:id="_BxEVkQH7EemtgKPSfKVeNA" fontName="Ubuntu" fontHeight="10"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_BxEVkgH7EemtgKPSfKVeNA"/> + <children xmi:type="notation:Node" xmi:id="_tnNlgw9aEemWZoTWtpdGMw" type="2003" element="_tlpfQA9aEemWZoTWtpdGMw"> + <children xmi:type="notation:Node" xmi:id="_tnNlhg9aEemWZoTWtpdGMw" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_tnOMkA9aEemWZoTWtpdGMw" type="7004"> + <children xmi:type="notation:Node" xmi:id="_tnUTMw9aEemWZoTWtpdGMw" type="3010" element="_tlqtYg9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnUTNA9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10" italic="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnUTNQ9aEemWZoTWtpdGMw"/> </children> - <children xmi:type="notation:Node" xmi:id="_C0loEAH7EemtgKPSfKVeNA" type="3010" element="_CzKrwAH7EemtgKPSfKVeNA"> - <styles xmi:type="notation:FontStyle" xmi:id="_C0loEQH7EemtgKPSfKVeNA" fontName="Ubuntu" fontHeight="10"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_C0loEgH7EemtgKPSfKVeNA"/> - </children> - <children xmi:type="notation:Node" xmi:id="_UeQNcAH7EemtgKPSfKVeNA" type="3010" element="_UdYDsAH7EemtgKPSfKVeNA"> - <styles xmi:type="notation:FontStyle" xmi:id="_UeQNcQH7EemtgKPSfKVeNA" fontName="Ubuntu" fontHeight="10"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_UeQNcgH7EemtgKPSfKVeNA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_tnOMkQ9aEemWZoTWtpdGMw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_tnOMkg9aEemWZoTWtpdGMw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_tnNlhA9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tnNlhQ9aEemWZoTWtpdGMw"/> + </children> + <children xmi:type="notation:Node" xmi:id="_tnOMkw9aEemWZoTWtpdGMw" type="2003" element="_tlqGUQ9aEemWZoTWtpdGMw"> + <children xmi:type="notation:Node" xmi:id="_tnOMlg9aEemWZoTWtpdGMw" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_tnOMlw9aEemWZoTWtpdGMw" type="7004"> + <children xmi:type="notation:Node" xmi:id="_tnU6QA9aEemWZoTWtpdGMw" type="3010" element="_tlsikA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnU6QQ9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10" italic="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnU6Qg9aEemWZoTWtpdGMw"/> </children> - <styles xmi:type="notation:SortingStyle" xmi:id="_VZsXcgH6EemtgKPSfKVeNA"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_VZsXcwH6EemtgKPSfKVeNA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_tnOMmA9aEemWZoTWtpdGMw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_tnOMmQ9aEemWZoTWtpdGMw"/> </children> - <styles xmi:type="notation:ShapeStyle" xmi:id="_VZoGAQH6EemtgKPSfKVeNA" fontName="Ubuntu" fontHeight="12" bold="true"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VZoGAgH6EemtgKPSfKVeNA" x="950" y="208" width="159" height="97"/> + <styles xmi:type="notation:ShapeStyle" xmi:id="_tnOMlA9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tnOMlQ9aEemWZoTWtpdGMw" y="-72"/> </children> - <children xmi:type="notation:Node" xmi:id="_Cp17MAH8EemtgKPSfKVeNA" type="2003" element="_ConzMAH8EemtgKPSfKVeNA"> - <children xmi:type="notation:Node" xmi:id="_Cp2iQAH8EemtgKPSfKVeNA" type="5007"/> - <children xmi:type="notation:Node" xmi:id="_Cp2iQQH8EemtgKPSfKVeNA" type="7004"> - <children xmi:type="notation:Node" xmi:id="_Cp3wYAH8EemtgKPSfKVeNA" type="3010" element="_Cpeu0AH8EemtgKPSfKVeNA"> - <styles xmi:type="notation:FontStyle" xmi:id="_Cp3wYQH8EemtgKPSfKVeNA" fontName="Ubuntu" fontHeight="10" italic="true"/> - <layoutConstraint xmi:type="notation:Location" xmi:id="_Cp3wYgH8EemtgKPSfKVeNA"/> + <children xmi:type="notation:Node" xmi:id="_tnOzoA9aEemWZoTWtpdGMw" type="2003" element="_tlqtYA9aEemWZoTWtpdGMw"> + <children xmi:type="notation:Node" xmi:id="_tnOzow9aEemWZoTWtpdGMw" type="5007"/> + <children xmi:type="notation:Node" xmi:id="_tnOzpA9aEemWZoTWtpdGMw" type="7004"> + <children xmi:type="notation:Node" xmi:id="_tnVhUA9aEemWZoTWtpdGMw" type="3010" element="_tltJoA9aEemWZoTWtpdGMw"> + <styles xmi:type="notation:FontStyle" xmi:id="_tnVhUQ9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10" italic="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tnVhUg9aEemWZoTWtpdGMw"/> </children> - <styles xmi:type="notation:SortingStyle" xmi:id="_Cp2iQgH8EemtgKPSfKVeNA"/> - <styles xmi:type="notation:FilteringStyle" xmi:id="_Cp2iQwH8EemtgKPSfKVeNA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_tnOzpQ9aEemWZoTWtpdGMw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_tnOzpg9aEemWZoTWtpdGMw"/> </children> - <styles xmi:type="notation:ShapeStyle" xmi:id="_Cp17MQH8EemtgKPSfKVeNA" fontName="Ubuntu" fontHeight="12" bold="true"/> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cp17MgH8EemtgKPSfKVeNA" x="1118" y="233"/> + <styles xmi:type="notation:ShapeStyle" xmi:id="_tnOzoQ9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="12" bold="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tnOzog9aEemWZoTWtpdGMw" x="156" y="-72"/> </children> <styles xmi:type="notation:DiagramStyle" xmi:id="_zTc4IvcHEeiCiOA5ZDMQdg"/> <edges xmi:type="notation:Edge" xmi:id="_zVrswPcHEeiCiOA5ZDMQdg" type="4001" element="_zRxda_cHEeiCiOA5ZDMQdg" source="_zUA40PcHEeiCiOA5ZDMQdg" target="_zUINkPcHEeiCiOA5ZDMQdg"> @@ -1208,17 +1207,17 @@ </edges> <edges xmi:type="notation:Edge" xmi:id="_HERXQPcIEeiCiOA5ZDMQdg" type="4001" element="_HDKkAPcIEeiCiOA5ZDMQdg" source="_Cr_IYPcIEeiCiOA5ZDMQdg" target="_zUINkPcHEeiCiOA5ZDMQdg"> <children xmi:type="notation:Node" xmi:id="_HER-UPcIEeiCiOA5ZDMQdg" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HER-UfcIEeiCiOA5ZDMQdg" x="1" y="-4"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HER-UfcIEeiCiOA5ZDMQdg" x="3" y="-5"/> </children> <children xmi:type="notation:Node" xmi:id="_HER-UvcIEeiCiOA5ZDMQdg" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HER-U_cIEeiCiOA5ZDMQdg" x="3" y="3"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HER-U_cIEeiCiOA5ZDMQdg" x="5" y="3"/> </children> <children xmi:type="notation:Node" xmi:id="_HER-VPcIEeiCiOA5ZDMQdg" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HER-VfcIEeiCiOA5ZDMQdg" x="3" y="6"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HER-VfcIEeiCiOA5ZDMQdg" x="4" y="6"/> </children> <styles xmi:type="notation:ConnectorStyle" xmi:id="_HERXQfcIEeiCiOA5ZDMQdg"/> <styles xmi:type="notation:FontStyle" xmi:id="_HERXQvcIEeiCiOA5ZDMQdg" fontName="Ubuntu" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HERXQ_cIEeiCiOA5ZDMQdg" points="[0, 0, 0, 73]$[0, -73, 0, 0]"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HERXQ_cIEeiCiOA5ZDMQdg" points="[0, 0, 115, 119]$[-115, -119, 0, 0]"/> <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HESlYPcIEeiCiOA5ZDMQdg" id="(0.6075949367088608,0.0)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HESlYfcIEeiCiOA5ZDMQdg" id="(0.5739130434782609,1.0)"/> </edges> @@ -1366,37 +1365,53 @@ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SBsHEPcIEeiCiOA5ZDMQdg" id="(0.5,0.5)"/> <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SBsuIPcIEeiCiOA5ZDMQdg" id="(0.5,0.5)"/> </edges> - <edges xmi:type="notation:Edge" xmi:id="_Jv_egAH8EemtgKPSfKVeNA" type="4001" element="_JvyqMAH8EemtgKPSfKVeNA" source="_Cp17MAH8EemtgKPSfKVeNA" target="_VZoGAAH6EemtgKPSfKVeNA"> - <children xmi:type="notation:Node" xmi:id="_JwAsoAH8EemtgKPSfKVeNA" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JwAsoQH8EemtgKPSfKVeNA" x="-3" y="-6"/> + <edges xmi:type="notation:Edge" xmi:id="_tnn1MA9aEemWZoTWtpdGMw" visible="false" type="4001" element="_tl3hsA9aEemWZoTWtpdGMw" source="_tnAxMA9aEemWZoTWtpdGMw" target="_SBlZZ_cIEeiCiOA5ZDMQdg"> + <children xmi:type="notation:Node" xmi:id="_tnpDUA9aEemWZoTWtpdGMw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tnpDUQ9aEemWZoTWtpdGMw" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_tnpqYA9aEemWZoTWtpdGMw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tnpqYQ9aEemWZoTWtpdGMw" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_tnqRcA9aEemWZoTWtpdGMw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tnqRcQ9aEemWZoTWtpdGMw" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_tnn1MQ9aEemWZoTWtpdGMw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_tnn1Mg9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tnn1Mw9aEemWZoTWtpdGMw" points="[0, 0, -1116, -60]$[1116, 60, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tn468A9aEemWZoTWtpdGMw" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tn468Q9aEemWZoTWtpdGMw" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_tn468g9aEemWZoTWtpdGMw" type="4001" element="_tl5W4A9aEemWZoTWtpdGMw" source="_tnM-cA9aEemWZoTWtpdGMw" target="_IhtloPcIEeiCiOA5ZDMQdg"> + <children xmi:type="notation:Node" xmi:id="_tn5iAA9aEemWZoTWtpdGMw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tn5iAQ9aEemWZoTWtpdGMw" x="12" y="5"/> </children> - <children xmi:type="notation:Node" xmi:id="_JwB6wAH8EemtgKPSfKVeNA" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JwB6wQH8EemtgKPSfKVeNA" x="6" y="9"/> + <children xmi:type="notation:Node" xmi:id="_tn5iAg9aEemWZoTWtpdGMw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tn5iAw9aEemWZoTWtpdGMw" x="-11" y="-6"/> </children> - <children xmi:type="notation:Node" xmi:id="_JwCh0AH8EemtgKPSfKVeNA" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JwCh0QH8EemtgKPSfKVeNA" x="7" y="9"/> + <children xmi:type="notation:Node" xmi:id="_tn5iBA9aEemWZoTWtpdGMw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tn5iBQ9aEemWZoTWtpdGMw" x="-11" y="-6"/> </children> - <styles xmi:type="notation:ConnectorStyle" xmi:id="_Jv_egQH8EemtgKPSfKVeNA"/> - <styles xmi:type="notation:FontStyle" xmi:id="_Jv_eggH8EemtgKPSfKVeNA" fontName="Ubuntu" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Jv_egwH8EemtgKPSfKVeNA" points="[-100, 0, 90, 0]$[-111, 0, 79, 0]"/> - <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JwHaUAH8EemtgKPSfKVeNA" id="(0.5,0.5)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JwHaUQH8EemtgKPSfKVeNA" id="(0.5,0.5)"/> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_tn468w9aEemWZoTWtpdGMw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_tn469A9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="8"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tn469Q9aEemWZoTWtpdGMw" points="[0, 0, 4, 157]$[-4, -157, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tn6JEA9aEemWZoTWtpdGMw" id="(0.5020080321285141,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tn6JEQ9aEemWZoTWtpdGMw" id="(0.5025906735751295,1.0)"/> </edges> - <edges xmi:type="notation:Edge" xmi:id="_0gOeYANqEem6HrygHybokg" type="4001" element="_0eHlkANqEem6HrygHybokg" source="_w0y1IP0tEei-2r9L9rzO0w" target="_SBlZYPcIEeiCiOA5ZDMQdg"> - <children xmi:type="notation:Node" xmi:id="_0gSIwANqEem6HrygHybokg" type="6001"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0gSIwQNqEem6HrygHybokg" x="-13" y="3"/> + <edges xmi:type="notation:Edge" xmi:id="_tn6JEg9aEemWZoTWtpdGMw" type="4001" element="_tmwSgA9aEemWZoTWtpdGMw" source="_tnAxMA9aEemWZoTWtpdGMw" target="_zT_qsPcHEeiCiOA5ZDMQdg"> + <children xmi:type="notation:Node" xmi:id="_tn6JFg9aEemWZoTWtpdGMw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tn6JFw9aEemWZoTWtpdGMw" x="5" y="-9"/> </children> - <children xmi:type="notation:Node" xmi:id="_0gSv0ANqEem6HrygHybokg" type="6002"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0gSv0QNqEem6HrygHybokg" x="15" y="-5"/> + <children xmi:type="notation:Node" xmi:id="_tn6JGA9aEemWZoTWtpdGMw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tn6JGQ9aEemWZoTWtpdGMw" x="-7" y="8"/> </children> - <children xmi:type="notation:Node" xmi:id="_0gTW4ANqEem6HrygHybokg" type="6003"> - <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0gTW4QNqEem6HrygHybokg" x="-11"/> + <children xmi:type="notation:Node" xmi:id="_tn6JGg9aEemWZoTWtpdGMw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tn6JGw9aEemWZoTWtpdGMw" x="-6" y="7"/> </children> - <styles xmi:type="notation:ConnectorStyle" xmi:id="_0gOeYQNqEem6HrygHybokg"/> - <styles xmi:type="notation:FontStyle" xmi:id="_0gOeYgNqEem6HrygHybokg" fontName="Ubuntu" fontHeight="8"/> - <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0gOeYwNqEem6HrygHybokg" points="[1, -10, -14, 73]$[7, -41, -8, 42]"/> - <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0gVzIANqEem6HrygHybokg" id="(0.6644518272425249,0.1694915254237288)"/> - <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0gVzIQNqEem6HrygHybokg" id="(0.40875912408759124,0.10638297872340426)"/> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_tn6JEw9aEemWZoTWtpdGMw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_tn6JFA9aEemWZoTWtpdGMw" fontName="Ubuntu" fontHeight="10" bold="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tn6JFQ9aEemWZoTWtpdGMw" points="[0, 0, -136, 65]$[136, -65, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tn6wIA9aEemWZoTWtpdGMw" id="(0.5021834061135371,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tn6wIQ9aEemWZoTWtpdGMw" id="(0.5047169811320755,1.0)"/> </edges> </data> </ownedAnnotationEntries> @@ -1727,7 +1742,7 @@ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='EObjectTypeContainer']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='EObjectTypeContainer']"/> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_zRw2XPcHEeiCiOA5ZDMQdg" name="java.net.URL" visible="false" tooltipText="org.eclipse.cmf.occi.core.impl.EObjectTypeImpl@2c5281b1 (name: URL, documentation: null) (instanceClassName: java.net.URL)"> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_zRw2XPcHEeiCiOA5ZDMQdg" name="java.net.URL" visible="false" tooltipText="org.eclipse.cmf.occi.core.impl.EObjectTypeImpl@3e42c7c6 (name: URL, documentation: null) (instanceClassName: java.net.URL)"> <target xmi:type="occi:EObjectType" href="http://schemas.modmacao.org/occi/platform#//@types.0"/> <semanticElements xmi:type="occi:EObjectType" href="http://schemas.modmacao.org/occi/platform#//@types.0"/> <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_zRw2XfcHEeiCiOA5ZDMQdg" labelSize="10" showIcon="false"> @@ -1746,7 +1761,7 @@ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='EObjectTypeContainer']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='EObjectTypeContainer']"/> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_zRxdIvcHEeiCiOA5ZDMQdg" name="java.net.URI" visible="false" tooltipText="org.eclipse.cmf.occi.core.impl.EObjectTypeImpl@12888eb5 (name: URI, documentation: null) (instanceClassName: java.net.URI)"> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_zRxdIvcHEeiCiOA5ZDMQdg" name="java.net.URI" visible="false" tooltipText="org.eclipse.cmf.occi.core.impl.EObjectTypeImpl@5dcb4826 (name: URI, documentation: null) (instanceClassName: java.net.URI)"> <target xmi:type="occi:EObjectType" href="http://schemas.modmacao.org/occi/platform#//@types.1"/> <semanticElements xmi:type="occi:EObjectType" href="http://schemas.modmacao.org/occi/platform#//@types.1"/> <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_zRxdI_cHEeiCiOA5ZDMQdg" labelSize="10" showIcon="false"> @@ -1897,7 +1912,7 @@ </ownedDiagramElements> </ownedDiagramElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_zRxdRPcHEeiCiOA5ZDMQdg" name="Sensor" outgoingEdges="__q-OcPcHEeiCiOA5ZDMQdg"> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_zRxdRPcHEeiCiOA5ZDMQdg" name="Sensor" outgoingEdges="__q-OcPcHEeiCiOA5ZDMQdg" incomingEdges="_tmwSgA9aEemWZoTWtpdGMw"> <target xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='sensor']"/> <semanticElements xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='sensor']"/> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> @@ -1995,45 +2010,6 @@ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_zRxdYPcHEeiCiOA5ZDMQdg" name="DateTime"> - <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.0"/> - <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.0"/> - <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> - <arrangeConstraints>KEEP_SIZE</arrangeConstraints> - <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_zRxdYfcHEeiCiOA5ZDMQdg" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,250,191"> - <labelFormat>bold</labelFormat> - <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@style"/> - </ownedStyle> - <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']"/> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_zRxdYvcHEeiCiOA5ZDMQdg" name="java.lang.String" tooltipText="org.eclipse.cmf.occi.core.impl.StringTypeImpl@5708121f (name: DateTime, documentation: null) (pattern: ^(\d{4}((-)?(0[1-9]|1[0-2])((-)?(0[1-9]|[1-2][0-9]|3[0-1])(T(24:00(:00(\.[0]+)?)?|(([0-1][0-9]|2[0-3])(:)[0-5][0-9])((:)[0-5][0-9](\.[\d]+)?)?)((\+|-)(14:00|(0[0-9]|1[0-3])(:)[0-5][0-9])|Z))?)?)?)$, length: <unset>, minLength: <unset>, maxLength: <unset>)"> - <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.0"/> - <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.0"/> - <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_zRxdY_cHEeiCiOA5ZDMQdg" labelSize="10" showIcon="false"> - <labelFormat>italic</labelFormat> - <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']/@style"/> - </ownedStyle> - <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']"/> - </ownedElements> - </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_zRxdZPcHEeiCiOA5ZDMQdg" name="Second"> - <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.1"/> - <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.1"/> - <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_zRxdZfcHEeiCiOA5ZDMQdg" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,250,191"> - <labelFormat>bold</labelFormat> - <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@style"/> - </ownedStyle> - <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']"/> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_zRxdZvcHEeiCiOA5ZDMQdg" name="java.lang.String" tooltipText="org.eclipse.cmf.occi.core.impl.StringTypeImpl@26f9165b (name: Second, documentation: null) (pattern: null, length: <unset>, minLength: <unset>, maxLength: <unset>)"> - <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.1"/> - <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.1"/> - <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_zRxdZ_cHEeiCiOA5ZDMQdg" labelSize="10" showIcon="false"> - <labelFormat>italic</labelFormat> - <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']/@style"/> - </ownedStyle> - <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']"/> - </ownedElements> - </ownedDiagramElements> <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_zRxda_cHEeiCiOA5ZDMQdg" sourceNode="_zRxdUvcHEeiCiOA5ZDMQdg" targetNode="_zRw2LPcHEeiCiOA5ZDMQdg"> <target xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='datagatherer']"/> <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_zRxdbPcHEeiCiOA5ZDMQdg" targetArrow="InputClosedArrow" size="2"> @@ -2435,6 +2411,14 @@ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tlZAkA9aEemWZoTWtpdGMw" name="gatherer.address: String"> + <target xmi:type="occi:Attribute" href="model/monitoring.occie#//@kinds[term='processor']/@attributes.0"/> + <semanticElements xmi:type="occi:Attribute" href="model/monitoring.occie#//@kinds[term='processor']/@attributes.0"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_tlaOsA9aEemWZoTWtpdGMw" labelSize="10" labelAlignment="LEFT" labelPosition="node"> + <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']/@conditionnalStyles.2/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']"/> + </ownedElements> </ownedDiagramElements> <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HDKkAPcIEeiCiOA5ZDMQdg" sourceNode="_CqlaMPcIEeiCiOA5ZDMQdg" targetNode="_zRw2LPcHEeiCiOA5ZDMQdg"> <target xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='processor']"/> @@ -2444,7 +2428,7 @@ </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='ParentEdge']"/> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_IhgKQPcIEeiCiOA5ZDMQdg" name="Publisher" outgoingEdges="_Ihlp0PcIEeiCiOA5ZDMQdg"> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_IhgKQPcIEeiCiOA5ZDMQdg" name="Publisher" outgoingEdges="_Ihlp0PcIEeiCiOA5ZDMQdg" incomingEdges="_tl5W4A9aEemWZoTWtpdGMw"> <target xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='publisher']"/> <semanticElements xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='publisher']"/> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> @@ -2455,6 +2439,15 @@ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tla1wA9aEemWZoTWtpdGMw" name="publisher.endpoint: String"> + <target xmi:type="occi:Attribute" href="model/monitoring.occie#//@kinds[term='publisher']/@attributes.0"/> + <semanticElements xmi:type="occi:Attribute" href="model/monitoring.occie#//@kinds[term='publisher']/@attributes.0"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_tlcD4A9aEemWZoTWtpdGMw" labelSize="10" labelAlignment="LEFT" labelPosition="node"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']/@conditionnalStyles.3/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']"/> + </ownedElements> </ownedDiagramElements> <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Ihlp0PcIEeiCiOA5ZDMQdg" sourceNode="_IhgKQPcIEeiCiOA5ZDMQdg" targetNode="_zRw2LPcHEeiCiOA5ZDMQdg"> <target xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='publisher']"/> @@ -2505,7 +2498,7 @@ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_SAWqUvcIEeiCiOA5ZDMQdg" name="Resource" outgoingEdges="_SBKioPcIEeiCiOA5ZDMQdg" incomingEdges="_SBLJs_cIEeiCiOA5ZDMQdg _SBLJtvcIEeiCiOA5ZDMQdg _SBddkPcIEeiCiOA5ZDMQdg _SBeEoPcIEeiCiOA5ZDMQdg _0eHlkANqEem6HrygHybokg"> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_SAWqUvcIEeiCiOA5ZDMQdg" name="Resource" outgoingEdges="_SBKioPcIEeiCiOA5ZDMQdg" incomingEdges="_SBLJs_cIEeiCiOA5ZDMQdg _SBLJtvcIEeiCiOA5ZDMQdg _SBddkPcIEeiCiOA5ZDMQdg _SBeEoPcIEeiCiOA5ZDMQdg"> <target xmi:type="occi:Kind" href="http://schemas.ogf.org/occi/core#//@kinds[term='resource']"/> <semanticElements xmi:type="occi:Kind" href="http://schemas.ogf.org/occi/core#//@kinds[term='resource']"/> <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_SAWqU_cIEeiCiOA5ZDMQdg" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" borderColor="0,47,0" backgroundStyle="GradientTopToBottom" backgroundColor="187,242,196" foregroundColor="255,255,255"> @@ -2522,7 +2515,7 @@ <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_SAXRYPcIEeiCiOA5ZDMQdg" name="Link" visible="false" outgoingEdges="_SBLJsPcIEeiCiOA5ZDMQdg _SBddkPcIEeiCiOA5ZDMQdg _SBeEoPcIEeiCiOA5ZDMQdg" incomingEdges="_SBLJufcIEeiCiOA5ZDMQdg"> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_SAXRYPcIEeiCiOA5ZDMQdg" name="Link" visible="false" outgoingEdges="_SBLJsPcIEeiCiOA5ZDMQdg _SBddkPcIEeiCiOA5ZDMQdg _SBeEoPcIEeiCiOA5ZDMQdg" incomingEdges="_SBLJufcIEeiCiOA5ZDMQdg _tl3hsA9aEemWZoTWtpdGMw"> <target xmi:type="occi:Kind" href="http://schemas.ogf.org/occi/core#//@kinds[term='link']"/> <semanticElements xmi:type="occi:Kind" href="http://schemas.ogf.org/occi/core#//@kinds[term='link']"/> <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_Uj0FkPcIEeiCiOA5ZDMQdg"/> @@ -2604,120 +2597,156 @@ </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='TargetEdge']"/> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_uHIHwPcIEeiCiOA5ZDMQdg" name="String"> - <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.2"/> - <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.2"/> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_tlIh4A9aEemWZoTWtpdGMw" name="MonitoringProperty" outgoingEdges="_tl3hsA9aEemWZoTWtpdGMw _tmwSgA9aEemWZoTWtpdGMw"> + <target xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='monitoringproperty']"/> + <semanticElements xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='monitoringproperty']"/> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_uHIu0PcIEeiCiOA5ZDMQdg" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,250,191"> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_tlJI8A9aEemWZoTWtpdGMw" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" borderColor="0,47,0" backgroundStyle="GradientTopToBottom" backgroundColor="187,242,196" foregroundColor="255,255,255"> <labelFormat>bold</labelFormat> - <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@style"/> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@style"/> </ownedStyle> - <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']"/> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_uID74PcIEeiCiOA5ZDMQdg" name="java.lang.String" tooltipText="org.eclipse.cmf.occi.core.impl.StringTypeImpl@556ef86d (name: String, documentation: null) (pattern: null, length: <unset>, minLength: <unset>, maxLength: <unset>)"> - <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.2"/> - <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.2"/> - <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_uID74fcIEeiCiOA5ZDMQdg" labelSize="10" showIcon="false"> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tlK-IA9aEemWZoTWtpdGMw" name="monitoring.property.name: String"> + <target xmi:type="occi:Attribute" href="model/monitoring.occie#//@kinds[term='monitoringproperty']/@attributes.0"/> + <semanticElements xmi:type="occi:Attribute" href="model/monitoring.occie#//@kinds[term='monitoringproperty']/@attributes.0"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_tlMMQA9aEemWZoTWtpdGMw" labelSize="10" labelAlignment="LEFT" labelPosition="node"> <labelFormat>italic</labelFormat> - <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']/@style"/> + <labelFormat>bold</labelFormat> + <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']/@conditionnalStyles.1/@style"/> </ownedStyle> - <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']"/> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tlMzUA9aEemWZoTWtpdGMw" name="monitoring.property.value: String"> + <target xmi:type="occi:Attribute" href="model/monitoring.occie#//@kinds[term='monitoringproperty']/@attributes.1"/> + <semanticElements xmi:type="occi:Attribute" href="model/monitoring.occie#//@kinds[term='monitoringproperty']/@attributes.1"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_tlOogA9aEemWZoTWtpdGMw" labelSize="10" labelAlignment="LEFT" labelPosition="node"> + <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']/@conditionnalStyles.2/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='KindContainer']/@subNodeMappings[name='KindAttribute']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_wzfNkP0tEei-2r9L9rzO0w" name="MonitoringProperties" outgoingEdges="_0eHlkANqEem6HrygHybokg"> - <target xmi:type="occi:Mixin" href="model/monitoring.occie#//@mixins[term='monitoringproperties']"/> - <semanticElements xmi:type="occi:Mixin" href="model/monitoring.occie#//@mixins[term='monitoringproperties']"/> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_tld5EA9aEemWZoTWtpdGMw" name="MartPublisher" outgoingEdges="_tl5W4A9aEemWZoTWtpdGMw"> + <target xmi:type="occi:Mixin" href="model/monitoring.occie#//@mixins[term='martpublisher']"/> + <semanticElements xmi:type="occi:Mixin" href="model/monitoring.occie#//@mixins[term='martpublisher']"/> <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> <arrangeConstraints>KEEP_SIZE</arrangeConstraints> <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_wzf0oP0tEei-2r9L9rzO0w" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" borderColor="0,37,74" backgroundStyle="GradientTopToBottom" backgroundColor="187,221,255" foregroundColor="255,255,255"> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_tld5EQ9aEemWZoTWtpdGMw" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" borderColor="0,37,74" backgroundStyle="GradientTopToBottom" backgroundColor="187,221,255" foregroundColor="255,255,255"> <labelFormat>bold</labelFormat> <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='MixinContainer']/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='MixinContainer']"/> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_wzgbsP0tEei-2r9L9rzO0w" name="monitoring.properties: MonitoringPropertyArray"> - <target xmi:type="occi:Attribute" href="model/monitoring.occie#//@mixins[term='monitoringproperties']/@attributes.0"/> - <semanticElements xmi:type="occi:Attribute" href="model/monitoring.occie#//@mixins[term='monitoringproperties']/@attributes.0"/> - <ownedStyle xmi:type="diagram:Square" xmi:id="_L-s6AAN2Eem6HrygHybokg" labelSize="10" labelAlignment="LEFT" labelPosition="node"> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tlegIA9aEemWZoTWtpdGMw" name="monitoring.property.name: String"> + <target xmi:type="occi:Attribute" href="model/monitoring.occie#//@mixins[term='martpublisher']/@attributes.0"/> + <semanticElements xmi:type="occi:Attribute" href="model/monitoring.occie#//@mixins[term='martpublisher']/@attributes.0"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_tlfHMA9aEemWZoTWtpdGMw" labelSize="10" labelAlignment="LEFT" labelPosition="node"> + <labelFormat>italic</labelFormat> + <labelFormat>bold</labelFormat> + <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='MixinContainer']/@subNodeMappings[name='MixinAttribute']/@conditionnalStyles.1/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='MixinContainer']/@subNodeMappings[name='MixinAttribute']"/> + </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tlfuQA9aEemWZoTWtpdGMw" name="monitoring.property.id: String"> + <target xmi:type="occi:Attribute" href="model/monitoring.occie#//@mixins[term='martpublisher']/@attributes.1"/> + <semanticElements xmi:type="occi:Attribute" href="model/monitoring.occie#//@mixins[term='martpublisher']/@attributes.1"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_tlnqEA9aEemWZoTWtpdGMw" labelSize="10" labelAlignment="LEFT" labelPosition="node"> <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='MixinContainer']/@subNodeMappings[name='MixinAttribute']/@conditionnalStyles.2/@style"/> </ownedStyle> <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='MixinContainer']/@subNodeMappings[name='MixinAttribute']"/> </ownedElements> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tloRIA9aEemWZoTWtpdGMw" name="monitoring.property.resource: String"> + <target xmi:type="occi:Attribute" href="model/monitoring.occie#//@mixins[term='martpublisher']/@attributes.2"/> + <semanticElements xmi:type="occi:Attribute" href="model/monitoring.occie#//@mixins[term='martpublisher']/@attributes.2"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_tlo4MA9aEemWZoTWtpdGMw" labelSize="10" labelAlignment="LEFT" labelPosition="node"> + <labelFormat>italic</labelFormat> + <labelFormat>bold</labelFormat> + <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='MixinContainer']/@subNodeMappings[name='MixinAttribute']/@conditionnalStyles.1/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='MixinContainer']/@subNodeMappings[name='MixinAttribute']"/> + </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_VXmswAH6EemtgKPSfKVeNA" name="MonitoringProperty" incomingEdges="_JvyqMAH8EemtgKPSfKVeNA"> - <target xmi:type="occi:RecordType" href="model/monitoring.occie#//@types.3"/> - <semanticElements xmi:type="occi:RecordType" href="model/monitoring.occie#//@types.3"/> - <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> - <arrangeConstraints>KEEP_SIZE</arrangeConstraints> - <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_VXnT0AH6EemtgKPSfKVeNA" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="221,236,202"> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_tlpfQA9aEemWZoTWtpdGMw" name="DateTime"> + <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.0"/> + <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.0"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_tlqGUA9aEemWZoTWtpdGMw" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,250,191"> <labelFormat>bold</labelFormat> - <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='RecordTypeContainer']/@style"/> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@style"/> </ownedStyle> - <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='RecordTypeContainer']"/> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_BvN7cAH7EemtgKPSfKVeNA" name="name: String"> - <target xmi:type="occi:RecordField" href="model/monitoring.occie#//@types.3/@recordFields.0"/> - <semanticElements xmi:type="occi:RecordField" href="model/monitoring.occie#//@types.3/@recordFields.0"/> - <ownedStyle xmi:type="diagram:Square" xmi:id="_BvRl0AH7EemtgKPSfKVeNA" labelSize="10" labelAlignment="LEFT" labelPosition="node"> - <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='RecordTypeContainer']/@subNodeMappings[name='RecordField']/@style"/> - </ownedStyle> - <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='RecordTypeContainer']/@subNodeMappings[name='RecordField']"/> - </ownedElements> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_CzKrwAH7EemtgKPSfKVeNA" name="value: String"> - <target xmi:type="occi:RecordField" href="model/monitoring.occie#//@types.3/@recordFields.1"/> - <semanticElements xmi:type="occi:RecordField" href="model/monitoring.occie#//@types.3/@recordFields.1"/> - <ownedStyle xmi:type="diagram:Square" xmi:id="_CzL54AH7EemtgKPSfKVeNA" labelSize="10" labelAlignment="LEFT" labelPosition="node"> - <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='RecordTypeContainer']/@subNodeMappings[name='RecordField']/@style"/> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tlqtYg9aEemWZoTWtpdGMw" name="java.lang.String" tooltipText="org.eclipse.cmf.occi.core.impl.StringTypeImpl@5fadbc46 (name: DateTime, documentation: null) (pattern: ^(\d{4}((-)?(0[1-9]|1[0-2])((-)?(0[1-9]|[1-2][0-9]|3[0-1])(T(24:00(:00(\.[0]+)?)?|(([0-1][0-9]|2[0-3])(:)[0-5][0-9])((:)[0-5][0-9](\.[\d]+)?)?)((\+|-)(14:00|(0[0-9]|1[0-3])(:)[0-5][0-9])|Z))?)?)?)$, length: <unset>, minLength: <unset>, maxLength: <unset>)"> + <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.0"/> + <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.0"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_tlr7gA9aEemWZoTWtpdGMw" labelSize="10" showIcon="false"> + <labelFormat>italic</labelFormat> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']/@style"/> </ownedStyle> - <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='RecordTypeContainer']/@subNodeMappings[name='RecordField']"/> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']"/> </ownedElements> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_UdYDsAH7EemtgKPSfKVeNA" name="Id: String"> - <target xmi:type="occi:RecordField" href="model/monitoring.occie#//@types.3/@recordFields.2"/> - <semanticElements xmi:type="occi:RecordField" href="model/monitoring.occie#//@types.3/@recordFields.2"/> - <ownedStyle xmi:type="diagram:Square" xmi:id="_UdYqwAH7EemtgKPSfKVeNA" labelSize="10" labelAlignment="LEFT" labelPosition="node"> - <description xmi:type="style:SquareDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='RecordTypeContainer']/@subNodeMappings[name='RecordField']/@style"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_tlqGUQ9aEemWZoTWtpdGMw" name="Second"> + <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.1"/> + <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_tlqGUg9aEemWZoTWtpdGMw" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,250,191"> + <labelFormat>bold</labelFormat> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tlsikA9aEemWZoTWtpdGMw" name="java.lang.String" tooltipText="org.eclipse.cmf.occi.core.impl.StringTypeImpl@78fe3714 (name: Second, documentation: null) (pattern: null, length: <unset>, minLength: <unset>, maxLength: <unset>)"> + <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.1"/> + <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.1"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_tlsikQ9aEemWZoTWtpdGMw" labelSize="10" showIcon="false"> + <labelFormat>italic</labelFormat> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']/@style"/> </ownedStyle> - <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='RecordTypeContainer']/@subNodeMappings[name='RecordField']"/> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_ConzMAH8EemtgKPSfKVeNA" name="MonitoringPropertyArray" outgoingEdges="_JvyqMAH8EemtgKPSfKVeNA"> - <target xmi:type="occi:ArrayType" href="model/monitoring.occie#//@types.4"/> - <semanticElements xmi:type="occi:ArrayType" href="model/monitoring.occie#//@types.4"/> - <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> - <arrangeConstraints>KEEP_SIZE</arrangeConstraints> - <arrangeConstraints>KEEP_RATIO</arrangeConstraints> - <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_CooaQAH8EemtgKPSfKVeNA" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="221,236,202"> + <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_tlqtYA9aEemWZoTWtpdGMw" name="String"> + <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.2"/> + <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_tlqtYQ9aEemWZoTWtpdGMw" labelSize="12" showIcon="false" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,250,191"> <labelFormat>bold</labelFormat> - <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='ArrayTypeContainer']/@style"/> + <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@style"/> </ownedStyle> - <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='ArrayTypeContainer']"/> - <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_Cpeu0AH8EemtgKPSfKVeNA" name="Array" tooltipText="org.eclipse.cmf.occi.core.impl.ArrayTypeImpl@3f832bd (name: MonitoringPropertyArray, documentation: null)"> - <target xmi:type="occi:ArrayType" href="model/monitoring.occie#//@types.4"/> - <semanticElements xmi:type="occi:ArrayType" href="model/monitoring.occie#//@types.4"/> - <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_CpfV4AH8EemtgKPSfKVeNA" labelSize="10" showIcon="false"> + <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']"/> + <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_tltJoA9aEemWZoTWtpdGMw" name="java.lang.String" tooltipText="org.eclipse.cmf.occi.core.impl.StringTypeImpl@4bf44bcd (name: String, documentation: null) (pattern: null, length: <unset>, minLength: <unset>, maxLength: <unset>)"> + <target xmi:type="occi:StringType" href="model/monitoring.occie#//@types.2"/> + <semanticElements xmi:type="occi:StringType" href="model/monitoring.occie#//@types.2"/> + <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_tltJoQ9aEemWZoTWtpdGMw" labelSize="10" showIcon="false"> <labelFormat>italic</labelFormat> - <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='ArrayTypeContainer']/@subNodeMappings[name='EC_ArrayType_Name']/@style"/> + <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']/@style"/> </ownedStyle> - <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='ArrayTypeContainer']/@subNodeMappings[name='EC_ArrayType_Name']"/> + <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@containerMappings[name='StringTypeContainer']/@subNodeMappings[name='EC_StringType_Type']"/> </ownedElements> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_JvyqMAH8EemtgKPSfKVeNA" sourceNode="_ConzMAH8EemtgKPSfKVeNA" targetNode="_VXmswAH6EemtgKPSfKVeNA"> - <target xmi:type="occi:ArrayType" href="model/monitoring.occie#//@types.4"/> - <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_JvyqMQH8EemtgKPSfKVeNA" size="2"> - <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='TypeEdge']/@style"/> - <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_JvyqMgH8EemtgKPSfKVeNA"/> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_tl3hsA9aEemWZoTWtpdGMw" visible="false" sourceNode="_tlIh4A9aEemWZoTWtpdGMw" targetNode="_SAXRYPcIEeiCiOA5ZDMQdg"> + <target xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='monitoringproperty']"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_tl4IwA9aEemWZoTWtpdGMw" targetArrow="InputClosedArrow" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='ParentEdge']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_tl4IwQ9aEemWZoTWtpdGMw"/> </ownedStyle> - <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='TypeEdge']"/> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='ParentEdge']"/> </ownedDiagramElements> - <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_0eHlkANqEem6HrygHybokg" sourceNode="_wzfNkP0tEei-2r9L9rzO0w" targetNode="_SAWqUvcIEeiCiOA5ZDMQdg"> - <target xmi:type="occi:Mixin" href="model/monitoring.occie#//@mixins[term='monitoringproperties']"/> - <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_0eIMoANqEem6HrygHybokg" lineStyle="dash" size="2"> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_tl5W4A9aEemWZoTWtpdGMw" sourceNode="_tld5EA9aEemWZoTWtpdGMw" targetNode="_IhgKQPcIEeiCiOA5ZDMQdg"> + <target xmi:type="occi:Mixin" href="model/monitoring.occie#//@mixins[term='martpublisher']"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_tl598A9aEemWZoTWtpdGMw" lineStyle="dash" size="2"> <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='AppliesEdge']/@style"/> - <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_0eIMoQNqEem6HrygHybokg"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_tl598Q9aEemWZoTWtpdGMw"/> </ownedStyle> <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='AppliesEdge']"/> </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_tmwSgA9aEemWZoTWtpdGMw" name="target" sourceNode="_tlIh4A9aEemWZoTWtpdGMw" targetNode="_zRxdRPcHEeiCiOA5ZDMQdg"> + <target xmi:type="occi:Kind" href="model/monitoring.occie#//@kinds[term='monitoringproperty']"/> + <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_tmwSgQ9aEemWZoTWtpdGMw" size="2" strokeColor="0,0,0"> + <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='TargetEdge']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_tmwSgg9aEemWZoTWtpdGMw" labelSize="10" showIcon="false"> + <labelFormat>bold</labelFormat> + </centerLabelStyle> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer/@edgeMappings[name='TargetEdge']"/> + </ownedDiagramElements> <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']"/> <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_zRxd4_cHEeiCiOA5ZDMQdg"/> <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.cmf.occi.core.design/description/OCCIware.odesign#//@ownedViewpoints[name='OCCI%20Extension']/@ownedRepresentations[name='Extension%20diagram']/@defaultLayer"/> diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Martpublisher.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Martpublisher.java new file mode 100644 index 0000000..b180ac7 --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Martpublisher.java @@ -0,0 +1,126 @@ +/** + * Copyright (c) 2015-2017 Obeo, Inria + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * - William Piers <william.piers@obeo.fr> + * - Philippe Merle <philippe.merle@inria.fr> + * - Faiez Zalila <faiez.zalila@inria.fr> + */ +package monitoring; + +import java.util.Map; + +import org.eclipse.cmf.occi.core.MixinBase; + +import org.eclipse.emf.common.util.DiagnosticChain; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Martpublisher</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link monitoring.Martpublisher#getMonitoringPropertyName <em>Monitoring Property Name</em>}</li> + * <li>{@link monitoring.Martpublisher#getMonitoringPropertyId <em>Monitoring Property Id</em>}</li> + * <li>{@link monitoring.Martpublisher#getMonitoringPropertyResource <em>Monitoring Property Resource</em>}</li> + * </ul> + * + * @see monitoring.MonitoringPackage#getMartpublisher() + * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='appliesConstraint'" + * @generated + */ +public interface Martpublisher extends MixinBase { + /** + * Returns the value of the '<em><b>Monitoring Property Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * <!-- begin-model-doc --> + * + * <!-- end-model-doc --> + * @return the value of the '<em>Monitoring Property Name</em>' attribute. + * @see #setMonitoringPropertyName(String) + * @see monitoring.MonitoringPackage#getMartpublisher_MonitoringPropertyName() + * @model dataType="monitoring.String" required="true" + * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!Martpublisher!monitoringPropertyName'" + * @generated + */ + String getMonitoringPropertyName(); + + /** + * Sets the value of the '{@link monitoring.Martpublisher#getMonitoringPropertyName <em>Monitoring Property Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Monitoring Property Name</em>' attribute. + * @see #getMonitoringPropertyName() + * @generated + */ + void setMonitoringPropertyName(String value); + + /** + * Returns the value of the '<em><b>Monitoring Property Id</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * <!-- begin-model-doc --> + * + * <!-- end-model-doc --> + * @return the value of the '<em>Monitoring Property Id</em>' attribute. + * @see #setMonitoringPropertyId(String) + * @see monitoring.MonitoringPackage#getMartpublisher_MonitoringPropertyId() + * @model dataType="monitoring.String" + * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!Martpublisher!monitoringPropertyId'" + * @generated + */ + String getMonitoringPropertyId(); + + /** + * Sets the value of the '{@link monitoring.Martpublisher#getMonitoringPropertyId <em>Monitoring Property Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Monitoring Property Id</em>' attribute. + * @see #getMonitoringPropertyId() + * @generated + */ + void setMonitoringPropertyId(String value); + + /** + * Returns the value of the '<em><b>Monitoring Property Resource</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * <!-- begin-model-doc --> + * + * <!-- end-model-doc --> + * @return the value of the '<em>Monitoring Property Resource</em>' attribute. + * @see #setMonitoringPropertyResource(String) + * @see monitoring.MonitoringPackage#getMartpublisher_MonitoringPropertyResource() + * @model dataType="monitoring.String" required="true" + * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!Martpublisher!monitoringPropertyResource'" + * @generated + */ + String getMonitoringPropertyResource(); + + /** + * Sets the value of the '{@link monitoring.Martpublisher#getMonitoringPropertyResource <em>Monitoring Property Resource</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Monitoring Property Resource</em>' attribute. + * @see #getMonitoringPropertyResource() + * @generated + */ + void setMonitoringPropertyResource(String value); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='/**\n *\n * inv appliesConstraint:\n * let severity : Integer[1] = \'Martpublisher::appliesConstraint\'.getSeverity()\n * in\n * if severity <= 0\n * then true\n * else\n * let\n * result : occi::Boolean[1] = self.entity.oclIsKindOf(Publisher)\n * in\n * \'Martpublisher::appliesConstraint\'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0)\n * endif\n \052/\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.evaluation.Executor%> executor = <%org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal%>.getExecutor(this);\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.ids.IdResolver%> idResolver = executor.getIdResolver();\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.values.IntegerValue%> severity_0 = <%org.eclipse.ocl.pivot.library.string.CGStringGetSeverityOperation%>.INSTANCE.evaluate(executor, <%monitoring.MonitoringTables%>.STR_Martpublisher_c_c_appliesConstraint);\nfinal /*@NonInvalid\052/ boolean le = <%org.eclipse.ocl.pivot.library.oclany.OclComparableLessThanEqualOperation%>.INSTANCE.evaluate(executor, severity_0, <%monitoring.MonitoringTables%>.INT_0).booleanValue();\n/*@NonInvalid\052/ boolean symbol_0;\nif (le) {\n\tsymbol_0 = <%org.eclipse.ocl.pivot.utilities.ValueUtil%>.TRUE_VALUE;\n}\nelse {\n\tfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.Class%> TYP_monitoring_c_c_Publisher = idResolver.getClass(<%monitoring.MonitoringTables%>.CLSSid_Publisher, null);\n\tfinal /*@NonInvalid\052/ <%org.eclipse.cmf.occi.core.Entity%> entity = this.getEntity();\n\tfinal /*@NonInvalid\052/ boolean result = <%org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation%>.INSTANCE.evaluate(executor, entity, TYP_monitoring_c_c_Publisher).booleanValue();\n\tfinal /*@NonInvalid\052/ boolean logDiagnostic = <%org.eclipse.ocl.pivot.library.string.CGStringLogDiagnosticOperation%>.INSTANCE.evaluate(executor, <%org.eclipse.ocl.pivot.ids.TypeId%>.BOOLEAN, <%monitoring.MonitoringTables%>.STR_Martpublisher_c_c_appliesConstraint, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, <%monitoring.MonitoringTables%>.INT_0).booleanValue();\n\tsymbol_0 = logDiagnostic;\n}\nreturn Boolean.TRUE == symbol_0;'" + * @generated + */ + boolean appliesConstraint(DiagnosticChain diagnostics, Map<Object, Object> context); + +} // Martpublisher diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringFactory.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringFactory.java index 0bc0165..a7ed41c 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringFactory.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringFactory.java @@ -31,24 +31,6 @@ public interface MonitoringFactory extends EFactory { */ MonitoringFactory eINSTANCE = monitoring.impl.MonitoringFactoryImpl.init(); - /** - * Returns a new object of class '<em>Property</em>'. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @return a new object of class '<em>Property</em>'. - * @generated - */ - MonitoringProperty createMonitoringProperty(); - - /** - * Returns a new object of class '<em>Property Array</em>'. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @return a new object of class '<em>Property Array</em>'. - * @generated - */ - MonitoringPropertyArray createMonitoringPropertyArray(); - /** * Returns a new object of class '<em>Sensor</em>'. * <!-- begin-user-doc --> @@ -86,13 +68,22 @@ public interface MonitoringFactory extends EFactory { Publisher createPublisher(); /** - * Returns a new object of class '<em>Monitoringproperties</em>'. + * Returns a new object of class '<em>Monitoringproperty</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Monitoringproperty</em>'. + * @generated + */ + Monitoringproperty createMonitoringproperty(); + + /** + * Returns a new object of class '<em>Martpublisher</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return a new object of class '<em>Monitoringproperties</em>'. + * @return a new object of class '<em>Martpublisher</em>'. * @generated */ - Monitoringproperties createMonitoringproperties(); + Martpublisher createMartpublisher(); /** * Returns the package supported by this factory. diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringPackage.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringPackage.java index 3818574..eae2d2d 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringPackage.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringPackage.java @@ -19,7 +19,6 @@ import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EOperation; import org.eclipse.emf.ecore.EPackage; -import org.eclipse.emf.ecore.EReference; import org.modmacao.occi.platform.PlatformPackage; @@ -72,98 +71,6 @@ public interface MonitoringPackage extends EPackage { */ MonitoringPackage eINSTANCE = monitoring.impl.MonitoringPackageImpl.init(); - /** - * The meta object id for the '{@link monitoring.impl.MonitoringPropertyImpl <em>Property</em>}' class. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see monitoring.impl.MonitoringPropertyImpl - * @see monitoring.impl.MonitoringPackageImpl#getMonitoringProperty() - * @generated - */ - int MONITORING_PROPERTY = 0; - - /** - * The feature id for the '<em><b>Name</b></em>' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int MONITORING_PROPERTY__NAME = 0; - - /** - * The feature id for the '<em><b>Value</b></em>' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int MONITORING_PROPERTY__VALUE = 1; - - /** - * The feature id for the '<em><b>Id</b></em>' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int MONITORING_PROPERTY__ID = 2; - - /** - * The number of structural features of the '<em>Property</em>' class. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int MONITORING_PROPERTY_FEATURE_COUNT = 3; - - /** - * The number of operations of the '<em>Property</em>' class. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int MONITORING_PROPERTY_OPERATION_COUNT = 0; - - /** - * The meta object id for the '{@link monitoring.impl.MonitoringPropertyArrayImpl <em>Property Array</em>}' class. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see monitoring.impl.MonitoringPropertyArrayImpl - * @see monitoring.impl.MonitoringPackageImpl#getMonitoringPropertyArray() - * @generated - */ - int MONITORING_PROPERTY_ARRAY = 1; - - /** - * The feature id for the '<em><b>Monitoringpropertyarray Values</b></em>' containment reference list. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES = 0; - - /** - * The number of structural features of the '<em>Property Array</em>' class. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int MONITORING_PROPERTY_ARRAY_FEATURE_COUNT = 1; - - /** - * The number of operations of the '<em>Property Array</em>' class. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int MONITORING_PROPERTY_ARRAY_OPERATION_COUNT = 0; - /** * The meta object id for the '{@link monitoring.impl.SensorImpl <em>Sensor</em>}' class. * <!-- begin-user-doc --> @@ -172,7 +79,7 @@ public interface MonitoringPackage extends EPackage { * @see monitoring.impl.MonitoringPackageImpl#getSensor() * @generated */ - int SENSOR = 2; + int SENSOR = 0; /** * The feature id for the '<em><b>Id</b></em>' attribute. @@ -470,7 +377,7 @@ public interface MonitoringPackage extends EPackage { * @see monitoring.impl.MonitoringPackageImpl#getDatagatherer() * @generated */ - int DATAGATHERER = 3; + int DATAGATHERER = 1; /** * The feature id for the '<em><b>Id</b></em>' attribute. @@ -714,7 +621,7 @@ public interface MonitoringPackage extends EPackage { * @see monitoring.impl.MonitoringPackageImpl#getProcessor() * @generated */ - int PROCESSOR = 4; + int PROCESSOR = 2; /** * The feature id for the '<em><b>Id</b></em>' attribute. @@ -824,6 +731,15 @@ public interface MonitoringPackage extends EPackage { */ int PROCESSOR__OCCI_COMPONENT_STATE_MESSAGE = PlatformPackage.COMPONENT__OCCI_COMPONENT_STATE_MESSAGE; + /** + * The feature id for the '<em><b>Gatherer Address</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROCESSOR__GATHERER_ADDRESS = PlatformPackage.COMPONENT_FEATURE_COUNT + 0; + /** * The number of structural features of the '<em>Processor</em>' class. * <!-- begin-user-doc --> @@ -831,7 +747,7 @@ public interface MonitoringPackage extends EPackage { * @generated * @ordered */ - int PROCESSOR_FEATURE_COUNT = PlatformPackage.COMPONENT_FEATURE_COUNT + 0; + int PROCESSOR_FEATURE_COUNT = PlatformPackage.COMPONENT_FEATURE_COUNT + 1; /** * The operation id for the '<em>Occi Create</em>' operation. @@ -931,7 +847,7 @@ public interface MonitoringPackage extends EPackage { * @see monitoring.impl.MonitoringPackageImpl#getPublisher() * @generated */ - int PUBLISHER = 5; + int PUBLISHER = 3; /** * The feature id for the '<em><b>Id</b></em>' attribute. @@ -1041,6 +957,15 @@ public interface MonitoringPackage extends EPackage { */ int PUBLISHER__OCCI_COMPONENT_STATE_MESSAGE = PlatformPackage.COMPONENT__OCCI_COMPONENT_STATE_MESSAGE; + /** + * The feature id for the '<em><b>Publisher Endpoint</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PUBLISHER__PUBLISHER_ENDPOINT = PlatformPackage.COMPONENT_FEATURE_COUNT + 0; + /** * The number of structural features of the '<em>Publisher</em>' class. * <!-- begin-user-doc --> @@ -1048,7 +973,7 @@ public interface MonitoringPackage extends EPackage { * @generated * @ordered */ - int PUBLISHER_FEATURE_COUNT = PlatformPackage.COMPONENT_FEATURE_COUNT + 0; + int PUBLISHER_FEATURE_COUNT = PlatformPackage.COMPONENT_FEATURE_COUNT + 1; /** * The operation id for the '<em>Occi Create</em>' operation. @@ -1141,32 +1066,50 @@ public interface MonitoringPackage extends EPackage { int PUBLISHER_OPERATION_COUNT = PlatformPackage.COMPONENT_OPERATION_COUNT + 0; /** - * The meta object id for the '{@link monitoring.impl.MonitoringpropertiesImpl <em>Monitoringproperties</em>}' class. + * The meta object id for the '{@link monitoring.impl.MonitoringpropertyImpl <em>Monitoringproperty</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see monitoring.impl.MonitoringpropertiesImpl - * @see monitoring.impl.MonitoringPackageImpl#getMonitoringproperties() + * @see monitoring.impl.MonitoringpropertyImpl + * @see monitoring.impl.MonitoringPackageImpl#getMonitoringproperty() * @generated */ - int MONITORINGPROPERTIES = 6; + int MONITORINGPROPERTY = 4; /** - * The feature id for the '<em><b>Mixin</b></em>' reference. + * The feature id for the '<em><b>Id</b></em>' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int MONITORINGPROPERTIES__MIXIN = OCCIPackage.MIXIN_BASE__MIXIN; + int MONITORINGPROPERTY__ID = OCCIPackage.LINK__ID; /** - * The feature id for the '<em><b>Entity</b></em>' container reference. + * The feature id for the '<em><b>Title</b></em>' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int MONITORINGPROPERTIES__ENTITY = OCCIPackage.MIXIN_BASE__ENTITY; + int MONITORINGPROPERTY__TITLE = OCCIPackage.LINK__TITLE; + + /** + * The feature id for the '<em><b>Kind</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY__KIND = OCCIPackage.LINK__KIND; + + /** + * The feature id for the '<em><b>Location</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY__LOCATION = OCCIPackage.LINK__LOCATION; /** * The feature id for the '<em><b>Attributes</b></em>' containment reference list. @@ -1175,138 +1118,264 @@ public interface MonitoringPackage extends EPackage { * @generated * @ordered */ - int MONITORINGPROPERTIES__ATTRIBUTES = OCCIPackage.MIXIN_BASE__ATTRIBUTES; + int MONITORINGPROPERTY__ATTRIBUTES = OCCIPackage.LINK__ATTRIBUTES; /** - * The feature id for the '<em><b>Monitoring Properties</b></em>' containment reference. + * The feature id for the '<em><b>Mixins</b></em>' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int MONITORINGPROPERTIES__MONITORING_PROPERTIES = OCCIPackage.MIXIN_BASE_FEATURE_COUNT + 0; + int MONITORINGPROPERTY__MIXINS = OCCIPackage.LINK__MIXINS; /** - * The number of structural features of the '<em>Monitoringproperties</em>' class. + * The feature id for the '<em><b>Parts</b></em>' containment reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int MONITORINGPROPERTIES_FEATURE_COUNT = OCCIPackage.MIXIN_BASE_FEATURE_COUNT + 1; + int MONITORINGPROPERTY__PARTS = OCCIPackage.LINK__PARTS; /** - * The operation id for the '<em>Applies Constraint</em>' operation. + * The feature id for the '<em><b>Source</b></em>' container reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int MONITORINGPROPERTIES___APPLIES_CONSTRAINT__DIAGNOSTICCHAIN_MAP = OCCIPackage.MIXIN_BASE_OPERATION_COUNT + 0; + int MONITORINGPROPERTY__SOURCE = OCCIPackage.LINK__SOURCE; /** - * The number of operations of the '<em>Monitoringproperties</em>' class. + * The feature id for the '<em><b>Target</b></em>' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int MONITORINGPROPERTIES_OPERATION_COUNT = OCCIPackage.MIXIN_BASE_OPERATION_COUNT + 1; + int MONITORINGPROPERTY__TARGET = OCCIPackage.LINK__TARGET; /** - * The meta object id for the '<em>Date Time</em>' data type. + * The feature id for the '<em><b>Monitoring Property Name</b></em>' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see java.lang.String - * @see monitoring.impl.MonitoringPackageImpl#getDateTime() * @generated + * @ordered */ - int DATE_TIME = 7; + int MONITORINGPROPERTY__MONITORING_PROPERTY_NAME = OCCIPackage.LINK_FEATURE_COUNT + 0; /** - * The meta object id for the '<em>Second</em>' data type. + * The feature id for the '<em><b>Monitoring Property Value</b></em>' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see java.lang.String - * @see monitoring.impl.MonitoringPackageImpl#getSecond() * @generated + * @ordered */ - int SECOND = 8; + int MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE = OCCIPackage.LINK_FEATURE_COUNT + 1; /** - * The meta object id for the '<em>String</em>' data type. + * The number of structural features of the '<em>Monitoringproperty</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY_FEATURE_COUNT = OCCIPackage.LINK_FEATURE_COUNT + 2; + + /** + * The operation id for the '<em>Occi Create</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY___OCCI_CREATE = OCCIPackage.LINK___OCCI_CREATE; + + /** + * The operation id for the '<em>Occi Retrieve</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY___OCCI_RETRIEVE = OCCIPackage.LINK___OCCI_RETRIEVE; + + /** + * The operation id for the '<em>Occi Update</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY___OCCI_UPDATE = OCCIPackage.LINK___OCCI_UPDATE; + + /** + * The operation id for the '<em>Occi Delete</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY___OCCI_DELETE = OCCIPackage.LINK___OCCI_DELETE; + + /** + * The operation id for the '<em>Link Target Invariant</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY___LINK_TARGET_INVARIANT__KIND_KIND = OCCIPackage.LINK___LINK_TARGET_INVARIANT__KIND_KIND; + + /** + * The operation id for the '<em>Link Source Invariant</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY___LINK_SOURCE_INVARIANT__KIND_KIND = OCCIPackage.LINK___LINK_SOURCE_INVARIANT__KIND_KIND; + + /** + * The operation id for the '<em>Target Constraint</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY___TARGET_CONSTRAINT__DIAGNOSTICCHAIN_MAP = OCCIPackage.LINK_OPERATION_COUNT + 0; + + /** + * The number of operations of the '<em>Monitoringproperty</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MONITORINGPROPERTY_OPERATION_COUNT = OCCIPackage.LINK_OPERATION_COUNT + 1; + + /** + * The meta object id for the '{@link monitoring.impl.MartpublisherImpl <em>Martpublisher</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see monitoring.impl.MartpublisherImpl + * @see monitoring.impl.MonitoringPackageImpl#getMartpublisher() + * @generated + */ + int MARTPUBLISHER = 5; + + /** + * The feature id for the '<em><b>Mixin</b></em>' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see java.lang.String - * @see monitoring.impl.MonitoringPackageImpl#getString() * @generated + * @ordered */ - int STRING = 9; + int MARTPUBLISHER__MIXIN = OCCIPackage.MIXIN_BASE__MIXIN; + /** + * The feature id for the '<em><b>Entity</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MARTPUBLISHER__ENTITY = OCCIPackage.MIXIN_BASE__ENTITY; /** - * Returns the meta object for class '{@link monitoring.MonitoringProperty <em>Property</em>}'. + * The feature id for the '<em><b>Attributes</b></em>' containment reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for class '<em>Property</em>'. - * @see monitoring.MonitoringProperty * @generated + * @ordered */ - EClass getMonitoringProperty(); + int MARTPUBLISHER__ATTRIBUTES = OCCIPackage.MIXIN_BASE__ATTRIBUTES; /** - * Returns the meta object for the attribute '{@link monitoring.MonitoringProperty#getName <em>Name</em>}'. + * The feature id for the '<em><b>Monitoring Property Name</b></em>' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for the attribute '<em>Name</em>'. - * @see monitoring.MonitoringProperty#getName() - * @see #getMonitoringProperty() * @generated + * @ordered */ - EAttribute getMonitoringProperty_Name(); + int MARTPUBLISHER__MONITORING_PROPERTY_NAME = OCCIPackage.MIXIN_BASE_FEATURE_COUNT + 0; /** - * Returns the meta object for the attribute '{@link monitoring.MonitoringProperty#getValue <em>Value</em>}'. + * The feature id for the '<em><b>Monitoring Property Id</b></em>' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for the attribute '<em>Value</em>'. - * @see monitoring.MonitoringProperty#getValue() - * @see #getMonitoringProperty() * @generated + * @ordered */ - EAttribute getMonitoringProperty_Value(); + int MARTPUBLISHER__MONITORING_PROPERTY_ID = OCCIPackage.MIXIN_BASE_FEATURE_COUNT + 1; /** - * Returns the meta object for the attribute '{@link monitoring.MonitoringProperty#getId <em>Id</em>}'. + * The feature id for the '<em><b>Monitoring Property Resource</b></em>' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for the attribute '<em>Id</em>'. - * @see monitoring.MonitoringProperty#getId() - * @see #getMonitoringProperty() * @generated + * @ordered */ - EAttribute getMonitoringProperty_Id(); + int MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE = OCCIPackage.MIXIN_BASE_FEATURE_COUNT + 2; /** - * Returns the meta object for class '{@link monitoring.MonitoringPropertyArray <em>Property Array</em>}'. + * The number of structural features of the '<em>Martpublisher</em>' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for class '<em>Property Array</em>'. - * @see monitoring.MonitoringPropertyArray * @generated + * @ordered */ - EClass getMonitoringPropertyArray(); + int MARTPUBLISHER_FEATURE_COUNT = OCCIPackage.MIXIN_BASE_FEATURE_COUNT + 3; /** - * Returns the meta object for the containment reference list '{@link monitoring.MonitoringPropertyArray#getMonitoringpropertyarrayValues <em>Monitoringpropertyarray Values</em>}'. + * The operation id for the '<em>Applies Constraint</em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for the containment reference list '<em>Monitoringpropertyarray Values</em>'. - * @see monitoring.MonitoringPropertyArray#getMonitoringpropertyarrayValues() - * @see #getMonitoringPropertyArray() + * @generated + * @ordered + */ + int MARTPUBLISHER___APPLIES_CONSTRAINT__DIAGNOSTICCHAIN_MAP = OCCIPackage.MIXIN_BASE_OPERATION_COUNT + 0; + + /** + * The number of operations of the '<em>Martpublisher</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MARTPUBLISHER_OPERATION_COUNT = OCCIPackage.MIXIN_BASE_OPERATION_COUNT + 1; + + /** + * The meta object id for the '<em>Date Time</em>' data type. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see java.lang.String + * @see monitoring.impl.MonitoringPackageImpl#getDateTime() + * @generated + */ + int DATE_TIME = 6; + + /** + * The meta object id for the '<em>Second</em>' data type. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see java.lang.String + * @see monitoring.impl.MonitoringPackageImpl#getSecond() * @generated */ - EReference getMonitoringPropertyArray_MonitoringpropertyarrayValues(); + int SECOND = 7; + + /** + * The meta object id for the '<em>String</em>' data type. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see java.lang.String + * @see monitoring.impl.MonitoringPackageImpl#getString() + * @generated + */ + int STRING = 8; + /** * Returns the meta object for class '{@link monitoring.Sensor <em>Sensor</em>}'. @@ -1437,6 +1506,17 @@ public interface MonitoringPackage extends EPackage { */ EClass getProcessor(); + /** + * Returns the meta object for the attribute '{@link monitoring.Processor#getGathererAddress <em>Gatherer Address</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Gatherer Address</em>'. + * @see monitoring.Processor#getGathererAddress() + * @see #getProcessor() + * @generated + */ + EAttribute getProcessor_GathererAddress(); + /** * Returns the meta object for class '{@link monitoring.Publisher <em>Publisher</em>}'. * <!-- begin-user-doc --> @@ -1448,35 +1528,110 @@ public interface MonitoringPackage extends EPackage { EClass getPublisher(); /** - * Returns the meta object for class '{@link monitoring.Monitoringproperties <em>Monitoringproperties</em>}'. + * Returns the meta object for the attribute '{@link monitoring.Publisher#getPublisherEndpoint <em>Publisher Endpoint</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Publisher Endpoint</em>'. + * @see monitoring.Publisher#getPublisherEndpoint() + * @see #getPublisher() + * @generated + */ + EAttribute getPublisher_PublisherEndpoint(); + + /** + * Returns the meta object for class '{@link monitoring.Monitoringproperty <em>Monitoringproperty</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Monitoringproperty</em>'. + * @see monitoring.Monitoringproperty + * @generated + */ + EClass getMonitoringproperty(); + + /** + * Returns the meta object for the attribute '{@link monitoring.Monitoringproperty#getMonitoringPropertyName <em>Monitoring Property Name</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Monitoring Property Name</em>'. + * @see monitoring.Monitoringproperty#getMonitoringPropertyName() + * @see #getMonitoringproperty() + * @generated + */ + EAttribute getMonitoringproperty_MonitoringPropertyName(); + + /** + * Returns the meta object for the attribute '{@link monitoring.Monitoringproperty#getMonitoringPropertyValue <em>Monitoring Property Value</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Monitoring Property Value</em>'. + * @see monitoring.Monitoringproperty#getMonitoringPropertyValue() + * @see #getMonitoringproperty() + * @generated + */ + EAttribute getMonitoringproperty_MonitoringPropertyValue(); + + /** + * Returns the meta object for the '{@link monitoring.Monitoringproperty#targetConstraint(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Target Constraint</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Target Constraint</em>' operation. + * @see monitoring.Monitoringproperty#targetConstraint(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) + * @generated + */ + EOperation getMonitoringproperty__TargetConstraint__DiagnosticChain_Map(); + + /** + * Returns the meta object for class '{@link monitoring.Martpublisher <em>Martpublisher</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for class '<em>Monitoringproperties</em>'. - * @see monitoring.Monitoringproperties + * @return the meta object for class '<em>Martpublisher</em>'. + * @see monitoring.Martpublisher * @generated */ - EClass getMonitoringproperties(); + EClass getMartpublisher(); /** - * Returns the meta object for the containment reference '{@link monitoring.Monitoringproperties#getMonitoringProperties <em>Monitoring Properties</em>}'. + * Returns the meta object for the attribute '{@link monitoring.Martpublisher#getMonitoringPropertyName <em>Monitoring Property Name</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for the containment reference '<em>Monitoring Properties</em>'. - * @see monitoring.Monitoringproperties#getMonitoringProperties() - * @see #getMonitoringproperties() + * @return the meta object for the attribute '<em>Monitoring Property Name</em>'. + * @see monitoring.Martpublisher#getMonitoringPropertyName() + * @see #getMartpublisher() * @generated */ - EReference getMonitoringproperties_MonitoringProperties(); + EAttribute getMartpublisher_MonitoringPropertyName(); /** - * Returns the meta object for the '{@link monitoring.Monitoringproperties#appliesConstraint(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Applies Constraint</em>}' operation. + * Returns the meta object for the attribute '{@link monitoring.Martpublisher#getMonitoringPropertyId <em>Monitoring Property Id</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Monitoring Property Id</em>'. + * @see monitoring.Martpublisher#getMonitoringPropertyId() + * @see #getMartpublisher() + * @generated + */ + EAttribute getMartpublisher_MonitoringPropertyId(); + + /** + * Returns the meta object for the attribute '{@link monitoring.Martpublisher#getMonitoringPropertyResource <em>Monitoring Property Resource</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Monitoring Property Resource</em>'. + * @see monitoring.Martpublisher#getMonitoringPropertyResource() + * @see #getMartpublisher() + * @generated + */ + EAttribute getMartpublisher_MonitoringPropertyResource(); + + /** + * Returns the meta object for the '{@link monitoring.Martpublisher#appliesConstraint(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Applies Constraint</em>}' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @return the meta object for the '<em>Applies Constraint</em>' operation. - * @see monitoring.Monitoringproperties#appliesConstraint(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) + * @see monitoring.Martpublisher#appliesConstraint(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) * @generated */ - EOperation getMonitoringproperties__AppliesConstraint__DiagnosticChain_Map(); + EOperation getMartpublisher__AppliesConstraint__DiagnosticChain_Map(); /** * Returns the meta object for data type '{@link java.lang.String <em>Date Time</em>}'. @@ -1536,186 +1691,200 @@ public interface MonitoringPackage extends EPackage { */ interface Literals { /** - * The meta object literal for the '{@link monitoring.impl.MonitoringPropertyImpl <em>Property</em>}' class. + * The meta object literal for the '{@link monitoring.impl.SensorImpl <em>Sensor</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see monitoring.impl.MonitoringPropertyImpl - * @see monitoring.impl.MonitoringPackageImpl#getMonitoringProperty() + * @see monitoring.impl.SensorImpl + * @see monitoring.impl.MonitoringPackageImpl#getSensor() * @generated */ - EClass MONITORING_PROPERTY = eINSTANCE.getMonitoringProperty(); + EClass SENSOR = eINSTANCE.getSensor(); /** - * The meta object literal for the '<em><b>Name</b></em>' attribute feature. + * The meta object literal for the '<em><b>Occi Sensor Timebase</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute MONITORING_PROPERTY__NAME = eINSTANCE.getMonitoringProperty_Name(); + EAttribute SENSOR__OCCI_SENSOR_TIMEBASE = eINSTANCE.getSensor_OcciSensorTimebase(); /** - * The meta object literal for the '<em><b>Value</b></em>' attribute feature. + * The meta object literal for the '<em><b>Occi Sensor Timestart</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute MONITORING_PROPERTY__VALUE = eINSTANCE.getMonitoringProperty_Value(); + EAttribute SENSOR__OCCI_SENSOR_TIMESTART = eINSTANCE.getSensor_OcciSensorTimestart(); /** - * The meta object literal for the '<em><b>Id</b></em>' attribute feature. + * The meta object literal for the '<em><b>Occi Sensor Timestop</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute MONITORING_PROPERTY__ID = eINSTANCE.getMonitoringProperty_Id(); + EAttribute SENSOR__OCCI_SENSOR_TIMESTOP = eINSTANCE.getSensor_OcciSensorTimestop(); /** - * The meta object literal for the '{@link monitoring.impl.MonitoringPropertyArrayImpl <em>Property Array</em>}' class. + * The meta object literal for the '<em><b>Occi Sensor Period</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see monitoring.impl.MonitoringPropertyArrayImpl - * @see monitoring.impl.MonitoringPackageImpl#getMonitoringPropertyArray() * @generated */ - EClass MONITORING_PROPERTY_ARRAY = eINSTANCE.getMonitoringPropertyArray(); + EAttribute SENSOR__OCCI_SENSOR_PERIOD = eINSTANCE.getSensor_OcciSensorPeriod(); /** - * The meta object literal for the '<em><b>Monitoringpropertyarray Values</b></em>' containment reference list feature. + * The meta object literal for the '<em><b>Occi Sensor Granularity</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EReference MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES = eINSTANCE.getMonitoringPropertyArray_MonitoringpropertyarrayValues(); + EAttribute SENSOR__OCCI_SENSOR_GRANULARITY = eINSTANCE.getSensor_OcciSensorGranularity(); /** - * The meta object literal for the '{@link monitoring.impl.SensorImpl <em>Sensor</em>}' class. + * The meta object literal for the '<em><b>Occi Sensor Accuracy</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see monitoring.impl.SensorImpl - * @see monitoring.impl.MonitoringPackageImpl#getSensor() * @generated */ - EClass SENSOR = eINSTANCE.getSensor(); + EAttribute SENSOR__OCCI_SENSOR_ACCURACY = eINSTANCE.getSensor_OcciSensorAccuracy(); /** - * The meta object literal for the '<em><b>Occi Sensor Timebase</b></em>' attribute feature. + * The meta object literal for the '{@link monitoring.impl.DatagathererImpl <em>Datagatherer</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> + * @see monitoring.impl.DatagathererImpl + * @see monitoring.impl.MonitoringPackageImpl#getDatagatherer() * @generated */ - EAttribute SENSOR__OCCI_SENSOR_TIMEBASE = eINSTANCE.getSensor_OcciSensorTimebase(); + EClass DATAGATHERER = eINSTANCE.getDatagatherer(); /** - * The meta object literal for the '<em><b>Occi Sensor Timestart</b></em>' attribute feature. + * The meta object literal for the '<em><b>Occi Collector Period</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute SENSOR__OCCI_SENSOR_TIMESTART = eINSTANCE.getSensor_OcciSensorTimestart(); + EAttribute DATAGATHERER__OCCI_COLLECTOR_PERIOD = eINSTANCE.getDatagatherer_OcciCollectorPeriod(); /** - * The meta object literal for the '<em><b>Occi Sensor Timestop</b></em>' attribute feature. + * The meta object literal for the '<em><b>Occi Collector Granularity</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute SENSOR__OCCI_SENSOR_TIMESTOP = eINSTANCE.getSensor_OcciSensorTimestop(); + EAttribute DATAGATHERER__OCCI_COLLECTOR_GRANULARITY = eINSTANCE.getDatagatherer_OcciCollectorGranularity(); /** - * The meta object literal for the '<em><b>Occi Sensor Period</b></em>' attribute feature. + * The meta object literal for the '<em><b>Occi Collector Accuracy</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute SENSOR__OCCI_SENSOR_PERIOD = eINSTANCE.getSensor_OcciSensorPeriod(); + EAttribute DATAGATHERER__OCCI_COLLECTOR_ACCURACY = eINSTANCE.getDatagatherer_OcciCollectorAccuracy(); /** - * The meta object literal for the '<em><b>Occi Sensor Granularity</b></em>' attribute feature. + * The meta object literal for the '{@link monitoring.impl.ProcessorImpl <em>Processor</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> + * @see monitoring.impl.ProcessorImpl + * @see monitoring.impl.MonitoringPackageImpl#getProcessor() * @generated */ - EAttribute SENSOR__OCCI_SENSOR_GRANULARITY = eINSTANCE.getSensor_OcciSensorGranularity(); + EClass PROCESSOR = eINSTANCE.getProcessor(); /** - * The meta object literal for the '<em><b>Occi Sensor Accuracy</b></em>' attribute feature. + * The meta object literal for the '<em><b>Gatherer Address</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute SENSOR__OCCI_SENSOR_ACCURACY = eINSTANCE.getSensor_OcciSensorAccuracy(); + EAttribute PROCESSOR__GATHERER_ADDRESS = eINSTANCE.getProcessor_GathererAddress(); /** - * The meta object literal for the '{@link monitoring.impl.DatagathererImpl <em>Datagatherer</em>}' class. + * The meta object literal for the '{@link monitoring.impl.PublisherImpl <em>Publisher</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see monitoring.impl.DatagathererImpl - * @see monitoring.impl.MonitoringPackageImpl#getDatagatherer() + * @see monitoring.impl.PublisherImpl + * @see monitoring.impl.MonitoringPackageImpl#getPublisher() * @generated */ - EClass DATAGATHERER = eINSTANCE.getDatagatherer(); + EClass PUBLISHER = eINSTANCE.getPublisher(); /** - * The meta object literal for the '<em><b>Occi Collector Period</b></em>' attribute feature. + * The meta object literal for the '<em><b>Publisher Endpoint</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute DATAGATHERER__OCCI_COLLECTOR_PERIOD = eINSTANCE.getDatagatherer_OcciCollectorPeriod(); + EAttribute PUBLISHER__PUBLISHER_ENDPOINT = eINSTANCE.getPublisher_PublisherEndpoint(); /** - * The meta object literal for the '<em><b>Occi Collector Granularity</b></em>' attribute feature. + * The meta object literal for the '{@link monitoring.impl.MonitoringpropertyImpl <em>Monitoringproperty</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> + * @see monitoring.impl.MonitoringpropertyImpl + * @see monitoring.impl.MonitoringPackageImpl#getMonitoringproperty() * @generated */ - EAttribute DATAGATHERER__OCCI_COLLECTOR_GRANULARITY = eINSTANCE.getDatagatherer_OcciCollectorGranularity(); + EClass MONITORINGPROPERTY = eINSTANCE.getMonitoringproperty(); /** - * The meta object literal for the '<em><b>Occi Collector Accuracy</b></em>' attribute feature. + * The meta object literal for the '<em><b>Monitoring Property Name</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EAttribute DATAGATHERER__OCCI_COLLECTOR_ACCURACY = eINSTANCE.getDatagatherer_OcciCollectorAccuracy(); + EAttribute MONITORINGPROPERTY__MONITORING_PROPERTY_NAME = eINSTANCE.getMonitoringproperty_MonitoringPropertyName(); /** - * The meta object literal for the '{@link monitoring.impl.ProcessorImpl <em>Processor</em>}' class. + * The meta object literal for the '<em><b>Monitoring Property Value</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see monitoring.impl.ProcessorImpl - * @see monitoring.impl.MonitoringPackageImpl#getProcessor() * @generated */ - EClass PROCESSOR = eINSTANCE.getProcessor(); + EAttribute MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE = eINSTANCE.getMonitoringproperty_MonitoringPropertyValue(); /** - * The meta object literal for the '{@link monitoring.impl.PublisherImpl <em>Publisher</em>}' class. + * The meta object literal for the '<em><b>Target Constraint</b></em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see monitoring.impl.PublisherImpl - * @see monitoring.impl.MonitoringPackageImpl#getPublisher() * @generated */ - EClass PUBLISHER = eINSTANCE.getPublisher(); + EOperation MONITORINGPROPERTY___TARGET_CONSTRAINT__DIAGNOSTICCHAIN_MAP = eINSTANCE.getMonitoringproperty__TargetConstraint__DiagnosticChain_Map(); + + /** + * The meta object literal for the '{@link monitoring.impl.MartpublisherImpl <em>Martpublisher</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see monitoring.impl.MartpublisherImpl + * @see monitoring.impl.MonitoringPackageImpl#getMartpublisher() + * @generated + */ + EClass MARTPUBLISHER = eINSTANCE.getMartpublisher(); + + /** + * The meta object literal for the '<em><b>Monitoring Property Name</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute MARTPUBLISHER__MONITORING_PROPERTY_NAME = eINSTANCE.getMartpublisher_MonitoringPropertyName(); /** - * The meta object literal for the '{@link monitoring.impl.MonitoringpropertiesImpl <em>Monitoringproperties</em>}' class. + * The meta object literal for the '<em><b>Monitoring Property Id</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see monitoring.impl.MonitoringpropertiesImpl - * @see monitoring.impl.MonitoringPackageImpl#getMonitoringproperties() * @generated */ - EClass MONITORINGPROPERTIES = eINSTANCE.getMonitoringproperties(); + EAttribute MARTPUBLISHER__MONITORING_PROPERTY_ID = eINSTANCE.getMartpublisher_MonitoringPropertyId(); /** - * The meta object literal for the '<em><b>Monitoring Properties</b></em>' containment reference feature. + * The meta object literal for the '<em><b>Monitoring Property Resource</b></em>' attribute feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - EReference MONITORINGPROPERTIES__MONITORING_PROPERTIES = eINSTANCE.getMonitoringproperties_MonitoringProperties(); + EAttribute MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE = eINSTANCE.getMartpublisher_MonitoringPropertyResource(); /** * The meta object literal for the '<em><b>Applies Constraint</b></em>' operation. @@ -1723,7 +1892,7 @@ public interface MonitoringPackage extends EPackage { * <!-- end-user-doc --> * @generated */ - EOperation MONITORINGPROPERTIES___APPLIES_CONSTRAINT__DIAGNOSTICCHAIN_MAP = eINSTANCE.getMonitoringproperties__AppliesConstraint__DiagnosticChain_Map(); + EOperation MARTPUBLISHER___APPLIES_CONSTRAINT__DIAGNOSTICCHAIN_MAP = eINSTANCE.getMartpublisher__AppliesConstraint__DiagnosticChain_Map(); /** * The meta object literal for the '<em>Date Time</em>' data type. diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringProperty.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringProperty.java deleted file mode 100644 index 5912e67..0000000 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringProperty.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * Copyright (c) 2015-2017 Obeo, Inria - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * - William Piers <william.piers@obeo.fr> - * - Philippe Merle <philippe.merle@inria.fr> - * - Faiez Zalila <faiez.zalila@inria.fr> - */ -package monitoring; - -import org.eclipse.emf.ecore.EObject; - -/** - * <!-- begin-user-doc --> - * A representation of the model object '<em><b>Property</b></em>'. - * <!-- end-user-doc --> - * - * <p> - * The following features are supported: - * </p> - * <ul> - * <li>{@link monitoring.MonitoringProperty#getName <em>Name</em>}</li> - * <li>{@link monitoring.MonitoringProperty#getValue <em>Value</em>}</li> - * <li>{@link monitoring.MonitoringProperty#getId <em>Id</em>}</li> - * </ul> - * - * @see monitoring.MonitoringPackage#getMonitoringProperty() - * @model - * @generated - */ -public interface MonitoringProperty extends EObject { - /** - * Returns the value of the '<em><b>Name</b></em>' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * <!-- begin-model-doc --> - * - * <!-- end-model-doc --> - * @return the value of the '<em>Name</em>' attribute. - * @see #setName(String) - * @see monitoring.MonitoringPackage#getMonitoringProperty_Name() - * @model dataType="monitoring.String" required="true" - * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!MonitoringProperty!name'" - * @generated - */ - String getName(); - - /** - * Sets the value of the '{@link monitoring.MonitoringProperty#getName <em>Name</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @param value the new value of the '<em>Name</em>' attribute. - * @see #getName() - * @generated - */ - void setName(String value); - - /** - * Returns the value of the '<em><b>Value</b></em>' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * <!-- begin-model-doc --> - * - * <!-- end-model-doc --> - * @return the value of the '<em>Value</em>' attribute. - * @see #setValue(String) - * @see monitoring.MonitoringPackage#getMonitoringProperty_Value() - * @model dataType="monitoring.String" required="true" - * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!MonitoringProperty!value'" - * @generated - */ - String getValue(); - - /** - * Sets the value of the '{@link monitoring.MonitoringProperty#getValue <em>Value</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @param value the new value of the '<em>Value</em>' attribute. - * @see #getValue() - * @generated - */ - void setValue(String value); - - /** - * Returns the value of the '<em><b>Id</b></em>' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * <!-- begin-model-doc --> - * - * <!-- end-model-doc --> - * @return the value of the '<em>Id</em>' attribute. - * @see #setId(String) - * @see monitoring.MonitoringPackage#getMonitoringProperty_Id() - * @model dataType="monitoring.String" required="true" - * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!MonitoringProperty!Id'" - * @generated - */ - String getId(); - - /** - * Sets the value of the '{@link monitoring.MonitoringProperty#getId <em>Id</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @param value the new value of the '<em>Id</em>' attribute. - * @see #getId() - * @generated - */ - void setId(String value); - -} // MonitoringProperty diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringPropertyArray.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringPropertyArray.java deleted file mode 100644 index dda505b..0000000 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringPropertyArray.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Copyright (c) 2015-2017 Obeo, Inria - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * - William Piers <william.piers@obeo.fr> - * - Philippe Merle <philippe.merle@inria.fr> - * - Faiez Zalila <faiez.zalila@inria.fr> - */ -package monitoring; - -import org.eclipse.emf.common.util.EList; - -import org.eclipse.emf.ecore.EObject; - -/** - * <!-- begin-user-doc --> - * A representation of the model object '<em><b>Property Array</b></em>'. - * <!-- end-user-doc --> - * - * <p> - * The following features are supported: - * </p> - * <ul> - * <li>{@link monitoring.MonitoringPropertyArray#getMonitoringpropertyarrayValues <em>Monitoringpropertyarray Values</em>}</li> - * </ul> - * - * @see monitoring.MonitoringPackage#getMonitoringPropertyArray() - * @model - * @generated - */ -public interface MonitoringPropertyArray extends EObject { - /** - * Returns the value of the '<em><b>Monitoringpropertyarray Values</b></em>' containment reference list. - * The list contents are of type {@link monitoring.MonitoringProperty}. - * <!-- begin-user-doc --> - * <p> - * If the meaning of the '<em>Monitoringpropertyarray Values</em>' containment reference list isn't clear, - * there really should be more of a description here... - * </p> - * <!-- end-user-doc --> - * @return the value of the '<em>Monitoringpropertyarray Values</em>' containment reference list. - * @see monitoring.MonitoringPackage#getMonitoringPropertyArray_MonitoringpropertyarrayValues() - * @model containment="true" - * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!MonitoringPropertyArray!monitoringpropertyarrayValues'" - * @generated - */ - EList<MonitoringProperty> getMonitoringpropertyarrayValues(); - -} // MonitoringPropertyArray diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringTables.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringTables.java index 1ad948b..57a1073 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringTables.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/MonitoringTables.java @@ -29,11 +29,9 @@ import org.eclipse.ocl.pivot.ids.TypeId; import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorPackage; import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorProperty; import org.eclipse.ocl.pivot.internal.library.ecore.EcoreExecutorType; -import org.eclipse.ocl.pivot.internal.library.ecore.EcoreLibraryOppositeProperty; import org.eclipse.ocl.pivot.internal.library.executor.ExecutorFragment; import org.eclipse.ocl.pivot.internal.library.executor.ExecutorOperation; import org.eclipse.ocl.pivot.internal.library.executor.ExecutorProperty; -import org.eclipse.ocl.pivot.internal.library.executor.ExecutorPropertyWithImplementation; import org.eclipse.ocl.pivot.internal.library.executor.ExecutorStandardLibrary; import org.eclipse.ocl.pivot.oclstdlib.OCLstdlibTables; import org.eclipse.ocl.pivot.utilities.TypeUtil; @@ -70,15 +68,16 @@ public class MonitoringTables public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.NsURIPackageId PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore = org.eclipse.ocl.pivot.ids.IdManager.getNsURIPackageId("http://schemas.ugoe.cs.rwm/monitoring/ecore", null, monitoring.MonitoringPackage.eINSTANCE); public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_Class = monitoring.MonitoringTables.PACKid_$metamodel$.getClassId("Class", 0); public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_Entity = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ogf_org_s_occi_s_core_s_ecore.getClassId("Entity", 0); - public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_MonitoringProperty = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getClassId("MonitoringProperty", 0); - public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_MonitoringPropertyArray = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getClassId("MonitoringPropertyArray", 0); - public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_Monitoringproperties = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getClassId("Monitoringproperties", 0); + public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_Martpublisher = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getClassId("Martpublisher", 0); + public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_Monitoringproperty = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getClassId("Monitoringproperty", 0); + public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_Publisher = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getClassId("Publisher", 0); public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_Resource = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ogf_org_s_occi_s_core_s_ecore.getClassId("Resource", 0); + public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.ClassId CLSSid_Sensor = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getClassId("Sensor", 0); public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.DataTypeId DATAid_DateTime = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getDataTypeId("DateTime", 0); public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.DataTypeId DATAid_Second = monitoring.MonitoringTables.PACKid_http_c_s_s_schemas_ugoe_cs_rwm_s_monitoring_s_ecore.getDataTypeId("Second", 0); public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.values.IntegerValue INT_0 = org.eclipse.ocl.pivot.utilities.ValueUtil.integerValueOf("0"); - public static final /*@NonInvalid*/ java.lang.String STR_Monitoringproperties_c_c_appliesConstraint = "Monitoringproperties::appliesConstraint"; - public static final /*@NonInvalid*/ org.eclipse.ocl.pivot.ids.CollectionTypeId ORD_CLSSid_MonitoringProperty = org.eclipse.ocl.pivot.ids.TypeId.ORDERED_SET.getSpecializedId(monitoring.MonitoringTables.CLSSid_MonitoringProperty); + public static final /*@NonInvalid*/ java.lang.String STR_Martpublisher_c_c_appliesConstraint = "Martpublisher::appliesConstraint"; + public static final /*@NonInvalid*/ java.lang.String STR_Monitoringproperty_c_c_targetConstraint = "Monitoringproperty::targetConstraint"; /** * The type parameters for templated types and operations. @@ -110,9 +109,8 @@ public class MonitoringTables public static final /*@NonNull*/ EcoreExecutorType _Datagatherer = new EcoreExecutorType(MonitoringPackage.Literals.DATAGATHERER, PACKAGE, 0); public static final /*@NonNull*/ EcoreExecutorType _DateTime = new EcoreExecutorType("DateTime", PACKAGE, 0); - public static final /*@NonNull*/ EcoreExecutorType _MonitoringProperty = new EcoreExecutorType(MonitoringPackage.Literals.MONITORING_PROPERTY, PACKAGE, 0); - public static final /*@NonNull*/ EcoreExecutorType _MonitoringPropertyArray = new EcoreExecutorType(MonitoringPackage.Literals.MONITORING_PROPERTY_ARRAY, PACKAGE, 0); - public static final /*@NonNull*/ EcoreExecutorType _Monitoringproperties = new EcoreExecutorType(MonitoringPackage.Literals.MONITORINGPROPERTIES, PACKAGE, 0); + public static final /*@NonNull*/ EcoreExecutorType _Martpublisher = new EcoreExecutorType(MonitoringPackage.Literals.MARTPUBLISHER, PACKAGE, 0); + public static final /*@NonNull*/ EcoreExecutorType _Monitoringproperty = new EcoreExecutorType(MonitoringPackage.Literals.MONITORINGPROPERTY, PACKAGE, 0); public static final /*@NonNull*/ EcoreExecutorType _Processor = new EcoreExecutorType(MonitoringPackage.Literals.PROCESSOR, PACKAGE, 0); public static final /*@NonNull*/ EcoreExecutorType _Publisher = new EcoreExecutorType(MonitoringPackage.Literals.PUBLISHER, PACKAGE, 0); public static final /*@NonNull*/ EcoreExecutorType _Second = new EcoreExecutorType("Second", PACKAGE, 0); @@ -122,9 +120,8 @@ public class MonitoringTables private static final /*@NonNull*/ EcoreExecutorType /*@NonNull*/ [] types = { _Datagatherer, _DateTime, - _MonitoringProperty, - _MonitoringPropertyArray, - _Monitoringproperties, + _Martpublisher, + _Monitoringproperty, _Processor, _Publisher, _Second, @@ -165,18 +162,16 @@ public class MonitoringTables private static final /*@NonNull*/ ExecutorFragment _DateTime__DateTime = new ExecutorFragment(Types._DateTime, MonitoringTables.Types._DateTime); private static final /*@NonNull*/ ExecutorFragment _DateTime__OclAny = new ExecutorFragment(Types._DateTime, OCLstdlibTables.Types._OclAny); - private static final /*@NonNull*/ ExecutorFragment _MonitoringProperty__MonitoringProperty = new ExecutorFragment(Types._MonitoringProperty, MonitoringTables.Types._MonitoringProperty); - private static final /*@NonNull*/ ExecutorFragment _MonitoringProperty__OclAny = new ExecutorFragment(Types._MonitoringProperty, OCLstdlibTables.Types._OclAny); - private static final /*@NonNull*/ ExecutorFragment _MonitoringProperty__OclElement = new ExecutorFragment(Types._MonitoringProperty, OCLstdlibTables.Types._OclElement); + private static final /*@NonNull*/ ExecutorFragment _Martpublisher__Martpublisher = new ExecutorFragment(Types._Martpublisher, MonitoringTables.Types._Martpublisher); + private static final /*@NonNull*/ ExecutorFragment _Martpublisher__MixinBase = new ExecutorFragment(Types._Martpublisher, OCCITables.Types._MixinBase); + private static final /*@NonNull*/ ExecutorFragment _Martpublisher__OclAny = new ExecutorFragment(Types._Martpublisher, OCLstdlibTables.Types._OclAny); + private static final /*@NonNull*/ ExecutorFragment _Martpublisher__OclElement = new ExecutorFragment(Types._Martpublisher, OCLstdlibTables.Types._OclElement); - private static final /*@NonNull*/ ExecutorFragment _MonitoringPropertyArray__MonitoringPropertyArray = new ExecutorFragment(Types._MonitoringPropertyArray, MonitoringTables.Types._MonitoringPropertyArray); - private static final /*@NonNull*/ ExecutorFragment _MonitoringPropertyArray__OclAny = new ExecutorFragment(Types._MonitoringPropertyArray, OCLstdlibTables.Types._OclAny); - private static final /*@NonNull*/ ExecutorFragment _MonitoringPropertyArray__OclElement = new ExecutorFragment(Types._MonitoringPropertyArray, OCLstdlibTables.Types._OclElement); - - private static final /*@NonNull*/ ExecutorFragment _Monitoringproperties__MixinBase = new ExecutorFragment(Types._Monitoringproperties, OCCITables.Types._MixinBase); - private static final /*@NonNull*/ ExecutorFragment _Monitoringproperties__Monitoringproperties = new ExecutorFragment(Types._Monitoringproperties, MonitoringTables.Types._Monitoringproperties); - private static final /*@NonNull*/ ExecutorFragment _Monitoringproperties__OclAny = new ExecutorFragment(Types._Monitoringproperties, OCLstdlibTables.Types._OclAny); - private static final /*@NonNull*/ ExecutorFragment _Monitoringproperties__OclElement = new ExecutorFragment(Types._Monitoringproperties, OCLstdlibTables.Types._OclElement); + private static final /*@NonNull*/ ExecutorFragment _Monitoringproperty__Entity = new ExecutorFragment(Types._Monitoringproperty, OCCITables.Types._Entity); + private static final /*@NonNull*/ ExecutorFragment _Monitoringproperty__Link = new ExecutorFragment(Types._Monitoringproperty, OCCITables.Types._Link); + private static final /*@NonNull*/ ExecutorFragment _Monitoringproperty__Monitoringproperty = new ExecutorFragment(Types._Monitoringproperty, MonitoringTables.Types._Monitoringproperty); + private static final /*@NonNull*/ ExecutorFragment _Monitoringproperty__OclAny = new ExecutorFragment(Types._Monitoringproperty, OCLstdlibTables.Types._OclAny); + private static final /*@NonNull*/ ExecutorFragment _Monitoringproperty__OclElement = new ExecutorFragment(Types._Monitoringproperty, OCLstdlibTables.Types._OclElement); private static final /*@NonNull*/ ExecutorFragment _Processor__Component = new ExecutorFragment(Types._Processor, PlatformTables.Types._Component); private static final /*@NonNull*/ ExecutorFragment _Processor__Entity = new ExecutorFragment(Types._Processor, OCCITables.Types._Entity); @@ -366,15 +361,16 @@ public class MonitoringTables public static final /*@NonNull*/ ExecutorProperty _Datagatherer__occiCollectorGranularity = new EcoreExecutorProperty(MonitoringPackage.Literals.DATAGATHERER__OCCI_COLLECTOR_GRANULARITY, Types._Datagatherer, 1); public static final /*@NonNull*/ ExecutorProperty _Datagatherer__occiCollectorPeriod = new EcoreExecutorProperty(MonitoringPackage.Literals.DATAGATHERER__OCCI_COLLECTOR_PERIOD, Types._Datagatherer, 2); - public static final /*@NonNull*/ ExecutorProperty _MonitoringProperty__Id = new EcoreExecutorProperty(MonitoringPackage.Literals.MONITORING_PROPERTY__ID, Types._MonitoringProperty, 0); - public static final /*@NonNull*/ ExecutorProperty _MonitoringProperty__name = new EcoreExecutorProperty(MonitoringPackage.Literals.MONITORING_PROPERTY__NAME, Types._MonitoringProperty, 1); - public static final /*@NonNull*/ ExecutorProperty _MonitoringProperty__value = new EcoreExecutorProperty(MonitoringPackage.Literals.MONITORING_PROPERTY__VALUE, Types._MonitoringProperty, 2); - public static final /*@NonNull*/ ExecutorProperty _MonitoringProperty__MonitoringPropertyArray__monitoringpropertyarrayValues = new ExecutorPropertyWithImplementation("MonitoringPropertyArray", Types._MonitoringProperty, 3, new EcoreLibraryOppositeProperty(MonitoringPackage.Literals.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES)); + public static final /*@NonNull*/ ExecutorProperty _Martpublisher__monitoringPropertyId = new EcoreExecutorProperty(MonitoringPackage.Literals.MARTPUBLISHER__MONITORING_PROPERTY_ID, Types._Martpublisher, 0); + public static final /*@NonNull*/ ExecutorProperty _Martpublisher__monitoringPropertyName = new EcoreExecutorProperty(MonitoringPackage.Literals.MARTPUBLISHER__MONITORING_PROPERTY_NAME, Types._Martpublisher, 1); + public static final /*@NonNull*/ ExecutorProperty _Martpublisher__monitoringPropertyResource = new EcoreExecutorProperty(MonitoringPackage.Literals.MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE, Types._Martpublisher, 2); + + public static final /*@NonNull*/ ExecutorProperty _Monitoringproperty__monitoringPropertyName = new EcoreExecutorProperty(MonitoringPackage.Literals.MONITORINGPROPERTY__MONITORING_PROPERTY_NAME, Types._Monitoringproperty, 0); + public static final /*@NonNull*/ ExecutorProperty _Monitoringproperty__monitoringPropertyValue = new EcoreExecutorProperty(MonitoringPackage.Literals.MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE, Types._Monitoringproperty, 1); - public static final /*@NonNull*/ ExecutorProperty _MonitoringPropertyArray__monitoringpropertyarrayValues = new EcoreExecutorProperty(MonitoringPackage.Literals.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES, Types._MonitoringPropertyArray, 0); - public static final /*@NonNull*/ ExecutorProperty _MonitoringPropertyArray__Monitoringproperties__monitoringProperties = new ExecutorPropertyWithImplementation("Monitoringproperties", Types._MonitoringPropertyArray, 1, new EcoreLibraryOppositeProperty(MonitoringPackage.Literals.MONITORINGPROPERTIES__MONITORING_PROPERTIES)); + public static final /*@NonNull*/ ExecutorProperty _Processor__gathererAddress = new EcoreExecutorProperty(MonitoringPackage.Literals.PROCESSOR__GATHERER_ADDRESS, Types._Processor, 0); - public static final /*@NonNull*/ ExecutorProperty _Monitoringproperties__monitoringProperties = new EcoreExecutorProperty(MonitoringPackage.Literals.MONITORINGPROPERTIES__MONITORING_PROPERTIES, Types._Monitoringproperties, 0); + public static final /*@NonNull*/ ExecutorProperty _Publisher__publisherEndpoint = new EcoreExecutorProperty(MonitoringPackage.Literals.PUBLISHER__PUBLISHER_ENDPOINT, Types._Publisher, 0); public static final /*@NonNull*/ ExecutorProperty _Sensor__occiSensorAccuracy = new EcoreExecutorProperty(MonitoringPackage.Literals.SENSOR__OCCI_SENSOR_ACCURACY, Types._Sensor, 0); public static final /*@NonNull*/ ExecutorProperty _Sensor__occiSensorGranularity = new EcoreExecutorProperty(MonitoringPackage.Literals.SENSOR__OCCI_SENSOR_GRANULARITY, Types._Sensor, 1); @@ -419,30 +415,24 @@ public class MonitoringTables }; private static final int /*@NonNull*/ [] __DateTime = { 1,1 }; - private static final /*@NonNull*/ ExecutorFragment /*@NonNull*/ [] _MonitoringProperty = - { - Fragments._MonitoringProperty__OclAny /* 0 */, - Fragments._MonitoringProperty__OclElement /* 1 */, - Fragments._MonitoringProperty__MonitoringProperty /* 2 */ - }; - private static final int /*@NonNull*/ [] __MonitoringProperty = { 1,1,1 }; - - private static final /*@NonNull*/ ExecutorFragment /*@NonNull*/ [] _MonitoringPropertyArray = + private static final /*@NonNull*/ ExecutorFragment /*@NonNull*/ [] _Martpublisher = { - Fragments._MonitoringPropertyArray__OclAny /* 0 */, - Fragments._MonitoringPropertyArray__OclElement /* 1 */, - Fragments._MonitoringPropertyArray__MonitoringPropertyArray /* 2 */ + Fragments._Martpublisher__OclAny /* 0 */, + Fragments._Martpublisher__OclElement /* 1 */, + Fragments._Martpublisher__MixinBase /* 2 */, + Fragments._Martpublisher__Martpublisher /* 3 */ }; - private static final int /*@NonNull*/ [] __MonitoringPropertyArray = { 1,1,1 }; + private static final int /*@NonNull*/ [] __Martpublisher = { 1,1,1,1 }; - private static final /*@NonNull*/ ExecutorFragment /*@NonNull*/ [] _Monitoringproperties = + private static final /*@NonNull*/ ExecutorFragment /*@NonNull*/ [] _Monitoringproperty = { - Fragments._Monitoringproperties__OclAny /* 0 */, - Fragments._Monitoringproperties__OclElement /* 1 */, - Fragments._Monitoringproperties__MixinBase /* 2 */, - Fragments._Monitoringproperties__Monitoringproperties /* 3 */ + Fragments._Monitoringproperty__OclAny /* 0 */, + Fragments._Monitoringproperty__OclElement /* 1 */, + Fragments._Monitoringproperty__Entity /* 2 */, + Fragments._Monitoringproperty__Link /* 3 */, + Fragments._Monitoringproperty__Monitoringproperty /* 4 */ }; - private static final int /*@NonNull*/ [] __Monitoringproperties = { 1,1,1,1 }; + private static final int /*@NonNull*/ [] __Monitoringproperty = { 1,1,1,1,1 }; private static final /*@NonNull*/ ExecutorFragment /*@NonNull*/ [] _Processor = { @@ -499,9 +489,8 @@ public class MonitoringTables static { Types._Datagatherer.initFragments(_Datagatherer, __Datagatherer); Types._DateTime.initFragments(_DateTime, __DateTime); - Types._MonitoringProperty.initFragments(_MonitoringProperty, __MonitoringProperty); - Types._MonitoringPropertyArray.initFragments(_MonitoringPropertyArray, __MonitoringPropertyArray); - Types._Monitoringproperties.initFragments(_Monitoringproperties, __Monitoringproperties); + Types._Martpublisher.initFragments(_Martpublisher, __Martpublisher); + Types._Monitoringproperty.initFragments(_Monitoringproperty, __Monitoringproperty); Types._Processor.initFragments(_Processor, __Processor); Types._Publisher.initFragments(_Publisher, __Publisher); Types._Second.initFragments(_Second, __Second); @@ -591,8 +580,9 @@ public class MonitoringTables OCLstdlibTables.Operations._OclAny__toString /* toString() */ }; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _MonitoringProperty__MonitoringProperty = {}; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _MonitoringProperty__OclAny = { + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Martpublisher__Martpublisher = {}; + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Martpublisher__MixinBase = {}; + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Martpublisher__OclAny = { OCLstdlibTables.Operations._OclAny___lt__gt_ /* _'<>'(OclSelf[?]) */, OCLstdlibTables.Operations._OclAny___eq_ /* _'='(OclSelf[?]) */, OCLstdlibTables.Operations._OclAny__oclAsSet /* oclAsSet() */, @@ -609,7 +599,7 @@ public class MonitoringTables OCLstdlibTables.Operations._OclAny__oclTypes /* oclTypes() */, OCLstdlibTables.Operations._OclAny__toString /* toString() */ }; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _MonitoringProperty__OclElement = { + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Martpublisher__OclElement = { OCLstdlibTables.Operations._OclElement__allInstances /* allInstances() */, OCLstdlibTables.Operations._OclElement__oclAsModelType /* oclAsModelType(TT)(TT[?]) */, OCLstdlibTables.Operations._OclElement__oclContainer /* oclContainer() */, @@ -619,37 +609,24 @@ public class MonitoringTables OCLstdlibTables.Operations._OclElement__oclModelTypes /* oclModelTypes() */ }; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _MonitoringPropertyArray__MonitoringPropertyArray = {}; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _MonitoringPropertyArray__OclAny = { - OCLstdlibTables.Operations._OclAny___lt__gt_ /* _'<>'(OclSelf[?]) */, - OCLstdlibTables.Operations._OclAny___eq_ /* _'='(OclSelf[?]) */, - OCLstdlibTables.Operations._OclAny__oclAsSet /* oclAsSet() */, - OCLstdlibTables.Operations._OclAny__oclAsType /* oclAsType(TT)(TT[?]) */, - OCLstdlibTables.Operations._OclAny__oclIsInState /* oclIsInState(OclState[?]) */, - OCLstdlibTables.Operations._OclAny__oclIsInvalid /* oclIsInvalid() */, - OCLstdlibTables.Operations._OclAny__oclIsKindOf /* oclIsKindOf(OclType[?]) */, - OCLstdlibTables.Operations._OclAny__oclIsNew /* oclIsNew() */, - OCLstdlibTables.Operations._OclAny__oclIsTypeOf /* oclIsTypeOf(OclType[?]) */, - OCLstdlibTables.Operations._OclAny__oclIsUndefined /* oclIsUndefined() */, - OCLstdlibTables.Operations._OclAny__0_oclLog /* oclLog() */, - OCLstdlibTables.Operations._OclAny__1_oclLog /* oclLog(String[?]) */, - OCLstdlibTables.Operations._OclAny__oclType /* oclType() */, - OCLstdlibTables.Operations._OclAny__oclTypes /* oclTypes() */, - OCLstdlibTables.Operations._OclAny__toString /* toString() */ + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperty__Monitoringproperty = {}; + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperty__Entity = { + OCCITables.Operations._Entity__occiCreate /* occiCreate() */, + OCCITables.Operations._Entity__occiCreate /* occiCreate() */, + OCCITables.Operations._Entity__occiDelete /* occiDelete() */, + OCCITables.Operations._Entity__occiDelete /* occiDelete() */, + OCCITables.Operations._Entity__occiRetrieve /* occiRetrieve() */, + OCCITables.Operations._Entity__occiRetrieve /* occiRetrieve() */, + OCCITables.Operations._Entity__occiUpdate /* occiUpdate() */, + OCCITables.Operations._Entity__occiUpdate /* occiUpdate() */ }; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _MonitoringPropertyArray__OclElement = { - OCLstdlibTables.Operations._OclElement__allInstances /* allInstances() */, - OCLstdlibTables.Operations._OclElement__oclAsModelType /* oclAsModelType(TT)(TT[?]) */, - OCLstdlibTables.Operations._OclElement__oclContainer /* oclContainer() */, - OCLstdlibTables.Operations._OclElement__oclContents /* oclContents() */, - OCLstdlibTables.Operations._OclElement__oclIsModelKindOf /* oclIsModelKindOf(OclType[?]) */, - OCLstdlibTables.Operations._OclElement__oclModelType /* oclModelType() */, - OCLstdlibTables.Operations._OclElement__oclModelTypes /* oclModelTypes() */ + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperty__Link = { + OCCITables.Operations._Link__LinkSourceInvariant /* LinkSourceInvariant(Kind[?],Kind[?]) */, + OCCITables.Operations._Link__LinkSourceInvariant /* LinkSourceInvariant(Kind[?],Kind[?]) */, + OCCITables.Operations._Link__LinkTargetInvariant /* LinkTargetInvariant(Kind[?],Kind[?]) */, + OCCITables.Operations._Link__LinkTargetInvariant /* LinkTargetInvariant(Kind[?],Kind[?]) */ }; - - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperties__Monitoringproperties = {}; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperties__MixinBase = {}; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperties__OclAny = { + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperty__OclAny = { OCLstdlibTables.Operations._OclAny___lt__gt_ /* _'<>'(OclSelf[?]) */, OCLstdlibTables.Operations._OclAny___eq_ /* _'='(OclSelf[?]) */, OCLstdlibTables.Operations._OclAny__oclAsSet /* oclAsSet() */, @@ -666,7 +643,7 @@ public class MonitoringTables OCLstdlibTables.Operations._OclAny__oclTypes /* oclTypes() */, OCLstdlibTables.Operations._OclAny__toString /* toString() */ }; - private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperties__OclElement = { + private static final /*@NonNull*/ ExecutorOperation /*@NonNull*/ [] _Monitoringproperty__OclElement = { OCLstdlibTables.Operations._OclElement__allInstances /* allInstances() */, OCLstdlibTables.Operations._OclElement__oclAsModelType /* oclAsModelType(TT)(TT[?]) */, OCLstdlibTables.Operations._OclElement__oclContainer /* oclContainer() */, @@ -916,18 +893,16 @@ public class MonitoringTables Fragments._DateTime__DateTime.initOperations(_DateTime__DateTime); Fragments._DateTime__OclAny.initOperations(_DateTime__OclAny); - Fragments._MonitoringProperty__MonitoringProperty.initOperations(_MonitoringProperty__MonitoringProperty); - Fragments._MonitoringProperty__OclAny.initOperations(_MonitoringProperty__OclAny); - Fragments._MonitoringProperty__OclElement.initOperations(_MonitoringProperty__OclElement); - - Fragments._MonitoringPropertyArray__MonitoringPropertyArray.initOperations(_MonitoringPropertyArray__MonitoringPropertyArray); - Fragments._MonitoringPropertyArray__OclAny.initOperations(_MonitoringPropertyArray__OclAny); - Fragments._MonitoringPropertyArray__OclElement.initOperations(_MonitoringPropertyArray__OclElement); + Fragments._Martpublisher__Martpublisher.initOperations(_Martpublisher__Martpublisher); + Fragments._Martpublisher__MixinBase.initOperations(_Martpublisher__MixinBase); + Fragments._Martpublisher__OclAny.initOperations(_Martpublisher__OclAny); + Fragments._Martpublisher__OclElement.initOperations(_Martpublisher__OclElement); - Fragments._Monitoringproperties__MixinBase.initOperations(_Monitoringproperties__MixinBase); - Fragments._Monitoringproperties__Monitoringproperties.initOperations(_Monitoringproperties__Monitoringproperties); - Fragments._Monitoringproperties__OclAny.initOperations(_Monitoringproperties__OclAny); - Fragments._Monitoringproperties__OclElement.initOperations(_Monitoringproperties__OclElement); + Fragments._Monitoringproperty__Entity.initOperations(_Monitoringproperty__Entity); + Fragments._Monitoringproperty__Link.initOperations(_Monitoringproperty__Link); + Fragments._Monitoringproperty__Monitoringproperty.initOperations(_Monitoringproperty__Monitoringproperty); + Fragments._Monitoringproperty__OclAny.initOperations(_Monitoringproperty__OclAny); + Fragments._Monitoringproperty__OclElement.initOperations(_Monitoringproperty__OclElement); Fragments._Processor__Component.initOperations(_Processor__Component); Fragments._Processor__Entity.initOperations(_Processor__Entity); @@ -984,23 +959,24 @@ public class MonitoringTables private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _DateTime = {}; - private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _MonitoringProperty = { - MonitoringTables.Properties._MonitoringProperty__Id, - MonitoringTables.Properties._MonitoringProperty__name, - MonitoringTables.Properties._MonitoringProperty__value + private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _Martpublisher = { + MonitoringTables.Properties._Martpublisher__monitoringPropertyId, + MonitoringTables.Properties._Martpublisher__monitoringPropertyName, + MonitoringTables.Properties._Martpublisher__monitoringPropertyResource }; - private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _MonitoringPropertyArray = { - MonitoringTables.Properties._MonitoringPropertyArray__monitoringpropertyarrayValues + private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _Monitoringproperty = { + MonitoringTables.Properties._Monitoringproperty__monitoringPropertyName, + MonitoringTables.Properties._Monitoringproperty__monitoringPropertyValue }; - private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _Monitoringproperties = { - MonitoringTables.Properties._Monitoringproperties__monitoringProperties + private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _Processor = { + MonitoringTables.Properties._Processor__gathererAddress }; - private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _Processor = {}; - - private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _Publisher = {}; + private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _Publisher = { + MonitoringTables.Properties._Publisher__publisherEndpoint + }; private static final /*@NonNull*/ ExecutorProperty /*@NonNull*/ [] _Second = {}; @@ -1021,9 +997,8 @@ public class MonitoringTables static { Fragments._Datagatherer__Datagatherer.initProperties(_Datagatherer); Fragments._DateTime__DateTime.initProperties(_DateTime); - Fragments._MonitoringProperty__MonitoringProperty.initProperties(_MonitoringProperty); - Fragments._MonitoringPropertyArray__MonitoringPropertyArray.initProperties(_MonitoringPropertyArray); - Fragments._Monitoringproperties__Monitoringproperties.initProperties(_Monitoringproperties); + Fragments._Martpublisher__Martpublisher.initProperties(_Martpublisher); + Fragments._Monitoringproperty__Monitoringproperty.initProperties(_Monitoringproperty); Fragments._Processor__Processor.initProperties(_Processor); Fragments._Publisher__Publisher.initProperties(_Publisher); Fragments._Second__Second.initProperties(_Second); diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Monitoringproperties.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Monitoringproperties.java deleted file mode 100644 index 30bff2b..0000000 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Monitoringproperties.java +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Copyright (c) 2015-2017 Obeo, Inria - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * - William Piers <william.piers@obeo.fr> - * - Philippe Merle <philippe.merle@inria.fr> - * - Faiez Zalila <faiez.zalila@inria.fr> - */ -package monitoring; - -import java.util.Map; - -import org.eclipse.cmf.occi.core.MixinBase; - -import org.eclipse.emf.common.util.DiagnosticChain; - -/** - * <!-- begin-user-doc --> - * A representation of the model object '<em><b>Monitoringproperties</b></em>'. - * <!-- end-user-doc --> - * - * <p> - * The following features are supported: - * </p> - * <ul> - * <li>{@link monitoring.Monitoringproperties#getMonitoringProperties <em>Monitoring Properties</em>}</li> - * </ul> - * - * @see monitoring.MonitoringPackage#getMonitoringproperties() - * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='appliesConstraint'" - * @generated - */ -public interface Monitoringproperties extends MixinBase { - /** - * Returns the value of the '<em><b>Monitoring Properties</b></em>' containment reference. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * <!-- begin-model-doc --> - * - * <!-- end-model-doc --> - * @return the value of the '<em>Monitoring Properties</em>' containment reference. - * @see #setMonitoringProperties(MonitoringPropertyArray) - * @see monitoring.MonitoringPackage#getMonitoringproperties_MonitoringProperties() - * @model containment="true" - * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!Monitoringproperties!monitoringProperties'" - * @generated - */ - MonitoringPropertyArray getMonitoringProperties(); - - /** - * Sets the value of the '{@link monitoring.Monitoringproperties#getMonitoringProperties <em>Monitoring Properties</em>}' containment reference. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @param value the new value of the '<em>Monitoring Properties</em>' containment reference. - * @see #getMonitoringProperties() - * @generated - */ - void setMonitoringProperties(MonitoringPropertyArray value); - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='/**\n *\n * inv appliesConstraint:\n * let\n * severity : Integer[1] = \'Monitoringproperties::appliesConstraint\'.getSeverity()\n * in\n * if severity <= 0\n * then true\n * else\n * let\n * result : occi::Boolean[1] = self.entity.oclIsKindOf(occi::Resource)\n * in\n * \'Monitoringproperties::appliesConstraint\'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0)\n * endif\n \052/\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.evaluation.Executor%> executor = <%org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal%>.getExecutor(this);\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.ids.IdResolver%> idResolver = executor.getIdResolver();\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.values.IntegerValue%> severity_0 = <%org.eclipse.ocl.pivot.library.string.CGStringGetSeverityOperation%>.INSTANCE.evaluate(executor, <%monitoring.MonitoringTables%>.STR_Monitoringproperties_c_c_appliesConstraint);\nfinal /*@NonInvalid\052/ boolean le = <%org.eclipse.ocl.pivot.library.oclany.OclComparableLessThanEqualOperation%>.INSTANCE.evaluate(executor, severity_0, <%monitoring.MonitoringTables%>.INT_0).booleanValue();\n/*@NonInvalid\052/ boolean symbol_0;\nif (le) {\n\tsymbol_0 = <%org.eclipse.ocl.pivot.utilities.ValueUtil%>.TRUE_VALUE;\n}\nelse {\n\tfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.Class%> TYP_occi_c_c_Resource = idResolver.getClass(<%monitoring.MonitoringTables%>.CLSSid_Resource, null);\n\tfinal /*@NonInvalid\052/ <%org.eclipse.cmf.occi.core.Entity%> entity = this.getEntity();\n\tfinal /*@NonInvalid\052/ boolean result = <%org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation%>.INSTANCE.evaluate(executor, entity, TYP_occi_c_c_Resource).booleanValue();\n\tfinal /*@NonInvalid\052/ boolean logDiagnostic = <%org.eclipse.ocl.pivot.library.string.CGStringLogDiagnosticOperation%>.INSTANCE.evaluate(executor, <%org.eclipse.ocl.pivot.ids.TypeId%>.BOOLEAN, <%monitoring.MonitoringTables%>.STR_Monitoringproperties_c_c_appliesConstraint, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, <%monitoring.MonitoringTables%>.INT_0).booleanValue();\n\tsymbol_0 = logDiagnostic;\n}\nreturn Boolean.TRUE == symbol_0;'" - * @generated - */ - boolean appliesConstraint(DiagnosticChain diagnostics, Map<Object, Object> context); - -} // Monitoringproperties diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Monitoringproperty.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Monitoringproperty.java new file mode 100644 index 0000000..e02c530 --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Monitoringproperty.java @@ -0,0 +1,103 @@ +/** + * Copyright (c) 2015-2017 Obeo, Inria + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * - William Piers <william.piers@obeo.fr> + * - Philippe Merle <philippe.merle@inria.fr> + * - Faiez Zalila <faiez.zalila@inria.fr> + */ +package monitoring; + +import java.util.Map; + +import org.eclipse.cmf.occi.core.Link; + +import org.eclipse.emf.common.util.DiagnosticChain; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Monitoringproperty</b></em>'. + * <!-- end-user-doc --> + * + * <!-- begin-model-doc --> + * MonitoringProperty Component + * <!-- end-model-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link monitoring.Monitoringproperty#getMonitoringPropertyName <em>Monitoring Property Name</em>}</li> + * <li>{@link monitoring.Monitoringproperty#getMonitoringPropertyValue <em>Monitoring Property Value</em>}</li> + * </ul> + * + * @see monitoring.MonitoringPackage#getMonitoringproperty() + * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='targetConstraint'" + * @generated + */ +public interface Monitoringproperty extends Link { + /** + * Returns the value of the '<em><b>Monitoring Property Name</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * <!-- begin-model-doc --> + * + * <!-- end-model-doc --> + * @return the value of the '<em>Monitoring Property Name</em>' attribute. + * @see #setMonitoringPropertyName(String) + * @see monitoring.MonitoringPackage#getMonitoringproperty_MonitoringPropertyName() + * @model dataType="monitoring.String" required="true" + * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!Monitoringproperty!monitoringPropertyName'" + * @generated + */ + String getMonitoringPropertyName(); + + /** + * Sets the value of the '{@link monitoring.Monitoringproperty#getMonitoringPropertyName <em>Monitoring Property Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Monitoring Property Name</em>' attribute. + * @see #getMonitoringPropertyName() + * @generated + */ + void setMonitoringPropertyName(String value); + + /** + * Returns the value of the '<em><b>Monitoring Property Value</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * <!-- begin-model-doc --> + * + * <!-- end-model-doc --> + * @return the value of the '<em>Monitoring Property Value</em>' attribute. + * @see #setMonitoringPropertyValue(String) + * @see monitoring.MonitoringPackage#getMonitoringproperty_MonitoringPropertyValue() + * @model dataType="monitoring.String" + * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!Monitoringproperty!monitoringPropertyValue'" + * @generated + */ + String getMonitoringPropertyValue(); + + /** + * Sets the value of the '{@link monitoring.Monitoringproperty#getMonitoringPropertyValue <em>Monitoring Property Value</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Monitoring Property Value</em>' attribute. + * @see #getMonitoringPropertyValue() + * @generated + */ + void setMonitoringPropertyValue(String value); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model annotation="http://www.eclipse.org/emf/2002/GenModel body='/**\n *\n * inv targetConstraint:\n * let\n * severity : Integer[1] = \'Monitoringproperty::targetConstraint\'.getSeverity()\n * in\n * if severity <= 0\n * then true\n * else\n * let result : occi::Boolean[1] = self.target.oclIsKindOf(Sensor)\n * in\n * \'Monitoringproperty::targetConstraint\'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0)\n * endif\n \052/\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.evaluation.Executor%> executor = <%org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal%>.getExecutor(this);\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.ids.IdResolver%> idResolver = executor.getIdResolver();\nfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.values.IntegerValue%> severity_0 = <%org.eclipse.ocl.pivot.library.string.CGStringGetSeverityOperation%>.INSTANCE.evaluate(executor, <%monitoring.MonitoringTables%>.STR_Monitoringproperty_c_c_targetConstraint);\nfinal /*@NonInvalid\052/ boolean le = <%org.eclipse.ocl.pivot.library.oclany.OclComparableLessThanEqualOperation%>.INSTANCE.evaluate(executor, severity_0, <%monitoring.MonitoringTables%>.INT_0).booleanValue();\n/*@NonInvalid\052/ boolean symbol_0;\nif (le) {\n\tsymbol_0 = <%org.eclipse.ocl.pivot.utilities.ValueUtil%>.TRUE_VALUE;\n}\nelse {\n\tfinal /*@NonInvalid\052/ <%org.eclipse.ocl.pivot.Class%> TYP_monitoring_c_c_Sensor = idResolver.getClass(<%monitoring.MonitoringTables%>.CLSSid_Sensor, null);\n\tfinal /*@NonInvalid\052/ <%org.eclipse.cmf.occi.core.Resource%> target = this.getTarget();\n\tfinal /*@NonInvalid\052/ boolean result = <%org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation%>.INSTANCE.evaluate(executor, target, TYP_monitoring_c_c_Sensor).booleanValue();\n\tfinal /*@NonInvalid\052/ boolean logDiagnostic = <%org.eclipse.ocl.pivot.library.string.CGStringLogDiagnosticOperation%>.INSTANCE.evaluate(executor, <%org.eclipse.ocl.pivot.ids.TypeId%>.BOOLEAN, <%monitoring.MonitoringTables%>.STR_Monitoringproperty_c_c_targetConstraint, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, <%monitoring.MonitoringTables%>.INT_0).booleanValue();\n\tsymbol_0 = logDiagnostic;\n}\nreturn Boolean.TRUE == symbol_0;'" + * @generated + */ + boolean targetConstraint(DiagnosticChain diagnostics, Map<Object, Object> context); + +} // Monitoringproperty diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Processor.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Processor.java index 370df23..3c09509 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Processor.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Processor.java @@ -23,10 +23,42 @@ import org.modmacao.occi.platform.Component; * Processor Resource * <!-- end-model-doc --> * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link monitoring.Processor#getGathererAddress <em>Gatherer Address</em>}</li> + * </ul> * * @see monitoring.MonitoringPackage#getProcessor() * @model * @generated */ public interface Processor extends Component { + /** + * Returns the value of the '<em><b>Gatherer Address</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * <!-- begin-model-doc --> + * + * <!-- end-model-doc --> + * @return the value of the '<em>Gatherer Address</em>' attribute. + * @see #setGathererAddress(String) + * @see monitoring.MonitoringPackage#getProcessor_GathererAddress() + * @model dataType="monitoring.String" + * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!Processor!gathererAddress'" + * @generated + */ + String getGathererAddress(); + + /** + * Sets the value of the '{@link monitoring.Processor#getGathererAddress <em>Gatherer Address</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Gatherer Address</em>' attribute. + * @see #getGathererAddress() + * @generated + */ + void setGathererAddress(String value); + } // Processor diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Publisher.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Publisher.java index 6f40c9b..e00ebcb 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Publisher.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/Publisher.java @@ -23,10 +23,42 @@ import org.modmacao.occi.platform.Component; * Publisher Resource * <!-- end-model-doc --> * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link monitoring.Publisher#getPublisherEndpoint <em>Publisher Endpoint</em>}</li> + * </ul> * * @see monitoring.MonitoringPackage#getPublisher() * @model * @generated */ public interface Publisher extends Component { + /** + * Returns the value of the '<em><b>Publisher Endpoint</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * <!-- begin-model-doc --> + * + * <!-- end-model-doc --> + * @return the value of the '<em>Publisher Endpoint</em>' attribute. + * @see #setPublisherEndpoint(String) + * @see monitoring.MonitoringPackage#getPublisher_PublisherEndpoint() + * @model dataType="monitoring.String" required="true" + * annotation="http://www.eclipse.org/emf/2002/GenModel get='throw new UnsupportedOperationException(); // FIXME Unimplemented http://schemas.ugoe.cs.rwm/monitoring/ecore!Publisher!publisherEndpoint'" + * @generated + */ + String getPublisherEndpoint(); + + /** + * Sets the value of the '{@link monitoring.Publisher#getPublisherEndpoint <em>Publisher Endpoint</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Publisher Endpoint</em>' attribute. + * @see #getPublisherEndpoint() + * @generated + */ + void setPublisherEndpoint(String value); + } // Publisher diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MartpublisherImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MartpublisherImpl.java new file mode 100644 index 0000000..1b3206b --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MartpublisherImpl.java @@ -0,0 +1,357 @@ +/** + * Copyright (c) 2015-2017 Obeo, Inria + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * - William Piers <william.piers@obeo.fr> + * - Philippe Merle <philippe.merle@inria.fr> + * - Faiez Zalila <faiez.zalila@inria.fr> + */ +package monitoring.impl; + +import java.lang.reflect.InvocationTargetException; + +import java.util.Map; + +import monitoring.Martpublisher; +import monitoring.MonitoringPackage; + +import monitoring.MonitoringTables; +import monitoring.util.MonitoringValidator; + +import org.eclipse.cmf.occi.core.Entity; +import org.eclipse.cmf.occi.core.impl.MixinBaseImpl; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.DiagnosticChain; +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.ocl.pivot.evaluation.Executor; +import org.eclipse.ocl.pivot.ids.IdResolver; +import org.eclipse.ocl.pivot.ids.TypeId; +import org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal; +import org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation; +import org.eclipse.ocl.pivot.library.oclany.OclComparableLessThanEqualOperation; +import org.eclipse.ocl.pivot.library.string.CGStringGetSeverityOperation; +import org.eclipse.ocl.pivot.library.string.CGStringLogDiagnosticOperation; +import org.eclipse.ocl.pivot.utilities.ValueUtil; +import org.eclipse.ocl.pivot.values.IntegerValue; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Martpublisher</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link monitoring.impl.MartpublisherImpl#getMonitoringPropertyName <em>Monitoring Property Name</em>}</li> + * <li>{@link monitoring.impl.MartpublisherImpl#getMonitoringPropertyId <em>Monitoring Property Id</em>}</li> + * <li>{@link monitoring.impl.MartpublisherImpl#getMonitoringPropertyResource <em>Monitoring Property Resource</em>}</li> + * </ul> + * + * @generated + */ +public class MartpublisherImpl extends MixinBaseImpl implements Martpublisher { + /** + * The default value of the '{@link #getMonitoringPropertyName() <em>Monitoring Property Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyName() + * @generated + * @ordered + */ + protected static final String MONITORING_PROPERTY_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMonitoringPropertyName() <em>Monitoring Property Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyName() + * @generated + * @ordered + */ + protected String monitoringPropertyName = MONITORING_PROPERTY_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getMonitoringPropertyId() <em>Monitoring Property Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyId() + * @generated + * @ordered + */ + protected static final String MONITORING_PROPERTY_ID_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMonitoringPropertyId() <em>Monitoring Property Id</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyId() + * @generated + * @ordered + */ + protected String monitoringPropertyId = MONITORING_PROPERTY_ID_EDEFAULT; + + /** + * The default value of the '{@link #getMonitoringPropertyResource() <em>Monitoring Property Resource</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyResource() + * @generated + * @ordered + */ + protected static final String MONITORING_PROPERTY_RESOURCE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMonitoringPropertyResource() <em>Monitoring Property Resource</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyResource() + * @generated + * @ordered + */ + protected String monitoringPropertyResource = MONITORING_PROPERTY_RESOURCE_EDEFAULT; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MartpublisherImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return MonitoringPackage.Literals.MARTPUBLISHER; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getMonitoringPropertyName() { + return monitoringPropertyName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setMonitoringPropertyName(String newMonitoringPropertyName) { + String oldMonitoringPropertyName = monitoringPropertyName; + monitoringPropertyName = newMonitoringPropertyName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_NAME, oldMonitoringPropertyName, monitoringPropertyName)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getMonitoringPropertyId() { + return monitoringPropertyId; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setMonitoringPropertyId(String newMonitoringPropertyId) { + String oldMonitoringPropertyId = monitoringPropertyId; + monitoringPropertyId = newMonitoringPropertyId; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_ID, oldMonitoringPropertyId, monitoringPropertyId)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getMonitoringPropertyResource() { + return monitoringPropertyResource; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setMonitoringPropertyResource(String newMonitoringPropertyResource) { + String oldMonitoringPropertyResource = monitoringPropertyResource; + monitoringPropertyResource = newMonitoringPropertyResource; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE, oldMonitoringPropertyResource, monitoringPropertyResource)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean appliesConstraint(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + /** + * + * inv appliesConstraint: + * let severity : Integer[1] = 'Martpublisher::appliesConstraint'.getSeverity() + * in + * if severity <= 0 + * then true + * else + * let + * result : occi::Boolean[1] = self.entity.oclIsKindOf(Publisher) + * in + * 'Martpublisher::appliesConstraint'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * endif + */ + final /*@NonInvalid*/ Executor executor = PivotUtilInternal.getExecutor(this); + final /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver(); + final /*@NonInvalid*/ IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, MonitoringTables.STR_Martpublisher_c_c_appliesConstraint); + final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, MonitoringTables.INT_0).booleanValue(); + /*@NonInvalid*/ boolean symbol_0; + if (le) { + symbol_0 = ValueUtil.TRUE_VALUE; + } + else { + final /*@NonInvalid*/ org.eclipse.ocl.pivot.Class TYP_monitoring_c_c_Publisher = idResolver.getClass(MonitoringTables.CLSSid_Publisher, null); + final /*@NonInvalid*/ Entity entity = this.getEntity(); + final /*@NonInvalid*/ boolean result = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, entity, TYP_monitoring_c_c_Publisher).booleanValue(); + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, MonitoringTables.STR_Martpublisher_c_c_appliesConstraint, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, MonitoringTables.INT_0).booleanValue(); + symbol_0 = logDiagnostic; + } + return Boolean.TRUE == symbol_0; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_NAME: + return getMonitoringPropertyName(); + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_ID: + return getMonitoringPropertyId(); + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE: + return getMonitoringPropertyResource(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_NAME: + setMonitoringPropertyName((String)newValue); + return; + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_ID: + setMonitoringPropertyId((String)newValue); + return; + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE: + setMonitoringPropertyResource((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_NAME: + setMonitoringPropertyName(MONITORING_PROPERTY_NAME_EDEFAULT); + return; + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_ID: + setMonitoringPropertyId(MONITORING_PROPERTY_ID_EDEFAULT); + return; + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE: + setMonitoringPropertyResource(MONITORING_PROPERTY_RESOURCE_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_NAME: + return MONITORING_PROPERTY_NAME_EDEFAULT == null ? monitoringPropertyName != null : !MONITORING_PROPERTY_NAME_EDEFAULT.equals(monitoringPropertyName); + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_ID: + return MONITORING_PROPERTY_ID_EDEFAULT == null ? monitoringPropertyId != null : !MONITORING_PROPERTY_ID_EDEFAULT.equals(monitoringPropertyId); + case MonitoringPackage.MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE: + return MONITORING_PROPERTY_RESOURCE_EDEFAULT == null ? monitoringPropertyResource != null : !MONITORING_PROPERTY_RESOURCE_EDEFAULT.equals(monitoringPropertyResource); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + @SuppressWarnings("unchecked") + public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException { + switch (operationID) { + case MonitoringPackage.MARTPUBLISHER___APPLIES_CONSTRAINT__DIAGNOSTICCHAIN_MAP: + return appliesConstraint((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1)); + } + return super.eInvoke(operationID, arguments); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (monitoringPropertyName: "); + result.append(monitoringPropertyName); + result.append(", monitoringPropertyId: "); + result.append(monitoringPropertyId); + result.append(", monitoringPropertyResource: "); + result.append(monitoringPropertyResource); + result.append(')'); + return result.toString(); + } + +} //MartpublisherImpl diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringFactoryImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringFactoryImpl.java index 89e45c2..cf98693 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringFactoryImpl.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringFactoryImpl.java @@ -67,13 +67,12 @@ public class MonitoringFactoryImpl extends EFactoryImpl implements MonitoringFac @Override public EObject create(EClass eClass) { switch (eClass.getClassifierID()) { - case MonitoringPackage.MONITORING_PROPERTY: return createMonitoringProperty(); - case MonitoringPackage.MONITORING_PROPERTY_ARRAY: return createMonitoringPropertyArray(); case MonitoringPackage.SENSOR: return createSensor(); case MonitoringPackage.DATAGATHERER: return createDatagatherer(); case MonitoringPackage.PROCESSOR: return createProcessor(); case MonitoringPackage.PUBLISHER: return createPublisher(); - case MonitoringPackage.MONITORINGPROPERTIES: return createMonitoringproperties(); + case MonitoringPackage.MONITORINGPROPERTY: return createMonitoringproperty(); + case MonitoringPackage.MARTPUBLISHER: return createMartpublisher(); default: throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); } @@ -117,26 +116,6 @@ public class MonitoringFactoryImpl extends EFactoryImpl implements MonitoringFac } } - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public MonitoringProperty createMonitoringProperty() { - MonitoringPropertyImpl monitoringProperty = new MonitoringPropertyImpl(); - return monitoringProperty; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public MonitoringPropertyArray createMonitoringPropertyArray() { - MonitoringPropertyArrayImpl monitoringPropertyArray = new MonitoringPropertyArrayImpl(); - return monitoringPropertyArray; - } - /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -182,9 +161,19 @@ public class MonitoringFactoryImpl extends EFactoryImpl implements MonitoringFac * <!-- end-user-doc --> * @generated */ - public Monitoringproperties createMonitoringproperties() { - MonitoringpropertiesImpl monitoringproperties = new MonitoringpropertiesImpl(); - return monitoringproperties; + public Monitoringproperty createMonitoringproperty() { + MonitoringpropertyImpl monitoringproperty = new MonitoringpropertyImpl(); + return monitoringproperty; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Martpublisher createMartpublisher() { + MartpublisherImpl martpublisher = new MartpublisherImpl(); + return martpublisher; } /** diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPackageImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPackageImpl.java index c123c3c..83c528d 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPackageImpl.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPackageImpl.java @@ -13,11 +13,10 @@ package monitoring.impl; import monitoring.Datagatherer; +import monitoring.Martpublisher; import monitoring.MonitoringFactory; import monitoring.MonitoringPackage; -import monitoring.MonitoringProperty; -import monitoring.MonitoringPropertyArray; -import monitoring.Monitoringproperties; +import monitoring.Monitoringproperty; import monitoring.Processor; import monitoring.Publisher; import monitoring.Sensor; @@ -32,7 +31,6 @@ import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EGenericType; import org.eclipse.emf.ecore.EOperation; import org.eclipse.emf.ecore.EPackage; -import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.ecore.impl.EPackageImpl; @@ -51,49 +49,42 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - private EClass monitoringPropertyEClass = null; + private EClass sensorEClass = null; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - private EClass monitoringPropertyArrayEClass = null; + private EClass datagathererEClass = null; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - private EClass sensorEClass = null; + private EClass processorEClass = null; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - private EClass datagathererEClass = null; + private EClass publisherEClass = null; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - private EClass processorEClass = null; + private EClass monitoringpropertyEClass = null; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - private EClass publisherEClass = null; - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - private EClass monitoringpropertiesEClass = null; + private EClass martpublisherEClass = null; /** * <!-- begin-user-doc --> @@ -195,8 +186,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EClass getMonitoringProperty() { - return monitoringPropertyEClass; + public EClass getSensor() { + return sensorEClass; } /** @@ -204,8 +195,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getMonitoringProperty_Name() { - return (EAttribute)monitoringPropertyEClass.getEStructuralFeatures().get(0); + public EAttribute getSensor_OcciSensorTimebase() { + return (EAttribute)sensorEClass.getEStructuralFeatures().get(0); } /** @@ -213,8 +204,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getMonitoringProperty_Value() { - return (EAttribute)monitoringPropertyEClass.getEStructuralFeatures().get(1); + public EAttribute getSensor_OcciSensorTimestart() { + return (EAttribute)sensorEClass.getEStructuralFeatures().get(1); } /** @@ -222,8 +213,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getMonitoringProperty_Id() { - return (EAttribute)monitoringPropertyEClass.getEStructuralFeatures().get(2); + public EAttribute getSensor_OcciSensorTimestop() { + return (EAttribute)sensorEClass.getEStructuralFeatures().get(2); } /** @@ -231,8 +222,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EClass getMonitoringPropertyArray() { - return monitoringPropertyArrayEClass; + public EAttribute getSensor_OcciSensorPeriod() { + return (EAttribute)sensorEClass.getEStructuralFeatures().get(3); } /** @@ -240,8 +231,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EReference getMonitoringPropertyArray_MonitoringpropertyarrayValues() { - return (EReference)monitoringPropertyArrayEClass.getEStructuralFeatures().get(0); + public EAttribute getSensor_OcciSensorGranularity() { + return (EAttribute)sensorEClass.getEStructuralFeatures().get(4); } /** @@ -249,8 +240,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EClass getSensor() { - return sensorEClass; + public EAttribute getSensor_OcciSensorAccuracy() { + return (EAttribute)sensorEClass.getEStructuralFeatures().get(5); } /** @@ -258,8 +249,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getSensor_OcciSensorTimebase() { - return (EAttribute)sensorEClass.getEStructuralFeatures().get(0); + public EClass getDatagatherer() { + return datagathererEClass; } /** @@ -267,8 +258,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getSensor_OcciSensorTimestart() { - return (EAttribute)sensorEClass.getEStructuralFeatures().get(1); + public EAttribute getDatagatherer_OcciCollectorPeriod() { + return (EAttribute)datagathererEClass.getEStructuralFeatures().get(0); } /** @@ -276,8 +267,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getSensor_OcciSensorTimestop() { - return (EAttribute)sensorEClass.getEStructuralFeatures().get(2); + public EAttribute getDatagatherer_OcciCollectorGranularity() { + return (EAttribute)datagathererEClass.getEStructuralFeatures().get(1); } /** @@ -285,8 +276,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getSensor_OcciSensorPeriod() { - return (EAttribute)sensorEClass.getEStructuralFeatures().get(3); + public EAttribute getDatagatherer_OcciCollectorAccuracy() { + return (EAttribute)datagathererEClass.getEStructuralFeatures().get(2); } /** @@ -294,8 +285,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getSensor_OcciSensorGranularity() { - return (EAttribute)sensorEClass.getEStructuralFeatures().get(4); + public EClass getProcessor() { + return processorEClass; } /** @@ -303,8 +294,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getSensor_OcciSensorAccuracy() { - return (EAttribute)sensorEClass.getEStructuralFeatures().get(5); + public EAttribute getProcessor_GathererAddress() { + return (EAttribute)processorEClass.getEStructuralFeatures().get(0); } /** @@ -312,8 +303,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EClass getDatagatherer() { - return datagathererEClass; + public EClass getPublisher() { + return publisherEClass; } /** @@ -321,8 +312,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getDatagatherer_OcciCollectorPeriod() { - return (EAttribute)datagathererEClass.getEStructuralFeatures().get(0); + public EAttribute getPublisher_PublisherEndpoint() { + return (EAttribute)publisherEClass.getEStructuralFeatures().get(0); } /** @@ -330,8 +321,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getDatagatherer_OcciCollectorGranularity() { - return (EAttribute)datagathererEClass.getEStructuralFeatures().get(1); + public EClass getMonitoringproperty() { + return monitoringpropertyEClass; } /** @@ -339,8 +330,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EAttribute getDatagatherer_OcciCollectorAccuracy() { - return (EAttribute)datagathererEClass.getEStructuralFeatures().get(2); + public EAttribute getMonitoringproperty_MonitoringPropertyName() { + return (EAttribute)monitoringpropertyEClass.getEStructuralFeatures().get(0); } /** @@ -348,8 +339,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EClass getProcessor() { - return processorEClass; + public EAttribute getMonitoringproperty_MonitoringPropertyValue() { + return (EAttribute)monitoringpropertyEClass.getEStructuralFeatures().get(1); } /** @@ -357,8 +348,17 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EClass getPublisher() { - return publisherEClass; + public EOperation getMonitoringproperty__TargetConstraint__DiagnosticChain_Map() { + return monitoringpropertyEClass.getEOperations().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getMartpublisher() { + return martpublisherEClass; } /** @@ -366,8 +366,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EClass getMonitoringproperties() { - return monitoringpropertiesEClass; + public EAttribute getMartpublisher_MonitoringPropertyName() { + return (EAttribute)martpublisherEClass.getEStructuralFeatures().get(0); } /** @@ -375,8 +375,8 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EReference getMonitoringproperties_MonitoringProperties() { - return (EReference)monitoringpropertiesEClass.getEStructuralFeatures().get(0); + public EAttribute getMartpublisher_MonitoringPropertyId() { + return (EAttribute)martpublisherEClass.getEStructuralFeatures().get(1); } /** @@ -384,8 +384,17 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac * <!-- end-user-doc --> * @generated */ - public EOperation getMonitoringproperties__AppliesConstraint__DiagnosticChain_Map() { - return monitoringpropertiesEClass.getEOperations().get(0); + public EAttribute getMartpublisher_MonitoringPropertyResource() { + return (EAttribute)martpublisherEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getMartpublisher__AppliesConstraint__DiagnosticChain_Map() { + return martpublisherEClass.getEOperations().get(0); } /** @@ -443,14 +452,6 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac isCreated = true; // Create classes and their features - monitoringPropertyEClass = createEClass(MONITORING_PROPERTY); - createEAttribute(monitoringPropertyEClass, MONITORING_PROPERTY__NAME); - createEAttribute(monitoringPropertyEClass, MONITORING_PROPERTY__VALUE); - createEAttribute(monitoringPropertyEClass, MONITORING_PROPERTY__ID); - - monitoringPropertyArrayEClass = createEClass(MONITORING_PROPERTY_ARRAY); - createEReference(monitoringPropertyArrayEClass, MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES); - sensorEClass = createEClass(SENSOR); createEAttribute(sensorEClass, SENSOR__OCCI_SENSOR_TIMEBASE); createEAttribute(sensorEClass, SENSOR__OCCI_SENSOR_TIMESTART); @@ -465,12 +466,21 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac createEAttribute(datagathererEClass, DATAGATHERER__OCCI_COLLECTOR_ACCURACY); processorEClass = createEClass(PROCESSOR); + createEAttribute(processorEClass, PROCESSOR__GATHERER_ADDRESS); publisherEClass = createEClass(PUBLISHER); + createEAttribute(publisherEClass, PUBLISHER__PUBLISHER_ENDPOINT); - monitoringpropertiesEClass = createEClass(MONITORINGPROPERTIES); - createEReference(monitoringpropertiesEClass, MONITORINGPROPERTIES__MONITORING_PROPERTIES); - createEOperation(monitoringpropertiesEClass, MONITORINGPROPERTIES___APPLIES_CONSTRAINT__DIAGNOSTICCHAIN_MAP); + monitoringpropertyEClass = createEClass(MONITORINGPROPERTY); + createEAttribute(monitoringpropertyEClass, MONITORINGPROPERTY__MONITORING_PROPERTY_NAME); + createEAttribute(monitoringpropertyEClass, MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE); + createEOperation(monitoringpropertyEClass, MONITORINGPROPERTY___TARGET_CONSTRAINT__DIAGNOSTICCHAIN_MAP); + + martpublisherEClass = createEClass(MARTPUBLISHER); + createEAttribute(martpublisherEClass, MARTPUBLISHER__MONITORING_PROPERTY_NAME); + createEAttribute(martpublisherEClass, MARTPUBLISHER__MONITORING_PROPERTY_ID); + createEAttribute(martpublisherEClass, MARTPUBLISHER__MONITORING_PROPERTY_RESOURCE); + createEOperation(martpublisherEClass, MARTPUBLISHER___APPLIES_CONSTRAINT__DIAGNOSTICCHAIN_MAP); // Create data types dateTimeEDataType = createEDataType(DATE_TIME); @@ -514,17 +524,10 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac datagathererEClass.getESuperTypes().add(thePlatformPackage.getComponent()); processorEClass.getESuperTypes().add(thePlatformPackage.getComponent()); publisherEClass.getESuperTypes().add(thePlatformPackage.getComponent()); - monitoringpropertiesEClass.getESuperTypes().add(theOCCIPackage.getMixinBase()); + monitoringpropertyEClass.getESuperTypes().add(theOCCIPackage.getLink()); + martpublisherEClass.getESuperTypes().add(theOCCIPackage.getMixinBase()); // Initialize classes, features, and operations; add parameters - initEClass(monitoringPropertyEClass, MonitoringProperty.class, "MonitoringProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEAttribute(getMonitoringProperty_Name(), this.getString(), "name", null, 1, 1, MonitoringProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEAttribute(getMonitoringProperty_Value(), this.getString(), "value", null, 1, 1, MonitoringProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEAttribute(getMonitoringProperty_Id(), this.getString(), "Id", null, 1, 1, MonitoringProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - - initEClass(monitoringPropertyArrayEClass, MonitoringPropertyArray.class, "MonitoringPropertyArray", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getMonitoringPropertyArray_MonitoringpropertyarrayValues(), this.getMonitoringProperty(), null, "monitoringpropertyarrayValues", null, 0, -1, MonitoringPropertyArray.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEClass(sensorEClass, Sensor.class, "Sensor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEAttribute(getSensor_OcciSensorTimebase(), this.getDateTime(), "occiSensorTimebase", null, 0, 1, Sensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getSensor_OcciSensorTimestart(), this.getSecond(), "occiSensorTimestart", null, 0, 1, Sensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); @@ -539,13 +542,16 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac initEAttribute(getDatagatherer_OcciCollectorAccuracy(), this.getSecond(), "occiCollectorAccuracy", null, 0, 1, Datagatherer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(processorEClass, Processor.class, "Processor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getProcessor_GathererAddress(), this.getString(), "gathererAddress", null, 0, 1, Processor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(publisherEClass, Publisher.class, "Publisher", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getPublisher_PublisherEndpoint(), this.getString(), "publisherEndpoint", null, 1, 1, Publisher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEClass(monitoringpropertiesEClass, Monitoringproperties.class, "Monitoringproperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getMonitoringproperties_MonitoringProperties(), this.getMonitoringPropertyArray(), null, "monitoringProperties", null, 0, 1, Monitoringproperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEClass(monitoringpropertyEClass, Monitoringproperty.class, "Monitoringproperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getMonitoringproperty_MonitoringPropertyName(), this.getString(), "monitoringPropertyName", null, 1, 1, Monitoringproperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getMonitoringproperty_MonitoringPropertyValue(), this.getString(), "monitoringPropertyValue", null, 0, 1, Monitoringproperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - EOperation op = initEOperation(getMonitoringproperties__AppliesConstraint__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "appliesConstraint", 0, 1, IS_UNIQUE, IS_ORDERED); + EOperation op = initEOperation(getMonitoringproperty__TargetConstraint__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "targetConstraint", 0, 1, IS_UNIQUE, IS_ORDERED); addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED); EGenericType g1 = createEGenericType(ecorePackage.getEMap()); EGenericType g2 = createEGenericType(ecorePackage.getEJavaObject()); @@ -554,6 +560,20 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac g1.getETypeArguments().add(g2); addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); + initEClass(martpublisherEClass, Martpublisher.class, "Martpublisher", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getMartpublisher_MonitoringPropertyName(), this.getString(), "monitoringPropertyName", null, 1, 1, Martpublisher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getMartpublisher_MonitoringPropertyId(), this.getString(), "monitoringPropertyId", null, 0, 1, Martpublisher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getMartpublisher_MonitoringPropertyResource(), this.getString(), "monitoringPropertyResource", null, 1, 1, Martpublisher.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + op = initEOperation(getMartpublisher__AppliesConstraint__DiagnosticChain_Map(), ecorePackage.getEBoolean(), "appliesConstraint", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, ecorePackage.getEDiagnosticChain(), "diagnostics", 0, 1, IS_UNIQUE, IS_ORDERED); + g1 = createEGenericType(ecorePackage.getEMap()); + g2 = createEGenericType(ecorePackage.getEJavaObject()); + g1.getETypeArguments().add(g2); + g2 = createEGenericType(ecorePackage.getEJavaObject()); + g1.getETypeArguments().add(g2); + addEParameter(op, g1, "context", 0, 1, IS_UNIQUE, IS_ORDERED); + // Initialize data types initEDataType(dateTimeEDataType, String.class, "DateTime", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); initEDataType(secondEDataType, String.class, "Second", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); @@ -583,7 +603,13 @@ public class MonitoringPackageImpl extends EPackageImpl implements MonitoringPac new String[] { }); addAnnotation - (monitoringpropertiesEClass, + (monitoringpropertyEClass, + source, + new String[] { + "constraints", "targetConstraint" + }); + addAnnotation + (martpublisherEClass, source, new String[] { "constraints", "appliesConstraint" diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPropertyArrayImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPropertyArrayImpl.java deleted file mode 100644 index d9ee4e7..0000000 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPropertyArrayImpl.java +++ /dev/null @@ -1,162 +0,0 @@ -/** - * Copyright (c) 2015-2017 Obeo, Inria - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * - William Piers <william.piers@obeo.fr> - * - Philippe Merle <philippe.merle@inria.fr> - * - Faiez Zalila <faiez.zalila@inria.fr> - */ -package monitoring.impl; - -import java.util.Collection; - -import monitoring.MonitoringPackage; -import monitoring.MonitoringProperty; -import monitoring.MonitoringPropertyArray; - -import org.eclipse.emf.common.notify.NotificationChain; - -import org.eclipse.emf.common.util.EList; - -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.InternalEObject; - -import org.eclipse.emf.ecore.impl.EObjectImpl; - -import org.eclipse.emf.ecore.util.EObjectContainmentEList; -import org.eclipse.emf.ecore.util.InternalEList; - -/** - * <!-- begin-user-doc --> - * An implementation of the model object '<em><b>Property Array</b></em>'. - * <!-- end-user-doc --> - * <p> - * The following features are implemented: - * </p> - * <ul> - * <li>{@link monitoring.impl.MonitoringPropertyArrayImpl#getMonitoringpropertyarrayValues <em>Monitoringpropertyarray Values</em>}</li> - * </ul> - * - * @generated - */ -public class MonitoringPropertyArrayImpl extends EObjectImpl implements MonitoringPropertyArray { - /** - * The cached value of the '{@link #getMonitoringpropertyarrayValues() <em>Monitoringpropertyarray Values</em>}' containment reference list. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see #getMonitoringpropertyarrayValues() - * @generated - * @ordered - */ - protected EList<MonitoringProperty> monitoringpropertyarrayValues; - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - protected MonitoringPropertyArrayImpl() { - super(); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - protected EClass eStaticClass() { - return MonitoringPackage.Literals.MONITORING_PROPERTY_ARRAY; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public EList<MonitoringProperty> getMonitoringpropertyarrayValues() { - if (monitoringpropertyarrayValues == null) { - monitoringpropertyarrayValues = new EObjectContainmentEList<MonitoringProperty>(MonitoringProperty.class, this, MonitoringPackage.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES); - } - return monitoringpropertyarrayValues; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES: - return ((InternalEList<?>)getMonitoringpropertyarrayValues()).basicRemove(otherEnd, msgs); - } - return super.eInverseRemove(otherEnd, featureID, msgs); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public Object eGet(int featureID, boolean resolve, boolean coreType) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES: - return getMonitoringpropertyarrayValues(); - } - return super.eGet(featureID, resolve, coreType); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @SuppressWarnings("unchecked") - @Override - public void eSet(int featureID, Object newValue) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES: - getMonitoringpropertyarrayValues().clear(); - getMonitoringpropertyarrayValues().addAll((Collection<? extends MonitoringProperty>)newValue); - return; - } - super.eSet(featureID, newValue); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public void eUnset(int featureID) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES: - getMonitoringpropertyarrayValues().clear(); - return; - } - super.eUnset(featureID); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public boolean eIsSet(int featureID) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY_ARRAY__MONITORINGPROPERTYARRAY_VALUES: - return monitoringpropertyarrayValues != null && !monitoringpropertyarrayValues.isEmpty(); - } - return super.eIsSet(featureID); - } - -} //MonitoringPropertyArrayImpl diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPropertyImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPropertyImpl.java deleted file mode 100644 index 28112c6..0000000 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringPropertyImpl.java +++ /dev/null @@ -1,281 +0,0 @@ -/** - * Copyright (c) 2015-2017 Obeo, Inria - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * - William Piers <william.piers@obeo.fr> - * - Philippe Merle <philippe.merle@inria.fr> - * - Faiez Zalila <faiez.zalila@inria.fr> - */ -package monitoring.impl; - -import monitoring.MonitoringPackage; -import monitoring.MonitoringProperty; - -import org.eclipse.emf.common.notify.Notification; - -import org.eclipse.emf.ecore.EClass; - -import org.eclipse.emf.ecore.impl.ENotificationImpl; -import org.eclipse.emf.ecore.impl.EObjectImpl; - -/** - * <!-- begin-user-doc --> - * An implementation of the model object '<em><b>Property</b></em>'. - * <!-- end-user-doc --> - * <p> - * The following features are implemented: - * </p> - * <ul> - * <li>{@link monitoring.impl.MonitoringPropertyImpl#getName <em>Name</em>}</li> - * <li>{@link monitoring.impl.MonitoringPropertyImpl#getValue <em>Value</em>}</li> - * <li>{@link monitoring.impl.MonitoringPropertyImpl#getId <em>Id</em>}</li> - * </ul> - * - * @generated - */ -public class MonitoringPropertyImpl extends EObjectImpl implements MonitoringProperty { - /** - * The default value of the '{@link #getName() <em>Name</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see #getName() - * @generated - * @ordered - */ - protected static final String NAME_EDEFAULT = null; - - /** - * The cached value of the '{@link #getName() <em>Name</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see #getName() - * @generated - * @ordered - */ - protected String name = NAME_EDEFAULT; - - /** - * The default value of the '{@link #getValue() <em>Value</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see #getValue() - * @generated - * @ordered - */ - protected static final String VALUE_EDEFAULT = null; - - /** - * The cached value of the '{@link #getValue() <em>Value</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see #getValue() - * @generated - * @ordered - */ - protected String value = VALUE_EDEFAULT; - - /** - * The default value of the '{@link #getId() <em>Id</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see #getId() - * @generated - * @ordered - */ - protected static final String ID_EDEFAULT = null; - - /** - * The cached value of the '{@link #getId() <em>Id</em>}' attribute. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see #getId() - * @generated - * @ordered - */ - protected String id = ID_EDEFAULT; - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - protected MonitoringPropertyImpl() { - super(); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - protected EClass eStaticClass() { - return MonitoringPackage.Literals.MONITORING_PROPERTY; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public String getName() { - return name; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public void setName(String newName) { - String oldName = name; - name = newName; - if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MONITORING_PROPERTY__NAME, oldName, name)); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public String getValue() { - return value; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public void setValue(String newValue) { - String oldValue = value; - value = newValue; - if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MONITORING_PROPERTY__VALUE, oldValue, value)); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public String getId() { - return id; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public void setId(String newId) { - String oldId = id; - id = newId; - if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MONITORING_PROPERTY__ID, oldId, id)); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public Object eGet(int featureID, boolean resolve, boolean coreType) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY__NAME: - return getName(); - case MonitoringPackage.MONITORING_PROPERTY__VALUE: - return getValue(); - case MonitoringPackage.MONITORING_PROPERTY__ID: - return getId(); - } - return super.eGet(featureID, resolve, coreType); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public void eSet(int featureID, Object newValue) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY__NAME: - setName((String)newValue); - return; - case MonitoringPackage.MONITORING_PROPERTY__VALUE: - setValue((String)newValue); - return; - case MonitoringPackage.MONITORING_PROPERTY__ID: - setId((String)newValue); - return; - } - super.eSet(featureID, newValue); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public void eUnset(int featureID) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY__NAME: - setName(NAME_EDEFAULT); - return; - case MonitoringPackage.MONITORING_PROPERTY__VALUE: - setValue(VALUE_EDEFAULT); - return; - case MonitoringPackage.MONITORING_PROPERTY__ID: - setId(ID_EDEFAULT); - return; - } - super.eUnset(featureID); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public boolean eIsSet(int featureID) { - switch (featureID) { - case MonitoringPackage.MONITORING_PROPERTY__NAME: - return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name); - case MonitoringPackage.MONITORING_PROPERTY__VALUE: - return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value); - case MonitoringPackage.MONITORING_PROPERTY__ID: - return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id); - } - return super.eIsSet(featureID); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public String toString() { - if (eIsProxy()) return super.toString(); - - StringBuffer result = new StringBuffer(super.toString()); - result.append(" (name: "); - result.append(name); - result.append(", value: "); - result.append(value); - result.append(", Id: "); - result.append(id); - result.append(')'); - return result.toString(); - } - -} //MonitoringPropertyImpl diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringpropertiesImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringpropertiesImpl.java deleted file mode 100644 index b7d5274..0000000 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringpropertiesImpl.java +++ /dev/null @@ -1,268 +0,0 @@ -/** - * Copyright (c) 2015-2017 Obeo, Inria - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * - William Piers <william.piers@obeo.fr> - * - Philippe Merle <philippe.merle@inria.fr> - * - Faiez Zalila <faiez.zalila@inria.fr> - */ -package monitoring.impl; - -import java.lang.reflect.InvocationTargetException; - -import java.util.Map; - -import monitoring.MonitoringPackage; -import monitoring.MonitoringPropertyArray; -import monitoring.MonitoringTables; -import monitoring.Monitoringproperties; - -import org.eclipse.cmf.occi.core.Entity; - -import org.eclipse.cmf.occi.core.impl.MixinBaseImpl; - -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.NotificationChain; - -import org.eclipse.emf.common.util.DiagnosticChain; -import org.eclipse.emf.common.util.EList; - -import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.InternalEObject; - -import org.eclipse.emf.ecore.impl.ENotificationImpl; - -import org.eclipse.ocl.pivot.evaluation.Executor; - -import org.eclipse.ocl.pivot.ids.IdResolver; -import org.eclipse.ocl.pivot.ids.TypeId; - -import org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal; - -import org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation; -import org.eclipse.ocl.pivot.library.oclany.OclComparableLessThanEqualOperation; - -import org.eclipse.ocl.pivot.library.string.CGStringGetSeverityOperation; -import org.eclipse.ocl.pivot.library.string.CGStringLogDiagnosticOperation; - -import org.eclipse.ocl.pivot.utilities.ValueUtil; - -import org.eclipse.ocl.pivot.values.IntegerValue; - -/** - * <!-- begin-user-doc --> - * An implementation of the model object '<em><b>Monitoringproperties</b></em>'. - * <!-- end-user-doc --> - * <p> - * The following features are implemented: - * </p> - * <ul> - * <li>{@link monitoring.impl.MonitoringpropertiesImpl#getMonitoringProperties <em>Monitoring Properties</em>}</li> - * </ul> - * - * @generated - */ -public class MonitoringpropertiesImpl extends MixinBaseImpl implements Monitoringproperties { - /** - * The cached value of the '{@link #getMonitoringProperties() <em>Monitoring Properties</em>}' containment reference. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @see #getMonitoringProperties() - * @generated - * @ordered - */ - protected MonitoringPropertyArray monitoringProperties; - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - protected MonitoringpropertiesImpl() { - super(); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - protected EClass eStaticClass() { - return MonitoringPackage.Literals.MONITORINGPROPERTIES; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public MonitoringPropertyArray getMonitoringProperties() { - return monitoringProperties; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public NotificationChain basicSetMonitoringProperties(MonitoringPropertyArray newMonitoringProperties, NotificationChain msgs) { - MonitoringPropertyArray oldMonitoringProperties = monitoringProperties; - monitoringProperties = newMonitoringProperties; - if (eNotificationRequired()) { - ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES, oldMonitoringProperties, newMonitoringProperties); - if (msgs == null) msgs = notification; else msgs.add(notification); - } - return msgs; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public void setMonitoringProperties(MonitoringPropertyArray newMonitoringProperties) { - if (newMonitoringProperties != monitoringProperties) { - NotificationChain msgs = null; - if (monitoringProperties != null) - msgs = ((InternalEObject)monitoringProperties).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES, null, msgs); - if (newMonitoringProperties != null) - msgs = ((InternalEObject)newMonitoringProperties).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES, null, msgs); - msgs = basicSetMonitoringProperties(newMonitoringProperties, msgs); - if (msgs != null) msgs.dispatch(); - } - else if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES, newMonitoringProperties, newMonitoringProperties)); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public boolean appliesConstraint(final DiagnosticChain diagnostics, final Map<Object, Object> context) { - /** - * - * inv appliesConstraint: - * let - * severity : Integer[1] = 'Monitoringproperties::appliesConstraint'.getSeverity() - * in - * if severity <= 0 - * then true - * else - * let - * result : occi::Boolean[1] = self.entity.oclIsKindOf(occi::Resource) - * in - * 'Monitoringproperties::appliesConstraint'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) - * endif - */ - final /*@NonInvalid*/ Executor executor = PivotUtilInternal.getExecutor(this); - final /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver(); - final /*@NonInvalid*/ IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, MonitoringTables.STR_Monitoringproperties_c_c_appliesConstraint); - final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, MonitoringTables.INT_0).booleanValue(); - /*@NonInvalid*/ boolean symbol_0; - if (le) { - symbol_0 = ValueUtil.TRUE_VALUE; - } - else { - final /*@NonInvalid*/ org.eclipse.ocl.pivot.Class TYP_occi_c_c_Resource = idResolver.getClass(MonitoringTables.CLSSid_Resource, null); - final /*@NonInvalid*/ Entity entity = this.getEntity(); - final /*@NonInvalid*/ boolean result = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, entity, TYP_occi_c_c_Resource).booleanValue(); - final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, MonitoringTables.STR_Monitoringproperties_c_c_appliesConstraint, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, MonitoringTables.INT_0).booleanValue(); - symbol_0 = logDiagnostic; - } - return Boolean.TRUE == symbol_0; - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { - switch (featureID) { - case MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES: - return basicSetMonitoringProperties(null, msgs); - } - return super.eInverseRemove(otherEnd, featureID, msgs); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public Object eGet(int featureID, boolean resolve, boolean coreType) { - switch (featureID) { - case MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES: - return getMonitoringProperties(); - } - return super.eGet(featureID, resolve, coreType); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public void eSet(int featureID, Object newValue) { - switch (featureID) { - case MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES: - setMonitoringProperties((MonitoringPropertyArray)newValue); - return; - } - super.eSet(featureID, newValue); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public void eUnset(int featureID) { - switch (featureID) { - case MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES: - setMonitoringProperties((MonitoringPropertyArray)null); - return; - } - super.eUnset(featureID); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - public boolean eIsSet(int featureID) { - switch (featureID) { - case MonitoringPackage.MONITORINGPROPERTIES__MONITORING_PROPERTIES: - return monitoringProperties != null; - } - return super.eIsSet(featureID); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - @Override - @SuppressWarnings("unchecked") - public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException { - switch (operationID) { - case MonitoringPackage.MONITORINGPROPERTIES___APPLIES_CONSTRAINT__DIAGNOSTICCHAIN_MAP: - return appliesConstraint((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1)); - } - return super.eInvoke(operationID, arguments); - } - -} //MonitoringpropertiesImpl diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringpropertyImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringpropertyImpl.java new file mode 100644 index 0000000..56b7532 --- /dev/null +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/MonitoringpropertyImpl.java @@ -0,0 +1,303 @@ +/** + * Copyright (c) 2015-2017 Obeo, Inria + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * - William Piers <william.piers@obeo.fr> + * - Philippe Merle <philippe.merle@inria.fr> + * - Faiez Zalila <faiez.zalila@inria.fr> + */ +package monitoring.impl; + +import java.lang.reflect.InvocationTargetException; + +import java.util.Map; + +import monitoring.MonitoringPackage; +import monitoring.MonitoringTables; +import monitoring.Monitoringproperty; + +import monitoring.util.MonitoringValidator; + +import org.eclipse.cmf.occi.core.Resource; +import org.eclipse.cmf.occi.core.impl.LinkImpl; + +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.DiagnosticChain; +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.ocl.pivot.evaluation.Executor; +import org.eclipse.ocl.pivot.ids.IdResolver; +import org.eclipse.ocl.pivot.ids.TypeId; +import org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal; +import org.eclipse.ocl.pivot.library.oclany.OclAnyOclIsKindOfOperation; +import org.eclipse.ocl.pivot.library.oclany.OclComparableLessThanEqualOperation; +import org.eclipse.ocl.pivot.library.string.CGStringGetSeverityOperation; +import org.eclipse.ocl.pivot.library.string.CGStringLogDiagnosticOperation; +import org.eclipse.ocl.pivot.utilities.ValueUtil; +import org.eclipse.ocl.pivot.values.IntegerValue; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Monitoringproperty</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link monitoring.impl.MonitoringpropertyImpl#getMonitoringPropertyName <em>Monitoring Property Name</em>}</li> + * <li>{@link monitoring.impl.MonitoringpropertyImpl#getMonitoringPropertyValue <em>Monitoring Property Value</em>}</li> + * </ul> + * + * @generated + */ +public class MonitoringpropertyImpl extends LinkImpl implements Monitoringproperty { + /** + * The default value of the '{@link #getMonitoringPropertyName() <em>Monitoring Property Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyName() + * @generated + * @ordered + */ + protected static final String MONITORING_PROPERTY_NAME_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMonitoringPropertyName() <em>Monitoring Property Name</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyName() + * @generated + * @ordered + */ + protected String monitoringPropertyName = MONITORING_PROPERTY_NAME_EDEFAULT; + + /** + * The default value of the '{@link #getMonitoringPropertyValue() <em>Monitoring Property Value</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyValue() + * @generated + * @ordered + */ + protected static final String MONITORING_PROPERTY_VALUE_EDEFAULT = null; + + /** + * The cached value of the '{@link #getMonitoringPropertyValue() <em>Monitoring Property Value</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMonitoringPropertyValue() + * @generated + * @ordered + */ + protected String monitoringPropertyValue = MONITORING_PROPERTY_VALUE_EDEFAULT; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MonitoringpropertyImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return MonitoringPackage.Literals.MONITORINGPROPERTY; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getMonitoringPropertyName() { + return monitoringPropertyName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setMonitoringPropertyName(String newMonitoringPropertyName) { + String oldMonitoringPropertyName = monitoringPropertyName; + monitoringPropertyName = newMonitoringPropertyName; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_NAME, oldMonitoringPropertyName, monitoringPropertyName)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getMonitoringPropertyValue() { + return monitoringPropertyValue; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setMonitoringPropertyValue(String newMonitoringPropertyValue) { + String oldMonitoringPropertyValue = monitoringPropertyValue; + monitoringPropertyValue = newMonitoringPropertyValue; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE, oldMonitoringPropertyValue, monitoringPropertyValue)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean targetConstraint(final DiagnosticChain diagnostics, final Map<Object, Object> context) { + /** + * + * inv targetConstraint: + * let + * severity : Integer[1] = 'Monitoringproperty::targetConstraint'.getSeverity() + * in + * if severity <= 0 + * then true + * else + * let result : occi::Boolean[1] = self.target.oclIsKindOf(Sensor) + * in + * 'Monitoringproperty::targetConstraint'.logDiagnostic(self, null, diagnostics, context, null, severity, result, 0) + * endif + */ + final /*@NonInvalid*/ Executor executor = PivotUtilInternal.getExecutor(this); + final /*@NonInvalid*/ IdResolver idResolver = executor.getIdResolver(); + final /*@NonInvalid*/ IntegerValue severity_0 = CGStringGetSeverityOperation.INSTANCE.evaluate(executor, MonitoringTables.STR_Monitoringproperty_c_c_targetConstraint); + final /*@NonInvalid*/ boolean le = OclComparableLessThanEqualOperation.INSTANCE.evaluate(executor, severity_0, MonitoringTables.INT_0).booleanValue(); + /*@NonInvalid*/ boolean symbol_0; + if (le) { + symbol_0 = ValueUtil.TRUE_VALUE; + } + else { + final /*@NonInvalid*/ org.eclipse.ocl.pivot.Class TYP_monitoring_c_c_Sensor = idResolver.getClass(MonitoringTables.CLSSid_Sensor, null); + final /*@NonInvalid*/ Resource target = this.getTarget(); + final /*@NonInvalid*/ boolean result = OclAnyOclIsKindOfOperation.INSTANCE.evaluate(executor, target, TYP_monitoring_c_c_Sensor).booleanValue(); + final /*@NonInvalid*/ boolean logDiagnostic = CGStringLogDiagnosticOperation.INSTANCE.evaluate(executor, TypeId.BOOLEAN, MonitoringTables.STR_Monitoringproperty_c_c_targetConstraint, this, (Object)null, diagnostics, context, (Object)null, severity_0, result, MonitoringTables.INT_0).booleanValue(); + symbol_0 = logDiagnostic; + } + return Boolean.TRUE == symbol_0; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_NAME: + return getMonitoringPropertyName(); + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE: + return getMonitoringPropertyValue(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_NAME: + setMonitoringPropertyName((String)newValue); + return; + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE: + setMonitoringPropertyValue((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_NAME: + setMonitoringPropertyName(MONITORING_PROPERTY_NAME_EDEFAULT); + return; + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE: + setMonitoringPropertyValue(MONITORING_PROPERTY_VALUE_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_NAME: + return MONITORING_PROPERTY_NAME_EDEFAULT == null ? monitoringPropertyName != null : !MONITORING_PROPERTY_NAME_EDEFAULT.equals(monitoringPropertyName); + case MonitoringPackage.MONITORINGPROPERTY__MONITORING_PROPERTY_VALUE: + return MONITORING_PROPERTY_VALUE_EDEFAULT == null ? monitoringPropertyValue != null : !MONITORING_PROPERTY_VALUE_EDEFAULT.equals(monitoringPropertyValue); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + @SuppressWarnings("unchecked") + public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException { + switch (operationID) { + case MonitoringPackage.MONITORINGPROPERTY___TARGET_CONSTRAINT__DIAGNOSTICCHAIN_MAP: + return targetConstraint((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1)); + } + return super.eInvoke(operationID, arguments); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (monitoringPropertyName: "); + result.append(monitoringPropertyName); + result.append(", monitoringPropertyValue: "); + result.append(monitoringPropertyValue); + result.append(')'); + return result.toString(); + } + +} //MonitoringpropertyImpl diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/ProcessorImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/ProcessorImpl.java index e87c20c..8f0cd63 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/ProcessorImpl.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/ProcessorImpl.java @@ -15,18 +15,48 @@ package monitoring.impl; import monitoring.MonitoringPackage; import monitoring.Processor; +import org.eclipse.emf.common.notify.Notification; + import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; + import org.modmacao.occi.platform.impl.ComponentImpl; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Processor</b></em>'. * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link monitoring.impl.ProcessorImpl#getGathererAddress <em>Gatherer Address</em>}</li> + * </ul> * * @generated */ public class ProcessorImpl extends ComponentImpl implements Processor { + /** + * The default value of the '{@link #getGathererAddress() <em>Gatherer Address</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getGathererAddress() + * @generated + * @ordered + */ + protected static final String GATHERER_ADDRESS_EDEFAULT = null; + + /** + * The cached value of the '{@link #getGathererAddress() <em>Gatherer Address</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getGathererAddress() + * @generated + * @ordered + */ + protected String gathererAddress = GATHERER_ADDRESS_EDEFAULT; + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -46,4 +76,99 @@ public class ProcessorImpl extends ComponentImpl implements Processor { return MonitoringPackage.Literals.PROCESSOR; } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getGathererAddress() { + return gathererAddress; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setGathererAddress(String newGathererAddress) { + String oldGathererAddress = gathererAddress; + gathererAddress = newGathererAddress; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.PROCESSOR__GATHERER_ADDRESS, oldGathererAddress, gathererAddress)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case MonitoringPackage.PROCESSOR__GATHERER_ADDRESS: + return getGathererAddress(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case MonitoringPackage.PROCESSOR__GATHERER_ADDRESS: + setGathererAddress((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case MonitoringPackage.PROCESSOR__GATHERER_ADDRESS: + setGathererAddress(GATHERER_ADDRESS_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case MonitoringPackage.PROCESSOR__GATHERER_ADDRESS: + return GATHERER_ADDRESS_EDEFAULT == null ? gathererAddress != null : !GATHERER_ADDRESS_EDEFAULT.equals(gathererAddress); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (gathererAddress: "); + result.append(gathererAddress); + result.append(')'); + return result.toString(); + } + } //ProcessorImpl diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/PublisherImpl.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/PublisherImpl.java index 9f727ea..68bd44a 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/PublisherImpl.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/impl/PublisherImpl.java @@ -15,18 +15,48 @@ package monitoring.impl; import monitoring.MonitoringPackage; import monitoring.Publisher; +import org.eclipse.emf.common.notify.Notification; + import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.impl.ENotificationImpl; + import org.modmacao.occi.platform.impl.ComponentImpl; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Publisher</b></em>'. * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link monitoring.impl.PublisherImpl#getPublisherEndpoint <em>Publisher Endpoint</em>}</li> + * </ul> * * @generated */ public class PublisherImpl extends ComponentImpl implements Publisher { + /** + * The default value of the '{@link #getPublisherEndpoint() <em>Publisher Endpoint</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getPublisherEndpoint() + * @generated + * @ordered + */ + protected static final String PUBLISHER_ENDPOINT_EDEFAULT = null; + + /** + * The cached value of the '{@link #getPublisherEndpoint() <em>Publisher Endpoint</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getPublisherEndpoint() + * @generated + * @ordered + */ + protected String publisherEndpoint = PUBLISHER_ENDPOINT_EDEFAULT; + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -46,4 +76,99 @@ public class PublisherImpl extends ComponentImpl implements Publisher { return MonitoringPackage.Literals.PUBLISHER; } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getPublisherEndpoint() { + return publisherEndpoint; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setPublisherEndpoint(String newPublisherEndpoint) { + String oldPublisherEndpoint = publisherEndpoint; + publisherEndpoint = newPublisherEndpoint; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, MonitoringPackage.PUBLISHER__PUBLISHER_ENDPOINT, oldPublisherEndpoint, publisherEndpoint)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case MonitoringPackage.PUBLISHER__PUBLISHER_ENDPOINT: + return getPublisherEndpoint(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case MonitoringPackage.PUBLISHER__PUBLISHER_ENDPOINT: + setPublisherEndpoint((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case MonitoringPackage.PUBLISHER__PUBLISHER_ENDPOINT: + setPublisherEndpoint(PUBLISHER_ENDPOINT_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case MonitoringPackage.PUBLISHER__PUBLISHER_ENDPOINT: + return PUBLISHER_ENDPOINT_EDEFAULT == null ? publisherEndpoint != null : !PUBLISHER_ENDPOINT_EDEFAULT.equals(publisherEndpoint); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuffer result = new StringBuffer(super.toString()); + result.append(" (publisherEndpoint: "); + result.append(publisherEndpoint); + result.append(')'); + return result.toString(); + } + } //PublisherImpl diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringAdapterFactory.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringAdapterFactory.java index a63816d..04ee624 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringAdapterFactory.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringAdapterFactory.java @@ -15,6 +15,7 @@ package monitoring.util; import monitoring.*; import org.eclipse.cmf.occi.core.Entity; +import org.eclipse.cmf.occi.core.Link; import org.eclipse.cmf.occi.core.MixinBase; import org.eclipse.cmf.occi.core.Resource; @@ -84,14 +85,6 @@ public class MonitoringAdapterFactory extends AdapterFactoryImpl { */ protected MonitoringSwitch<Adapter> modelSwitch = new MonitoringSwitch<Adapter>() { - @Override - public Adapter caseMonitoringProperty(MonitoringProperty object) { - return createMonitoringPropertyAdapter(); - } - @Override - public Adapter caseMonitoringPropertyArray(MonitoringPropertyArray object) { - return createMonitoringPropertyArrayAdapter(); - } @Override public Adapter caseSensor(Sensor object) { return createSensorAdapter(); @@ -109,8 +102,12 @@ public class MonitoringAdapterFactory extends AdapterFactoryImpl { return createPublisherAdapter(); } @Override - public Adapter caseMonitoringproperties(Monitoringproperties object) { - return createMonitoringpropertiesAdapter(); + public Adapter caseMonitoringproperty(Monitoringproperty object) { + return createMonitoringpropertyAdapter(); + } + @Override + public Adapter caseMartpublisher(Martpublisher object) { + return createMartpublisherAdapter(); } @Override public Adapter caseEntity(Entity object) { @@ -129,6 +126,10 @@ public class MonitoringAdapterFactory extends AdapterFactoryImpl { return createComponentAdapter(); } @Override + public Adapter caseLink(Link object) { + return createLinkAdapter(); + } + @Override public Adapter caseMixinBase(MixinBase object) { return createMixinBaseAdapter(); } @@ -152,34 +153,6 @@ public class MonitoringAdapterFactory extends AdapterFactoryImpl { } - /** - * Creates a new adapter for an object of class '{@link monitoring.MonitoringProperty <em>Property</em>}'. - * <!-- begin-user-doc --> - * This default implementation returns null so that we can easily ignore cases; - * it's useful to ignore a case when inheritance will catch all the cases anyway. - * <!-- end-user-doc --> - * @return the new adapter. - * @see monitoring.MonitoringProperty - * @generated - */ - public Adapter createMonitoringPropertyAdapter() { - return null; - } - - /** - * Creates a new adapter for an object of class '{@link monitoring.MonitoringPropertyArray <em>Property Array</em>}'. - * <!-- begin-user-doc --> - * This default implementation returns null so that we can easily ignore cases; - * it's useful to ignore a case when inheritance will catch all the cases anyway. - * <!-- end-user-doc --> - * @return the new adapter. - * @see monitoring.MonitoringPropertyArray - * @generated - */ - public Adapter createMonitoringPropertyArrayAdapter() { - return null; - } - /** * Creates a new adapter for an object of class '{@link monitoring.Sensor <em>Sensor</em>}'. * <!-- begin-user-doc --> @@ -237,16 +210,30 @@ public class MonitoringAdapterFactory extends AdapterFactoryImpl { } /** - * Creates a new adapter for an object of class '{@link monitoring.Monitoringproperties <em>Monitoringproperties</em>}'. + * Creates a new adapter for an object of class '{@link monitoring.Monitoringproperty <em>Monitoringproperty</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see monitoring.Monitoringproperty + * @generated + */ + public Adapter createMonitoringpropertyAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link monitoring.Martpublisher <em>Martpublisher</em>}'. * <!-- begin-user-doc --> * This default implementation returns null so that we can easily ignore cases; * it's useful to ignore a case when inheritance will catch all the cases anyway. * <!-- end-user-doc --> * @return the new adapter. - * @see monitoring.Monitoringproperties + * @see monitoring.Martpublisher * @generated */ - public Adapter createMonitoringpropertiesAdapter() { + public Adapter createMartpublisherAdapter() { return null; } @@ -306,6 +293,20 @@ public class MonitoringAdapterFactory extends AdapterFactoryImpl { return null; } + /** + * Creates a new adapter for an object of class '{@link org.eclipse.cmf.occi.core.Link <em>Link</em>}'. + * <!-- begin-user-doc --> + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * <!-- end-user-doc --> + * @return the new adapter. + * @see org.eclipse.cmf.occi.core.Link + * @generated + */ + public Adapter createLinkAdapter() { + return null; + } + /** * Creates a new adapter for an object of class '{@link org.eclipse.cmf.occi.core.MixinBase <em>Mixin Base</em>}'. * <!-- begin-user-doc --> diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringSwitch.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringSwitch.java index 5771b40..701da7e 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringSwitch.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringSwitch.java @@ -15,6 +15,7 @@ package monitoring.util; import monitoring.*; import org.eclipse.cmf.occi.core.Entity; +import org.eclipse.cmf.occi.core.Link; import org.eclipse.cmf.occi.core.MixinBase; import org.eclipse.cmf.occi.core.Resource; @@ -83,18 +84,6 @@ public class MonitoringSwitch<T> extends Switch<T> { @Override protected T doSwitch(int classifierID, EObject theEObject) { switch (classifierID) { - case MonitoringPackage.MONITORING_PROPERTY: { - MonitoringProperty monitoringProperty = (MonitoringProperty)theEObject; - T result = caseMonitoringProperty(monitoringProperty); - if (result == null) result = defaultCase(theEObject); - return result; - } - case MonitoringPackage.MONITORING_PROPERTY_ARRAY: { - MonitoringPropertyArray monitoringPropertyArray = (MonitoringPropertyArray)theEObject; - T result = caseMonitoringPropertyArray(monitoringPropertyArray); - if (result == null) result = defaultCase(theEObject); - return result; - } case MonitoringPackage.SENSOR: { Sensor sensor = (Sensor)theEObject; T result = caseSensor(sensor); @@ -131,10 +120,18 @@ public class MonitoringSwitch<T> extends Switch<T> { if (result == null) result = defaultCase(theEObject); return result; } - case MonitoringPackage.MONITORINGPROPERTIES: { - Monitoringproperties monitoringproperties = (Monitoringproperties)theEObject; - T result = caseMonitoringproperties(monitoringproperties); - if (result == null) result = caseMixinBase(monitoringproperties); + case MonitoringPackage.MONITORINGPROPERTY: { + Monitoringproperty monitoringproperty = (Monitoringproperty)theEObject; + T result = caseMonitoringproperty(monitoringproperty); + if (result == null) result = caseLink(monitoringproperty); + if (result == null) result = caseEntity(monitoringproperty); + if (result == null) result = defaultCase(theEObject); + return result; + } + case MonitoringPackage.MARTPUBLISHER: { + Martpublisher martpublisher = (Martpublisher)theEObject; + T result = caseMartpublisher(martpublisher); + if (result == null) result = caseMixinBase(martpublisher); if (result == null) result = defaultCase(theEObject); return result; } @@ -142,36 +139,6 @@ public class MonitoringSwitch<T> extends Switch<T> { } } - /** - * Returns the result of interpreting the object as an instance of '<em>Property</em>'. - * <!-- begin-user-doc --> - * This implementation returns null; - * returning a non-null result will terminate the switch. - * <!-- end-user-doc --> - * @param object the target of the switch. - * @return the result of interpreting the object as an instance of '<em>Property</em>'. - * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) - * @generated - */ - public T caseMonitoringProperty(MonitoringProperty object) { - return null; - } - - /** - * Returns the result of interpreting the object as an instance of '<em>Property Array</em>'. - * <!-- begin-user-doc --> - * This implementation returns null; - * returning a non-null result will terminate the switch. - * <!-- end-user-doc --> - * @param object the target of the switch. - * @return the result of interpreting the object as an instance of '<em>Property Array</em>'. - * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) - * @generated - */ - public T caseMonitoringPropertyArray(MonitoringPropertyArray object) { - return null; - } - /** * Returns the result of interpreting the object as an instance of '<em>Sensor</em>'. * <!-- begin-user-doc --> @@ -233,17 +200,32 @@ public class MonitoringSwitch<T> extends Switch<T> { } /** - * Returns the result of interpreting the object as an instance of '<em>Monitoringproperties</em>'. + * Returns the result of interpreting the object as an instance of '<em>Monitoringproperty</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Monitoringproperty</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseMonitoringproperty(Monitoringproperty object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Martpublisher</em>'. * <!-- begin-user-doc --> * This implementation returns null; * returning a non-null result will terminate the switch. * <!-- end-user-doc --> * @param object the target of the switch. - * @return the result of interpreting the object as an instance of '<em>Monitoringproperties</em>'. + * @return the result of interpreting the object as an instance of '<em>Martpublisher</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ - public T caseMonitoringproperties(Monitoringproperties object) { + public T caseMartpublisher(Martpublisher object) { return null; } @@ -307,6 +289,21 @@ public class MonitoringSwitch<T> extends Switch<T> { return null; } + /** + * Returns the result of interpreting the object as an instance of '<em>Link</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>Link</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseLink(Link object) { + return null; + } + /** * Returns the result of interpreting the object as an instance of '<em>Mixin Base</em>'. * <!-- begin-user-doc --> diff --git a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringValidator.java b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringValidator.java index 0fb63c9..afaf936 100644 --- a/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringValidator.java +++ b/de.ugoe.cs.rwm.mocci.model/src-gen/monitoring/util/MonitoringValidator.java @@ -21,6 +21,9 @@ import org.eclipse.cmf.occi.core.util.OCCIValidator; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EOperation; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.util.EObjectValidator; @@ -54,12 +57,20 @@ public class MonitoringValidator extends EObjectValidator { public static final String DIAGNOSTIC_SOURCE = "monitoring"; /** - * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Applies Constraint' of 'Monitoringproperties'. + * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Target Constraint' of 'Monitoringproperty'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - public static final int MONITORINGPROPERTIES__APPLIES_CONSTRAINT = 1; + public static final int MONITORINGPROPERTY__TARGET_CONSTRAINT = 1; + + /** + * The {@link org.eclipse.emf.common.util.Diagnostic#getCode() code} for constraint 'Applies Constraint' of 'Martpublisher'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final int MARTPUBLISHER__APPLIES_CONSTRAINT = 2; /** * A constant with a fixed name that can be used as the base value for additional hand written constants. @@ -67,7 +78,7 @@ public class MonitoringValidator extends EObjectValidator { * <!-- end-user-doc --> * @generated */ - private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 1; + private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 2; /** * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class. @@ -116,10 +127,6 @@ public class MonitoringValidator extends EObjectValidator { @Override protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) { switch (classifierID) { - case MonitoringPackage.MONITORING_PROPERTY: - return validateMonitoringProperty((MonitoringProperty)value, diagnostics, context); - case MonitoringPackage.MONITORING_PROPERTY_ARRAY: - return validateMonitoringPropertyArray((MonitoringPropertyArray)value, diagnostics, context); case MonitoringPackage.SENSOR: return validateSensor((Sensor)value, diagnostics, context); case MonitoringPackage.DATAGATHERER: @@ -128,8 +135,10 @@ public class MonitoringValidator extends EObjectValidator { return validateProcessor((Processor)value, diagnostics, context); case MonitoringPackage.PUBLISHER: return validatePublisher((Publisher)value, diagnostics, context); - case MonitoringPackage.MONITORINGPROPERTIES: - return validateMonitoringproperties((Monitoringproperties)value, diagnostics, context); + case MonitoringPackage.MONITORINGPROPERTY: + return validateMonitoringproperty((Monitoringproperty)value, diagnostics, context); + case MonitoringPackage.MARTPUBLISHER: + return validateMartpublisher((Martpublisher)value, diagnostics, context); case MonitoringPackage.DATE_TIME: return validateDateTime((String)value, diagnostics, context); case MonitoringPackage.SECOND: @@ -141,24 +150,6 @@ public class MonitoringValidator extends EObjectValidator { } } - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public boolean validateMonitoringProperty(MonitoringProperty monitoringProperty, DiagnosticChain diagnostics, Map<Object, Object> context) { - return validate_EveryDefaultConstraint(monitoringProperty, diagnostics, context); - } - - /** - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - */ - public boolean validateMonitoringPropertyArray(MonitoringPropertyArray monitoringPropertyArray, DiagnosticChain diagnostics, Map<Object, Object> context) { - return validate_EveryDefaultConstraint(monitoringPropertyArray, diagnostics, context); - } - /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -256,28 +247,64 @@ public class MonitoringValidator extends EObjectValidator { * <!-- end-user-doc --> * @generated */ - public boolean validateMonitoringproperties(Monitoringproperties monitoringproperties, DiagnosticChain diagnostics, Map<Object, Object> context) { - if (!validate_NoCircularContainment(monitoringproperties, diagnostics, context)) return false; - boolean result = validate_EveryMultiplicityConforms(monitoringproperties, diagnostics, context); - if (result || diagnostics != null) result &= validate_EveryDataValueConforms(monitoringproperties, diagnostics, context); - if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(monitoringproperties, diagnostics, context); - if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(monitoringproperties, diagnostics, context); - if (result || diagnostics != null) result &= validate_EveryProxyResolves(monitoringproperties, diagnostics, context); - if (result || diagnostics != null) result &= validate_UniqueID(monitoringproperties, diagnostics, context); - if (result || diagnostics != null) result &= validate_EveryKeyUnique(monitoringproperties, diagnostics, context); - if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(monitoringproperties, diagnostics, context); - if (result || diagnostics != null) result &= validateMonitoringproperties_appliesConstraint(monitoringproperties, diagnostics, context); + public boolean validateMonitoringproperty(Monitoringproperty monitoringproperty, DiagnosticChain diagnostics, Map<Object, Object> context) { + if (!validate_NoCircularContainment(monitoringproperty, diagnostics, context)) return false; + boolean result = validate_EveryMultiplicityConforms(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryDataValueConforms(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryProxyResolves(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= validate_UniqueID(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryKeyUnique(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= occiValidator.validateEntity_IdUnique(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= occiValidator.validateEntity_AttributesNameUnique(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= occiValidator.validateEntity_KindCompatibleWithOneAppliesOfEachMixin(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= occiValidator.validateEntity_DifferentMixins(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= occiValidator.validateLink_LinkKindIsInParent(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= occiValidator.validateLink_sourceReferenceInvariant(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= occiValidator.validateLink_targetReferenceInvariant(monitoringproperty, diagnostics, context); + if (result || diagnostics != null) result &= validateMonitoringproperty_targetConstraint(monitoringproperty, diagnostics, context); + return result; + } + + /** + * Validates the targetConstraint constraint of '<em>Monitoringproperty</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateMonitoringproperty_targetConstraint(Monitoringproperty monitoringproperty, DiagnosticChain diagnostics, Map<Object, Object> context) { + return monitoringproperty.targetConstraint(diagnostics, context); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateMartpublisher(Martpublisher martpublisher, DiagnosticChain diagnostics, Map<Object, Object> context) { + if (!validate_NoCircularContainment(martpublisher, diagnostics, context)) return false; + boolean result = validate_EveryMultiplicityConforms(martpublisher, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryDataValueConforms(martpublisher, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(martpublisher, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(martpublisher, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryProxyResolves(martpublisher, diagnostics, context); + if (result || diagnostics != null) result &= validate_UniqueID(martpublisher, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryKeyUnique(martpublisher, diagnostics, context); + if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(martpublisher, diagnostics, context); + if (result || diagnostics != null) result &= validateMartpublisher_appliesConstraint(martpublisher, diagnostics, context); return result; } /** - * Validates the appliesConstraint constraint of '<em>Monitoringproperties</em>'. + * Validates the appliesConstraint constraint of '<em>Martpublisher</em>'. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - public boolean validateMonitoringproperties_appliesConstraint(Monitoringproperties monitoringproperties, DiagnosticChain diagnostics, Map<Object, Object> context) { - return monitoringproperties.appliesConstraint(diagnostics, context); + public boolean validateMartpublisher_appliesConstraint(Martpublisher martpublisher, DiagnosticChain diagnostics, Map<Object, Object> context) { + return martpublisher.appliesConstraint(diagnostics, context); } /** diff --git a/src/test/java/de/ugoe/cs/rwm/mocci/CreateElementsTest.java b/src/test/java/de/ugoe/cs/rwm/mocci/CreateElementsTest.java index 17a473d..3b95d7f 100644 --- a/src/test/java/de/ugoe/cs/rwm/mocci/CreateElementsTest.java +++ b/src/test/java/de/ugoe/cs/rwm/mocci/CreateElementsTest.java @@ -39,9 +39,6 @@ import de.ugoe.cs.rwm.tocci.TransformatorFactory; import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator; import monitoring.MonitoringFactory; import monitoring.MonitoringPackage; -import monitoring.MonitoringProperty; -import monitoring.MonitoringPropertyArray; -import monitoring.Monitoringproperties; import monitoring.Sensor; import monitoring.impl.MonitoringFactoryImpl; @@ -65,29 +62,7 @@ public class CreateElementsTest { //Resources Sensor sensor = mFact.createSensor(); Compute comp = iFact.createCompute(); - //MixinBase - Monitoringproperties monProps = mFact.createMonitoringproperties(); - MonitoringPropertyArray monArr = mFact.createMonitoringPropertyArray(); - MonitoringProperty monProp = mFact.createMonitoringProperty(); - monProp.setName("CPU"); - monProp.setValue("Critical"); - monProp.setId("123452"); - monArr.getMonitoringpropertyarrayValues().add(monProp); - monProps.setMonitoringProperties(monArr); - - comp.getParts().add(monProps); - - config.getResources().add(sensor); - config.getResources().add(comp); - System.out.println(config); - for(org.eclipse.cmf.occi.core.Resource res : config.getResources()) { - System.out.println(res); - for(MixinBase mixBase: res.getParts()) { - System.out.println(mixBase); - if(mixBase instanceof Monitoringproperties) { - System.out.println(((Monitoringproperties) mixBase).getMonitoringProperties().getMonitoringpropertyarrayValues()); - } - } - } } + } + \ No newline at end of file diff --git a/src/test/java/de/ugoe/cs/rwm/mocci/DeployHadoopMonitoringTest.java b/src/test/java/de/ugoe/cs/rwm/mocci/DeployHadoopMonitoringTest.java index 00e4397..a2d65ec 100644 --- a/src/test/java/de/ugoe/cs/rwm/mocci/DeployHadoopMonitoringTest.java +++ b/src/test/java/de/ugoe/cs/rwm/mocci/DeployHadoopMonitoringTest.java @@ -60,7 +60,7 @@ public class DeployHadoopMonitoringTest { CachedResourceSet.getCache().clear(); System.out.println(OcciRegistry.getInstance().getRegisteredExtensions()); //Logger.getRootLogger().setLevel(Level.FATAL); - Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/hadoopClusterNewExt.occic")); + Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/hadoopClusterNewExtWithMem.occic")); Transformator trans = TransformatorFactory.getTransformator("OCCI2OCCI"); trans.transform(occiPath, occiPath); diff --git a/src/test/java/de/ugoe/cs/rwm/mocci/EmptyTest.java b/src/test/java/de/ugoe/cs/rwm/mocci/EmptyTest.java new file mode 100644 index 0000000..0f9bcea --- /dev/null +++ b/src/test/java/de/ugoe/cs/rwm/mocci/EmptyTest.java @@ -0,0 +1,58 @@ +package de.ugoe.cs.rwm.mocci; + +import static org.junit.Assert.assertTrue; + +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; +import org.eclipse.cmf.occi.core.Configuration; +import org.eclipse.cmf.occi.core.Link; +import org.eclipse.cmf.occi.core.Mixin; +import org.eclipse.cmf.occi.core.OCCIPackage; +import org.eclipse.cmf.occi.core.util.OcciRegistry; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.epsilon.emc.emf.CachedResourceSet; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +import de.ugoe.cs.rwm.docci.MartDeployer; +import de.ugoe.cs.rwm.docci.ModelUtility; +import de.ugoe.cs.rwm.mocci.TestUtility; +import de.ugoe.cs.rwm.docci.connector.Connector; +import de.ugoe.cs.rwm.docci.connector.LocalhostConnector; +import de.ugoe.cs.rwm.tocci.Transformator; +import de.ugoe.cs.rwm.tocci.TransformatorFactory; +import de.ugoe.cs.rwm.tocci.occi2openstack.OCCI2OPENSTACKTransformator; +import monitoring.MonitoringPackage; + +public class EmptyTest { + String manNWid = "urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339590"; + String manNWRuntimeId = "75a4639e-9ce7-4058-b859-8a711b0e2e7b"; + String sshKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"; + String userData = "I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"; + + + @BeforeClass + public static void OCCIRegistrySetup() { + TestUtility.loggerSetup(); + TestUtility.extensionRegistrySetup(); + } + + @Test + public void deprovisionEverything() { + CachedResourceSet.getCache().clear(); + Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/Empty.occic")); + Connector conn = new LocalhostConnector("localhost", 8080, "ubuntu"); + MartDeployer deployer = new MartDeployer(conn); + deployer.deploy(occiPath); + assertTrue(TestUtility.equalsRuntime(occiPath, conn)); + } +} diff --git a/src/test/java/de/ugoe/cs/rwm/mocci/ResolveProxyTest.java b/src/test/java/de/ugoe/cs/rwm/mocci/ResolveProxyTest.java index 121f25f..d628c0d 100644 --- a/src/test/java/de/ugoe/cs/rwm/mocci/ResolveProxyTest.java +++ b/src/test/java/de/ugoe/cs/rwm/mocci/ResolveProxyTest.java @@ -43,7 +43,7 @@ public class ResolveProxyTest { @Test public void resolveProxies() { - Path newOCCI = Paths.get(de.ugoe.cs.rwm.docci.ModelUtility.getPathToResource("occi/hadoopClusterNewExt.occic")); + Path newOCCI = Paths.get(de.ugoe.cs.rwm.docci.ModelUtility.getPathToResource("occi/hadoopClusterNewExt2.occic")); Resource ress = de.ugoe.cs.rwm.docci.ModelUtility.loadOCCIintoEMFResource(newOCCI); ResourceSet resSet = ress.getResourceSet(); diff --git a/src/test/java/de/ugoe/cs/rwm/mocci/TestUtility.java b/src/test/java/de/ugoe/cs/rwm/mocci/TestUtility.java index 2b749cf..ae582dc 100644 --- a/src/test/java/de/ugoe/cs/rwm/mocci/TestUtility.java +++ b/src/test/java/de/ugoe/cs/rwm/mocci/TestUtility.java @@ -26,7 +26,6 @@ import de.ugoe.cs.rwm.docci.deprovisioner.Deprovisioner; import de.ugoe.cs.rwm.docci.executor.Executor; import de.ugoe.cs.rwm.docci.extractor.Extractor; import de.ugoe.cs.rwm.docci.provisioner.Provisioner; -import de.ugoe.cs.rwm.docci.updater.ElementAdapter; import de.ugoe.cs.rwm.tocci.Transformator; import modmacao.ModmacaoPackage; import monitoring.MonitoringPackage; diff --git a/src/test/java/de/ugoe/cs/rwm/mocci/live/DeployHadoopMonitoringTestLive.java b/src/test/java/de/ugoe/cs/rwm/mocci/live/DeployHadoopMonitoringTestLive.java index bb8b7a6..977f3ab 100644 --- a/src/test/java/de/ugoe/cs/rwm/mocci/live/DeployHadoopMonitoringTestLive.java +++ b/src/test/java/de/ugoe/cs/rwm/mocci/live/DeployHadoopMonitoringTestLive.java @@ -47,7 +47,6 @@ public class DeployHadoopMonitoringTestLive { TestUtility.extensionRegistrySetup(); } - @Before public void deprovisionEverything() { CachedResourceSet.getCache().clear(); Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/Empty.occic")); @@ -59,7 +58,7 @@ public class DeployHadoopMonitoringTestLive { @Test public void deployHadoopWithNewMonitoring() { CachedResourceSet.getCache().clear(); - Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/hadoopClusterNewExt.occic")); + Path occiPath = Paths.get(ModelUtility.getPathToResource("occi/hadoopClusterNewExtWithMem.occic")); Transformator trans = TransformatorFactory.getTransformator("OCCI2OCCI"); trans.transform(occiPath, occiPath); diff --git a/src/test/resources/martserver-plugins/de.ugoe.cs.rwm.mocci.connector.dummy.jar b/src/test/resources/martserver-plugins/de.ugoe.cs.rwm.mocci.connector.dummy.jar index 48c2737dce437a56a3cc3bd2d6e0ac60bd881ac5..213d415c254d2d18986adde7644eae7f07f13742 100644 GIT binary patch delta 2290 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 delta 1493 zcmZ4EanX@4z?+$ci-CcIgJEXkWZ#K=sw`mI+*2JyGXMb-hyVg+AWliuXJ$atvRnnC z<-9tC{-q73Cu=eqLKtz3)?miwxr|m^5Y}z(FlIiG1@q1Hq|Y)kFkE7pY|n2~KRG^I z*iq!@`6Zb`$1_Z#)~>CO$~Fyr5umv*f@P&hOK8iqrvAw<C-kJ0A9~~VG5TfjK_~kL zd9OW}eW#sGQ!J5xcIHlX-R9FX=kEXiFNWcU^Yq7TX0Izw1%BLhH1O-Mp2g2fXD@#E z)sp@DuSI=)&bjwp)GCi}xbkwIK?whwm1!CEtZJ9$A5Zk(oqSU|XsK+3YP<R+$^G+0 zR-Zg@glG4`m12+gU3EHo=r4zB##AGxn;Mt2Hu}l<q_<z{x4&;>GWD|2MR%*NwaF1L zOPViSnjVq9XrIUFl<ei(_>Csk&g9v0IVEns>GRnwTY{c+Z}vJqefIiuzc%}wvw6qs zYjZ*MS!R3vne3H6gRjY2T3^yLoaJ<5*3(lyTUhNkB`^Q7@Z-m|BE>g<s_j3mmbd8W zhRq6>O%~;_x9w$huv;dxZ8yW|OS`y?d3BG!(N8$Vbo$|=uKf~+%ifvzSV%p)XYjFR ziI&;LCDo7TOU>w?cPx5~(2|~#pHC%k<j)Ezs7_*fx6n7)*z`db-@8edDuZlW<0s$# zF7<pxjqTw}>zVdXd@L<lFTeV8&D0-HmHw}qQs1z(a-Unx-V^&ZpI-l1FfU)Ae(j0< z`cLH_ezZB?xj*hnbI`w&OS2!_qo$PplF56%0^@ovFeN!nekfvGpP5?hoS&DMnp~1! zq?eqNSX{g`=yu*^2LapJO9~&&+Samd;hk9`Tz+1=6~5{Q%6DY6rmVQK$jip+Tat|B zy^P%EA8VSX6ixiWV8><ndYP!#s(l|G%)C3(GW~qTv+wie_cOeCw3CxNJ9Ng5<Ol0I zm9A;+SpK&*S1x0-T|e6_HnVykn<L81vw2dVe|YfVsi5=OiCPalztoi<kd<U{D%H5n z``F-avc|2o!fiqRznT&+awdONlm6CP_4=Fg#AaJ_tHRI~?<Xf{{uNN;sqWLS5c4>= zw`H}zv)z<=;zj<)Hhu_N`6Jsi-$V4+L64IY12Q!x-E*Dh60$4KWMZP+X`jlZdiyJX zq^~oTv%Pb_en@GW&Yc5H&avzjPmVF#`<cFQ6?5Acz_XggD`;wFMDwqXmirS54<Aal zxp-{b1*h8wrnN4=k@n)BzcX8zPJvDGhW6>DHZpySv<ug3I2ISUD+~VSxxLN!uG?}` z;aMfuX0Eb-!|!ou>({9v^V%h*y}jwQDq>cBoN$|E{1;=VH8HAv*OuAw-Yow*|HqjC zUYDwan||u=65r|R<dt3~<om*vJwx(K%*&7k{l|PJ&MvW9WSjm(`mON>eT_dZAMZ+f zZQW^j>aAgqq1OFC-3KP_*G}jOFl`82q`5wsd;5#Dxy1>R+E272_CCpfCb=NWcz@zQ zZLZ}zC1ia=&IRvUFmLkxf83}^<>qqV^vU<RbvCaORAYt|89yXrp{z*RyNr;M#Y)~7 z!YGutgD^JB>p~b$<c%N<DFssqBUr%_!kD074`EzZ@PsfF6yrERrBOYf+@;BWN@A1e zD7vE;PahRS6+miGQZcw-gb-UA-32GVS5Tb%MoEwvn6M{LP?Cn2?xiHfG)EXHr!;w$ zp!nqZN<3hL)&~5y<pgF0Ar1xxD-?siiGdALmy!l4h8XfrSxO~bih-dZr!+k?Pp=|3 VC%~JP4Wx}92wPbg7|diqJOI<8hUx$S diff --git a/src/test/resources/martserver-plugins/de.ugoe.cs.rwm.mocci.model.jar b/src/test/resources/martserver-plugins/de.ugoe.cs.rwm.mocci.model.jar index 1982e9ff4689e905a1e4fc157af58a255cb344e8..99b8ee2cc84765710233053d52daf75be0bd5d14 100644 GIT binary patch delta 51942 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 delta 49828 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%0DO-z)1~;C5bRQ}XK~|~Cs~VmK+r9d` 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ρMTOb42JFdP*d(AQu`7T@y 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 diff --git a/src/test/resources/occi/hadoopClusterNewExtCPUOnly.occic b/src/test/resources/occi/hadoopClusterNewExtCPUOnly.occic new file mode 100644 index 0000000..21600ca --- /dev/null +++ b/src/test/resources/occi/hadoopClusterNewExtCPUOnly.occic @@ -0,0 +1,288 @@ +<?xml version="1.0" encoding="ASCII"?> +<occi:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:infrastructure="http://schemas.ogf.org/occi/infrastructure/ecore" xmlns:monitoring="http://schemas.ugoe.cs.rwm/monitoring/ecore" xmlns:occi="http://schemas.ogf.org/occi/core/ecore" xmlns:placement="http://schemas.modmacao.org/placement/ecore" xmlns:platform="http://schemas.modmacao.org/occi/platform/ecore"> + <use href="http://schemas.ogf.org/occi/core#/"/> + <use href="http://schemas.ogf.org/occi/infrastructure#/"/> + <use href="http://schemas.modmacao.org/occi/platform#/"/> + <use href="http://schemas.ogf.org/occi/infrastructure/compute/template/1.1#/"/> + <use href="http://schemas.modmacao.org/placement#/"/> + <use href="http://schemas.modmacao.org/openstack/runtime#/"/> + <use href="http://schemas.modmacao.org/modmacao#/"/> + <use href="http://schemas.modmacao.org/openstack/swe#/"/> + <use href="http://schemas.ugoe.cs.rwm/monitoring#/"/> + <resources xsi:type="infrastructure:Compute" id="urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce" title="hadoop-master" location="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce/" rlinks="//@resources.2/@links.0 //@resources.1/@links.0" occiComputeCores="2" occiComputeHostname="vm2" occiComputeMemory="4096.0" occiComputeState="active"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='compute']"/> + <attributes name="occi.core.id" value="urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce"/> + <attributes name="occi.core.title" value="hadoop-master"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.compute.architecture" value="x86"/> + <attributes name="occi.compute.cores" value="2"/> + <attributes name="occi.compute.hostname" value="hadoop-master"/> + <attributes name="occi.compute.share" value="0"/> + <attributes name="occi.compute.speed" value="0"/> + <attributes name="occi.compute.memory" value="4096"/> + <attributes name="occi.compute.state" value="active"/> + <attributes name="occi.compute.state.message" value=""/> + <parts xsi:type="infrastructure:Ssh_key" occiCredentialsSshPublickey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ssh_key']"/> + <attributes name="occi.credentials.ssh.publickey" value="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"/> + </parts> + <parts xsi:type="infrastructure:User_data" occiComputeUserdata="I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='user_data']"/> + <attributes name="occi.compute.userdata" value="I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"/> + </parts> + <parts> + <mixin href="http://schemas.modmacao.org/openstack/swe#//@mixins[term='ubuntu_xenialxerus']"/> + </parts> + <links xsi:type="infrastructure:Networkinterface" id="urn:uuid:ea482951-5c26-471d-aa1b-8e03b1e6096c" title="link3" location="/networkinterface/urn:uuid:ea482951-5c26-471d-aa1b-8e03b1e6096c" target="//@resources.6"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='networkinterface']"/> + <attributes name="occi.core.id" value="urn:uuid:ea482951-5c26-471d-aa1b-8e03b1e6096c"/> + <attributes name="occi.core.title" value="link3"/> + <attributes name="occi.networkinterface.address" value="10.254.1.5"/> + <parts xsi:type="infrastructure:Ipnetworkinterface" occiNetworkinterfaceAddress="10.254.1.5" occiNetworkinterfaceGateway="10.254.1.254"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetworkinterface']"/> + </parts> + </links> + </resources> + <resources xsi:type="platform:Component" id="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255896" title="Wordcount" location="/component/urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255896/" occiComponentStateMessage=""> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> + <attributes name="occi.core.id" value="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255896"/> + <attributes name="occi.core.title" value="Wordcount"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.component.state" value="undeployed"/> + <attributes name="occi.component.state.message" value=""/> + <parts mixin="//@mixins.0"/> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b929" title="link1" location="/placementlink/urn:uuid:ff292f08-d263-41b6-88c8-84d33783b929/" target="//@resources.0"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b929"/> + <attributes name="occi.core.title" value="link1"/> + </links> + </resources> + <resources xsi:type="platform:Component" id="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255897" title="hMaster" location="/component/urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255897/" rlinks="//@resources.3/@links.0" occiComponentStateMessage=""> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> + <attributes name="occi.core.id" value="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255897"/> + <attributes name="occi.core.title" value="hMaster"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.component.state" value="undeployed"/> + <attributes name="occi.component.state.message" value=""/> + <parts mixin="//@mixins.1"/> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b928" title="link1" location="/placementlink/urn:uuid:ff292f08-d263-41b6-88c8-84d33783b928/" target="//@resources.0"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b928"/> + <attributes name="occi.core.title" value="link1"/> + <attributes name="occi.core.source" value="/component/urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255897/"/> + <attributes name="occi.core.target" value="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce/"/> + </links> + </resources> + <resources xsi:type="platform:Application" id="urn:uuid:a4888ba9-a0ea-48f2-a29e-901c876ab42d" title="hadoopcluster" location="/application/urn:uuid:a4888ba9-a0ea-48f2-a29e-901c876ab42d" occiAppName="" occiAppState="deployed"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='application']"/> + <attributes name="occi.core.id" value="urn:uuid:a4888ba9-a0ea-48f2-a29e-901c876ab42d"/> + <attributes name="occi.core.title" value="hadoopcluster"/> + <links xsi:type="platform:Componentlink" id="urn:uuid:9aa31c50-c605-4370-aa60-2c7c461051ef" title="ComponentLink" location="/componentlink/urn:uuid:9aa31c50-c605-4370-aa60-2c7c461051ef" target="//@resources.2"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:9aa31c50-c605-4370-aa60-2c7c461051ef"/> + <attributes name="occi.core.title" value="ComponentLink"/> + </links> + <links xsi:type="platform:Componentlink" id="urn:uuid:7890f02b-6f56-4809-865f-d8c686fd9da1" title="link4" location="/componentlink/urn:uuid:7890f02b-6f56-4809-865f-d8c686fd9da1" target="//@resources.5"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:7890f02b-6f56-4809-865f-d8c686fd9da1"/> + <attributes name="occi.core.title" value="link4"/> + </links> + </resources> + <resources xsi:type="infrastructure:Compute" id="urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf" title="hadoop-worker-1" location="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf/" rlinks="//@resources.5/@links.0 //@resources.8/@links.0" occiComputeCores="2" occiComputeHostname="vm2" occiComputeMemory="4096.0" occiComputeState="active"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='compute']"/> + <attributes name="occi.core.id" value="urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf"/> + <attributes name="occi.core.title" value="hadoop-worker-1"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.compute.architecture" value="x86"/> + <attributes name="occi.compute.cores" value="2"/> + <attributes name="occi.compute.hostname" value="hadoop-worker-1"/> + <attributes name="occi.compute.share" value="0"/> + <attributes name="occi.compute.speed" value="0"/> + <attributes name="occi.compute.memory" value="4096"/> + <attributes name="occi.compute.state" value="active"/> + <attributes name="occi.compute.state.message" value=""/> + <parts xsi:type="infrastructure:Ssh_key" occiCredentialsSshPublickey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ssh_key']"/> + <attributes name="occi.credentials.ssh.publickey" value="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"/> + </parts> + <parts xsi:type="infrastructure:User_data" occiComputeUserdata="I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='user_data']"/> + <attributes name="occi.compute.userdata" value="I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"/> + </parts> + <parts> + <mixin href="http://schemas.modmacao.org/openstack/swe#//@mixins[term='ubuntu_xenialxerus']"/> + </parts> + <links xsi:type="infrastructure:Networkinterface" id="urn:uuid:c8c49905-3d5e-43b2-8d09-fabf92d29722" title="link2" location="/networkinterface/urn:uuid:c8c49905-3d5e-43b2-8d09-fabf92d29722" target="//@resources.6"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='networkinterface']"/> + <attributes name="occi.core.id" value="urn:uuid:c8c49905-3d5e-43b2-8d09-fabf92d29722"/> + <attributes name="occi.core.title" value="link2"/> + <attributes name="occi.networkinterface.address" value="10.254.1.8"/> + <parts xsi:type="infrastructure:Ipnetworkinterface" occiNetworkinterfaceAddress="10.254.1.8" occiNetworkinterfaceGateway="10.254.1.254"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetworkinterface']"/> + </parts> + </links> + <links xsi:type="infrastructure:Networkinterface" id="urn:uuid:03f91178-136f-4023-876e-84509f8a5a2d" title="monNwLink" target="//@resources.12" occiNetworkinterfaceInterface="100.254.1.35" occiNetworkinterfaceMac=""> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='networkinterface']"/> + <attributes name="occi.core.id" value="urn:uuid:03f91178-136f-4023-876e-84509f8a5a2d"/> + <attributes name="occi.core.title" value="monNwLink"/> + <attributes name="occi.networkinterface.address" value="100.254.1.35"/> + <parts xsi:type="infrastructure:Ipnetworkinterface" occiNetworkinterfaceAddress="100.254.1.35" occiNetworkinterfaceGateway=""> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetworkinterface']"/> + </parts> + </links> + </resources> + <resources xsi:type="platform:Component" id="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255898" title="Worker" location="/component/urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255898/" rlinks="//@resources.3/@links.1" occiComponentStateMessage=""> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> + <attributes name="occi.core.id" value="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255898"/> + <attributes name="occi.core.title" value="Worker"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.component.state" value="undeployed"/> + <attributes name="occi.component.state.message" value=""/> + <parts mixin="//@mixins.2"/> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b917" title="link1" location="/placementlink/urn:uuid:ff292f08-d263-41b6-88c8-84d33783b917/" target="//@resources.4"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b917"/> + <attributes name="occi.core.title" value="link1"/> + <attributes name="occi.core.target" value="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce/"/> + </links> + </resources> + <resources xsi:type="infrastructure:Network" id="urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339591" title="hNetwork" location="/network/urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339591/" rlinks="//@resources.0/@links.0 //@resources.4/@links.0" occiNetworkState="active"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='network']"/> + <attributes name="occi.core.id" value="urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339591"/> + <attributes name="occi.core.title" value="hNetwork"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.network.vlan" value="0"/> + <attributes name="occi.network.label" value=""/> + <attributes name="occi.network.state" value="active"/> + <attributes name="occi.network.state.message" value=""/> + <parts> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetwork']"/> + <attributes name="occi.network.address" value="10.254.1.1/24"/> + </parts> + </resources> + <resources xsi:type="monitoring:Sensor" id="urn:uuid:efb0f50a-7a7c-4153-b939-4846d6554dbb" title="Sensor"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='sensor']"/> + <attributes name="occi.core.id" value="urn:uuid:efb0f50a-7a7c-4153-b939-4846d6554dbb"/> + <attributes name="occi.core.title" value="Sensor"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.sensor.timebase" value=""/> + <attributes name="occi.sensor.timestart" value=""/> + <attributes name="occi.sensor.timestop" value=""/> + <attributes name="occi.sensor.period" value=""/> + <attributes name="occi.sensor.granularity" value=""/> + <attributes name="occi.sensor.accuracy" value=""/> + <attributes name="occi.app.state" value="undeployed"/> + <attributes name="occi.app.state.message" value=""/> + <links xsi:type="platform:Componentlink" id="urn:uuid:04cf6483-706d-4a2a-9114-9918ab2bb52a" title="link1" target="//@resources.8"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:04cf6483-706d-4a2a-9114-9918ab2bb52a"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="platform:Componentlink" id="urn:uuid:9c604867-3135-4fa1-af9e-2bb11018ff5a" title="link2" target="//@resources.9"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:9c604867-3135-4fa1-af9e-2bb11018ff5a"/> + <attributes name="occi.core.title" value="link2"/> + </links> + <links xsi:type="platform:Componentlink" id="urn:uuid:93f08e31-f350-42b7-a73b-c139eba4a8e3" title="link3" target="//@resources.10"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:93f08e31-f350-42b7-a73b-c139eba4a8e3"/> + <attributes name="occi.core.title" value="link3"/> + </links> + </resources> + <resources xsi:type="monitoring:Datagatherer" id="urn:uuid:051affdc-d686-48f8-884c-83fe81718a48" title="DataGatherer" rlinks="//@resources.7/@links.0 //@resources.9/@links.0"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='datagatherer']"/> + <attributes name="occi.core.id" value="urn:uuid:051affdc-d686-48f8-884c-83fe81718a48"/> + <attributes name="occi.core.title" value="DataGatherer"/> + <parts mixin="//@mixins.3"/> + <links xsi:type="placement:Placementlink" id="urn:uuid:60cc05ca-4fd7-465b-8fd0-945dcbf8867f" title="link1" target="//@resources.4"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:60cc05ca-4fd7-465b-8fd0-945dcbf8867f"/> + <attributes name="occi.core.title" value="link1"/> + </links> + </resources> + <resources xsi:type="monitoring:Processor" id="urn:uuid:1bda25ab-723b-47e7-9704-5134db26ebdc" title="Processor" rlinks="//@resources.10/@links.0 //@resources.7/@links.1" gathererAddress="100.254.1.35"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='processor']"/> + <attributes name="occi.core.id" value="urn:uuid:1bda25ab-723b-47e7-9704-5134db26ebdc"/> + <attributes name="occi.core.title" value="Processor"/> + <attributes name="gatherer.address" value="100.254.1.35"/> + <parts mixin="//@mixins.4"/> + <links xsi:type="platform:Componentlink" id="urn:uuid:1a821776-7886-4cb4-8b80-46a8403acf40" title="link1" target="//@resources.8"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:1a821776-7886-4cb4-8b80-46a8403acf40"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff7019e4-a9dc-48dc-83c3-ab77714a25f4" title="link2" target="//@resources.11"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff7019e4-a9dc-48dc-83c3-ab77714a25f4"/> + <attributes name="occi.core.title" value="link2"/> + </links> + </resources> + <resources xsi:type="monitoring:Publisher" id="urn:uuid:588f705e-5279-4847-9337-846af2c86972" title="Publisher" rlinks="//@resources.7/@links.2" publisherEndpoint="192.168.35.45:8080"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='publisher']"/> + <attributes name="occi.core.id" value="urn:uuid:588f705e-5279-4847-9337-846af2c86972"/> + <attributes name="occi.core.title" value="Publisher"/> + <attributes name="publisher.endpoint" value="192.168.35.45:8080"/> + <parts mixin="//@mixins.5"/> + <parts xsi:type="monitoring:Martpublisher" monitoringPropertyName="CPU" monitoringPropertyId="" monitoringPropertyResource="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf/"> + <mixin href="http://schemas.ugoe.cs.rwm/monitoring#//@mixins[term='martpublisher']"/> + <attributes name="monitoring.property.name" value="CPU"/> + <attributes name="monitoring.property.resource" value="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf/"/> + <attributes name="monitoring.property.id" value="/monitoringproperty/fb3604c9-1fd4-4fa8-bee6-eafceddd0487"/> + </parts> + <links xsi:type="platform:Componentlink" id="urn:uuid:9551c357-59f8-4ac1-8c85-0e886e206b80" title="link1" target="//@resources.9"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:9551c357-59f8-4ac1-8c85-0e886e206b80"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="placement:Placementlink" id="urn:uuid:275b5bce-084c-46f0-88bc-1f6f31bf3616" title="link2" target="//@resources.11"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:275b5bce-084c-46f0-88bc-1f6f31bf3616"/> + <attributes name="occi.core.title" value="link2"/> + </links> + </resources> + <resources xsi:type="infrastructure:Compute" id="urn:uuid:37829092-c690-494a-98fa-335b2fd660ea" title="MonVm" rlinks="//@resources.9/@links.1 //@resources.10/@links.1" occiComputeHostname="monVM" occiComputeState="inactive"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='compute']"/> + <attributes name="occi.core.id" value="urn:uuid:37829092-c690-494a-98fa-335b2fd660ea"/> + <attributes name="occi.core.title" value="MonVm"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.compute.architecture" value="x86"/> + <attributes name="occi.compute.cores" value="2"/> + <attributes name="occi.compute.hostname" value="monVM"/> + <attributes name="occi.compute.share" value="0"/> + <attributes name="occi.compute.speed" value="0"/> + <attributes name="occi.compute.memory" value="4096"/> + <attributes name="occi.compute.state" value="active"/> + <attributes name="occi.compute.state.message" value=""/> + <parts> + <mixin href="http://schemas.modmacao.org/openstack/swe#//@mixins[term='ubuntu_xenialxerus']"/> + </parts> + <links xsi:type="infrastructure:Networkinterface" id="urn:uuid:00d6889d-b644-44bf-af13-3fe350e926ed" title="link1" target="//@resources.12"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='networkinterface']"/> + <attributes name="occi.core.id" value="urn:uuid:00d6889d-b644-44bf-af13-3fe350e926ed"/> + <attributes name="occi.core.title" value="link1"/> + <parts xsi:type="infrastructure:Ipnetworkinterface" occiNetworkinterfaceAddress="100.254.1.25"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetworkinterface']"/> + </parts> + </links> + </resources> + <resources xsi:type="infrastructure:Network" id="urn:uuid:7a9fca2c-24fb-473c-aa9c-8dc9e68a432a" title="MonitoringNetwork" rlinks="//@resources.11/@links.0 //@resources.4/@links.1" occiNetworkState="inactive"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='network']"/> + <attributes name="occi.core.id" value="urn:uuid:7a9fca2c-24fb-473c-aa9c-8dc9e68a432a"/> + <attributes name="occi.core.title" value="MonitoringNetwork"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.network.vlan" value="0"/> + <attributes name="occi.network.label" value=""/> + <attributes name="occi.network.state" value="active"/> + <attributes name="occi.network.state.message" value=""/> + <parts> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetwork']"/> + <attributes name="occi.network.address" value="100.254.1.1/24"/> + </parts> + </resources> + <mixins name="hJob" scheme="http://schemas.modmacao.org/usermixins#" title="Hjob"/> + <mixins name="hMaster" scheme="http://schemas.modmacao.org/usermixins#" title="HMaster"/> + <mixins name="hWorker" scheme="http://schemas.modmacao.org/usermixins#" title="HWorker"/> + <mixins name="CPUGatherer" scheme="http://schemas.modmacao.org/usermixins#" title="CPUGatherer"/> + <mixins name="CPUProcessor" scheme="http://schemas.modmacao.org/usermixins#" title="CPUProcessor"/> + <mixins name="CPUPublisher" scheme="http://schemas.modmacao.org/usermixins#" title="CPUPublisher"/> +</occi:Configuration> diff --git a/src/test/resources/occi/hadoopClusterNewExtWithMem.occic b/src/test/resources/occi/hadoopClusterNewExtWithMem.occic new file mode 100644 index 0000000..b4b8ecd --- /dev/null +++ b/src/test/resources/occi/hadoopClusterNewExtWithMem.occic @@ -0,0 +1,353 @@ +<?xml version="1.0" encoding="ASCII"?> +<occi:Configuration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:infrastructure="http://schemas.ogf.org/occi/infrastructure/ecore" xmlns:monitoring="http://schemas.ugoe.cs.rwm/monitoring/ecore" xmlns:occi="http://schemas.ogf.org/occi/core/ecore" xmlns:placement="http://schemas.modmacao.org/placement/ecore" xmlns:platform="http://schemas.modmacao.org/occi/platform/ecore"> + <use href="http://schemas.ogf.org/occi/core#/"/> + <use href="http://schemas.ogf.org/occi/infrastructure#/"/> + <use href="http://schemas.modmacao.org/occi/platform#/"/> + <use href="http://schemas.ogf.org/occi/infrastructure/compute/template/1.1#/"/> + <use href="http://schemas.modmacao.org/placement#/"/> + <use href="http://schemas.modmacao.org/openstack/runtime#/"/> + <use href="http://schemas.modmacao.org/modmacao#/"/> + <use href="http://schemas.modmacao.org/openstack/swe#/"/> + <use href="http://schemas.ugoe.cs.rwm/monitoring#/"/> + <resources xsi:type="infrastructure:Compute" id="urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce" title="hadoop-master" location="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce/" rlinks="//@resources.2/@links.0 //@resources.1/@links.0" occiComputeCores="2" occiComputeHostname="vm2" occiComputeMemory="4096.0" occiComputeState="active"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='compute']"/> + <attributes name="occi.core.id" value="urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce"/> + <attributes name="occi.core.title" value="hadoop-master"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.compute.architecture" value="x86"/> + <attributes name="occi.compute.cores" value="2"/> + <attributes name="occi.compute.hostname" value="hadoop-master"/> + <attributes name="occi.compute.share" value="0"/> + <attributes name="occi.compute.speed" value="0"/> + <attributes name="occi.compute.memory" value="4096"/> + <attributes name="occi.compute.state" value="active"/> + <attributes name="occi.compute.state.message" value=""/> + <parts xsi:type="infrastructure:Ssh_key" occiCredentialsSshPublickey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ssh_key']"/> + <attributes name="occi.credentials.ssh.publickey" value="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"/> + </parts> + <parts xsi:type="infrastructure:User_data" occiComputeUserdata="I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='user_data']"/> + <attributes name="occi.compute.userdata" value="I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"/> + </parts> + <parts> + <mixin href="http://schemas.modmacao.org/openstack/swe#//@mixins[term='ubuntu_xenialxerus']"/> + </parts> + <links xsi:type="infrastructure:Networkinterface" id="urn:uuid:ea482951-5c26-471d-aa1b-8e03b1e6096c" title="link3" location="/networkinterface/urn:uuid:ea482951-5c26-471d-aa1b-8e03b1e6096c" target="//@resources.6"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='networkinterface']"/> + <attributes name="occi.core.id" value="urn:uuid:ea482951-5c26-471d-aa1b-8e03b1e6096c"/> + <attributes name="occi.core.title" value="link3"/> + <attributes name="occi.networkinterface.address" value="10.254.1.5"/> + <parts xsi:type="infrastructure:Ipnetworkinterface" occiNetworkinterfaceAddress="10.254.1.5" occiNetworkinterfaceGateway="10.254.1.254"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetworkinterface']"/> + </parts> + </links> + </resources> + <resources xsi:type="platform:Component" id="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255896" title="Wordcount" location="/component/urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255896/" occiComponentStateMessage=""> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> + <attributes name="occi.core.id" value="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255896"/> + <attributes name="occi.core.title" value="Wordcount"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.component.state" value="undeployed"/> + <attributes name="occi.component.state.message" value=""/> + <parts mixin="//@mixins.0"/> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b929" title="link1" location="/placementlink/urn:uuid:ff292f08-d263-41b6-88c8-84d33783b929/" target="//@resources.0"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b929"/> + <attributes name="occi.core.title" value="link1"/> + </links> + </resources> + <resources xsi:type="platform:Component" id="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255897" title="hMaster" location="/component/urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255897/" rlinks="//@resources.3/@links.0" occiComponentStateMessage=""> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> + <attributes name="occi.core.id" value="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255897"/> + <attributes name="occi.core.title" value="hMaster"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.component.state" value="undeployed"/> + <attributes name="occi.component.state.message" value=""/> + <parts mixin="//@mixins.1"/> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b928" title="link1" location="/placementlink/urn:uuid:ff292f08-d263-41b6-88c8-84d33783b928/" target="//@resources.0"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b928"/> + <attributes name="occi.core.title" value="link1"/> + <attributes name="occi.core.source" value="/component/urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255897/"/> + <attributes name="occi.core.target" value="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce/"/> + </links> + </resources> + <resources xsi:type="platform:Application" id="urn:uuid:a4888ba9-a0ea-48f2-a29e-901c876ab42d" title="hadoopcluster" location="/application/urn:uuid:a4888ba9-a0ea-48f2-a29e-901c876ab42d" occiAppName="" occiAppState="deployed"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='application']"/> + <attributes name="occi.core.id" value="urn:uuid:a4888ba9-a0ea-48f2-a29e-901c876ab42d"/> + <attributes name="occi.core.title" value="hadoopcluster"/> + <links xsi:type="platform:Componentlink" id="urn:uuid:9aa31c50-c605-4370-aa60-2c7c461051ef" title="ComponentLink" location="/componentlink/urn:uuid:9aa31c50-c605-4370-aa60-2c7c461051ef" target="//@resources.2"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:9aa31c50-c605-4370-aa60-2c7c461051ef"/> + <attributes name="occi.core.title" value="ComponentLink"/> + </links> + <links xsi:type="platform:Componentlink" id="urn:uuid:7890f02b-6f56-4809-865f-d8c686fd9da1" title="link4" location="/componentlink/urn:uuid:7890f02b-6f56-4809-865f-d8c686fd9da1" target="//@resources.5"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:7890f02b-6f56-4809-865f-d8c686fd9da1"/> + <attributes name="occi.core.title" value="link4"/> + </links> + </resources> + <resources xsi:type="infrastructure:Compute" id="urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf" title="hadoop-worker-1" location="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf/" rlinks="//@resources.5/@links.0 //@resources.8/@links.0" occiComputeCores="2" occiComputeHostname="vm2" occiComputeMemory="4096.0" occiComputeState="active"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='compute']"/> + <attributes name="occi.core.id" value="urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf"/> + <attributes name="occi.core.title" value="hadoop-worker-1"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.compute.architecture" value="x86"/> + <attributes name="occi.compute.cores" value="2"/> + <attributes name="occi.compute.hostname" value="hadoop-worker-1"/> + <attributes name="occi.compute.share" value="0"/> + <attributes name="occi.compute.speed" value="0"/> + <attributes name="occi.compute.memory" value="4096"/> + <attributes name="occi.compute.state" value="active"/> + <attributes name="occi.compute.state.message" value=""/> + <parts xsi:type="infrastructure:Ssh_key" occiCredentialsSshPublickey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ssh_key']"/> + <attributes name="occi.credentials.ssh.publickey" value="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6H7Ydi45BTHid4qNppGAi5mzjbnZgt7bi6xLGmZG9CiLmhMsxOuk3Z05Nn+pmoN98qS0eY8S240PPk5VOlYqBY0vdRAwrZSHHaLdMp6I7ARNrI2KraYduweqz7ZQxPXQfwIeYx2HKQxEF2r+4//Fo4WfgdBkLuulvl/Gw3TUzJNQHvgpaiNo9+PI5CZydHnZbjUkRikS12pT+CbNKj+0QKeQztbCd41aKxDv5H0DjltVRcpPppv4dmiU/zoCAIngWLO1PPgfYWyze8Z9IoyBT7Qdg30U91TYZBuxzXR5lq7Fh64y/IZ/SjdOdSIvIuDjtmJDULRdLJzrvubrKY+YH Generated-by-Nova"/> + </parts> + <parts xsi:type="infrastructure:User_data" occiComputeUserdata="I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='user_data']"/> + <attributes name="occi.compute.userdata" value="I2Nsb3VkLWNvbmZpZwoKIyBVcGdyYWRlIHRoZSBpbnN0YW5jZSBvbiBmaXJzdCBib290CiMgKGllIHJ1biBhcHQtZ2V0IHVwZ3JhZGUpCiMKIyBEZWZhdWx0OiBmYWxzZQojIEFsaWFzZXM6IGFwdF91cGdyYWRlCnBhY2thZ2VfdXBncmFkZTogdHJ1ZQoKcGFja2FnZXM6CiAtIHB5dGhvbgoKd3JpdGVfZmlsZXM6CiAgLSBwYXRoOiAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy5kLzUwLWNsb3VkLWluaXQuY2ZnCiAgICBjb250ZW50OiB8CiAgICAgIGF1dG8gbG8KICAgICAgaWZhY2UgbG8gaW5ldCBsb29wYmFjawogICAgICAKICAgICAgYXV0byBlbnMwCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMAogICAgICBpZmFjZSBlbnMwIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMQogICAgICBpZmFjZSBlbnMxIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMyCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMgogICAgICBpZmFjZSBlbnMyIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMzCiAgICAgIGFsbG93LWhvdHBsdWcgZW5zMwogICAgICBpZmFjZSBlbnMzIGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM0CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNAogICAgICBpZmFjZSBlbnM0IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM1CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNQogICAgICBpZmFjZSBlbnM1IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM2CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNgogICAgICBpZmFjZSBlbnM2IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM3CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zNwogICAgICBpZmFjZSBlbnM3IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM4CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOAogICAgICBpZmFjZSBlbnM4IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnM5CiAgICAgIGFsbG93LWhvdHBsdWcgZW5zOQogICAgICBpZmFjZSBlbnM5IGluZXQgZGhjcAogICAgICAKICAgICAgYXV0byBlbnMxMAogICAgICBhbGxvdy1ob3RwbHVnIGVuczEwCiAgICAgIGlmYWNlIGVuczEwIGluZXQgZGhjcAoKIyMj"/> + </parts> + <parts> + <mixin href="http://schemas.modmacao.org/openstack/swe#//@mixins[term='ubuntu_xenialxerus']"/> + </parts> + <links xsi:type="infrastructure:Networkinterface" id="urn:uuid:c8c49905-3d5e-43b2-8d09-fabf92d29722" title="link2" location="/networkinterface/urn:uuid:c8c49905-3d5e-43b2-8d09-fabf92d29722" target="//@resources.6"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='networkinterface']"/> + <attributes name="occi.core.id" value="urn:uuid:c8c49905-3d5e-43b2-8d09-fabf92d29722"/> + <attributes name="occi.core.title" value="link2"/> + <attributes name="occi.networkinterface.address" value="10.254.1.8"/> + <parts xsi:type="infrastructure:Ipnetworkinterface" occiNetworkinterfaceAddress="10.254.1.8" occiNetworkinterfaceGateway="10.254.1.254"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetworkinterface']"/> + </parts> + </links> + <links xsi:type="infrastructure:Networkinterface" id="urn:uuid:03f91178-136f-4023-876e-84509f8a5a2d" title="monNwLink" target="//@resources.12" occiNetworkinterfaceInterface="100.254.1.35" occiNetworkinterfaceMac=""> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='networkinterface']"/> + <attributes name="occi.core.id" value="urn:uuid:03f91178-136f-4023-876e-84509f8a5a2d"/> + <attributes name="occi.core.title" value="monNwLink"/> + <attributes name="occi.networkinterface.address" value="100.254.1.35"/> + <parts xsi:type="infrastructure:Ipnetworkinterface" occiNetworkinterfaceAddress="100.254.1.35" occiNetworkinterfaceGateway=""> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetworkinterface']"/> + </parts> + </links> + </resources> + <resources xsi:type="platform:Component" id="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255898" title="Worker" location="/component/urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255898/" rlinks="//@resources.3/@links.1" occiComponentStateMessage=""> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='component']"/> + <attributes name="occi.core.id" value="urn:uuid:f934d445-d0c8-4f2f-8086-d9f1a8255898"/> + <attributes name="occi.core.title" value="Worker"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.component.state" value="undeployed"/> + <attributes name="occi.component.state.message" value=""/> + <parts mixin="//@mixins.2"/> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b917" title="link1" location="/placementlink/urn:uuid:ff292f08-d263-41b6-88c8-84d33783b917/" target="//@resources.4"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff292f08-d263-41b6-88c8-84d33783b917"/> + <attributes name="occi.core.title" value="link1"/> + <attributes name="occi.core.target" value="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166ce/"/> + </links> + </resources> + <resources xsi:type="infrastructure:Network" id="urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339591" title="hNetwork" location="/network/urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339591/" rlinks="//@resources.0/@links.0 //@resources.4/@links.0" occiNetworkState="active"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='network']"/> + <attributes name="occi.core.id" value="urn:uuid:29d78078-fb4c-47aa-a9af-b8aaf3339591"/> + <attributes name="occi.core.title" value="hNetwork"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.network.vlan" value="0"/> + <attributes name="occi.network.label" value=""/> + <attributes name="occi.network.state" value="active"/> + <attributes name="occi.network.state.message" value=""/> + <parts> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetwork']"/> + <attributes name="occi.network.address" value="10.254.1.1/24"/> + </parts> + </resources> + <resources xsi:type="monitoring:Sensor" id="urn:uuid:efb0f50a-7a7c-4153-b939-4846d6554dbb" title="Sensor"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='sensor']"/> + <attributes name="occi.core.id" value="urn:uuid:efb0f50a-7a7c-4153-b939-4846d6554dbb"/> + <attributes name="occi.core.title" value="Sensor"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.sensor.timebase" value=""/> + <attributes name="occi.sensor.timestart" value=""/> + <attributes name="occi.sensor.timestop" value=""/> + <attributes name="occi.sensor.period" value=""/> + <attributes name="occi.sensor.granularity" value=""/> + <attributes name="occi.sensor.accuracy" value=""/> + <attributes name="occi.app.state" value="undeployed"/> + <attributes name="occi.app.state.message" value=""/> + <links xsi:type="platform:Componentlink" id="urn:uuid:04cf6483-706d-4a2a-9114-9918ab2bb52a" title="link1" target="//@resources.8"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:04cf6483-706d-4a2a-9114-9918ab2bb52a"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="platform:Componentlink" id="urn:uuid:9c604867-3135-4fa1-af9e-2bb11018ff5a" title="link2" target="//@resources.9"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:9c604867-3135-4fa1-af9e-2bb11018ff5a"/> + <attributes name="occi.core.title" value="link2"/> + </links> + <links xsi:type="platform:Componentlink" id="urn:uuid:93f08e31-f350-42b7-a73b-c139eba4a8e3" title="link3" target="//@resources.10"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:93f08e31-f350-42b7-a73b-c139eba4a8e3"/> + <attributes name="occi.core.title" value="link3"/> + </links> + </resources> + <resources xsi:type="monitoring:Datagatherer" id="urn:uuid:051affdc-d686-48f8-884c-83fe81718a48" title="DataGatherer" rlinks="//@resources.7/@links.0 //@resources.9/@links.0 //@resources.13/@links.0 //@resources.15/@links.0"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='datagatherer']"/> + <attributes name="occi.core.id" value="urn:uuid:051affdc-d686-48f8-884c-83fe81718a48"/> + <attributes name="occi.core.title" value="DataGatherer"/> + <parts mixin="//@mixins.3"/> + <links xsi:type="placement:Placementlink" id="urn:uuid:60cc05ca-4fd7-465b-8fd0-945dcbf8867f" title="link1" target="//@resources.4"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:60cc05ca-4fd7-465b-8fd0-945dcbf8867f"/> + <attributes name="occi.core.title" value="link1"/> + </links> + </resources> + <resources xsi:type="monitoring:Processor" id="urn:uuid:1bda25ab-723b-47e7-9704-5134db26ebdc" title="Processor" rlinks="//@resources.10/@links.0 //@resources.7/@links.1" gathererAddress="100.254.1.35"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='processor']"/> + <attributes name="occi.core.id" value="urn:uuid:1bda25ab-723b-47e7-9704-5134db26ebdc"/> + <attributes name="occi.core.title" value="Processor"/> + <attributes name="gatherer.address" value="100.254.1.35"/> + <parts mixin="//@mixins.4"/> + <links xsi:type="platform:Componentlink" id="urn:uuid:1a821776-7886-4cb4-8b80-46a8403acf40" title="link1" target="//@resources.8"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:1a821776-7886-4cb4-8b80-46a8403acf40"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff7019e4-a9dc-48dc-83c3-ab77714a25f4" title="link2" target="//@resources.11"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff7019e4-a9dc-48dc-83c3-ab77714a25f4"/> + <attributes name="occi.core.title" value="link2"/> + </links> + </resources> + <resources xsi:type="monitoring:Publisher" id="urn:uuid:588f705e-5279-4847-9337-846af2c86972" title="Publisher" rlinks="//@resources.7/@links.2" publisherEndpoint="192.168.35.45:8080"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='publisher']"/> + <attributes name="occi.core.id" value="urn:uuid:588f705e-5279-4847-9337-846af2c86972"/> + <attributes name="occi.core.title" value="Publisher"/> + <attributes name="publisher.endpoint" value="192.168.35.45:8080"/> + <parts mixin="//@mixins.5"/> + <parts xsi:type="monitoring:Martpublisher" monitoringPropertyName="CPU" monitoringPropertyId="" monitoringPropertyResource="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf/"> + <mixin href="http://schemas.ugoe.cs.rwm/monitoring#//@mixins[term='martpublisher']"/> + <attributes name="monitoring.property.name" value="CPU"/> + <attributes name="monitoring.property.resource" value="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf/"/> + <attributes name="monitoring.property.id" value="/monitoringproperty/fb3604c9-1fd4-4fa8-bee6-eafceddd0487"/> + </parts> + <links xsi:type="platform:Componentlink" id="urn:uuid:9551c357-59f8-4ac1-8c85-0e886e206b80" title="link1" target="//@resources.9"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:9551c357-59f8-4ac1-8c85-0e886e206b80"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="placement:Placementlink" id="urn:uuid:275b5bce-084c-46f0-88bc-1f6f31bf3616" title="link2" target="//@resources.11"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:275b5bce-084c-46f0-88bc-1f6f31bf3616"/> + <attributes name="occi.core.title" value="link2"/> + </links> + </resources> + <resources xsi:type="infrastructure:Compute" id="urn:uuid:37829092-c690-494a-98fa-335b2fd660ea" title="MonVm" rlinks="//@resources.9/@links.1 //@resources.10/@links.1 //@resources.13/@links.1 //@resources.14/@links.1" occiComputeHostname="monVM" occiComputeState="inactive"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='compute']"/> + <attributes name="occi.core.id" value="urn:uuid:37829092-c690-494a-98fa-335b2fd660ea"/> + <attributes name="occi.core.title" value="MonVm"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.compute.architecture" value="x86"/> + <attributes name="occi.compute.cores" value="2"/> + <attributes name="occi.compute.hostname" value="monVM"/> + <attributes name="occi.compute.share" value="0"/> + <attributes name="occi.compute.speed" value="0"/> + <attributes name="occi.compute.memory" value="4096"/> + <attributes name="occi.compute.state" value="active"/> + <attributes name="occi.compute.state.message" value=""/> + <parts> + <mixin href="http://schemas.modmacao.org/openstack/swe#//@mixins[term='ubuntu_xenialxerus']"/> + </parts> + <links xsi:type="infrastructure:Networkinterface" id="urn:uuid:00d6889d-b644-44bf-af13-3fe350e926ed" title="link1" target="//@resources.12"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='networkinterface']"/> + <attributes name="occi.core.id" value="urn:uuid:00d6889d-b644-44bf-af13-3fe350e926ed"/> + <attributes name="occi.core.title" value="link1"/> + <parts xsi:type="infrastructure:Ipnetworkinterface" occiNetworkinterfaceAddress="100.254.1.25"> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetworkinterface']"/> + </parts> + </links> + </resources> + <resources xsi:type="infrastructure:Network" id="urn:uuid:7a9fca2c-24fb-473c-aa9c-8dc9e68a432a" title="MonitoringNetwork" rlinks="//@resources.11/@links.0 //@resources.4/@links.1" occiNetworkState="inactive"> + <kind href="http://schemas.ogf.org/occi/infrastructure#//@kinds[term='network']"/> + <attributes name="occi.core.id" value="urn:uuid:7a9fca2c-24fb-473c-aa9c-8dc9e68a432a"/> + <attributes name="occi.core.title" value="MonitoringNetwork"/> + <attributes name="occi.core.summary" value=""/> + <attributes name="occi.network.vlan" value="0"/> + <attributes name="occi.network.label" value=""/> + <attributes name="occi.network.state" value="active"/> + <attributes name="occi.network.state.message" value=""/> + <parts> + <mixin href="http://schemas.ogf.org/occi/infrastructure#//@mixins[term='ipnetwork']"/> + <attributes name="occi.network.address" value="100.254.1.1/24"/> + </parts> + </resources> + <resources xsi:type="monitoring:Processor" id="urn:uuid:1bda25ab-723b-47e7-9704-5134db26ebdd" title="Processor" rlinks="//@resources.14/@links.0 //@resources.15/@links.2" gathererAddress="100.254.1.35"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='processor']"/> + <attributes name="occi.core.title" value="Processor"/> + <attributes name="occi.core.id" value="urn:uuid:1bda25ab-723b-47e7-9704-5134db26ebdd"/> + <attributes name="gatherer.address" value="100.254.1.35"/> + <parts mixin="//@mixins.6"/> + <links xsi:type="platform:Componentlink" id="urn:uuid:1a821776-7886-4cb4-8b80-46a8403acf41" title="link1" target="//@resources.8"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:1a821776-7886-4cb4-8b80-46a8403acf41"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="placement:Placementlink" id="urn:uuid:ff7019e4-a9dc-48dc-83c3-ab77714a25f5" title="link2" target="//@resources.11"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:ff7019e4-a9dc-48dc-83c3-ab77714a25f5"/> + <attributes name="occi.core.title" value="link2"/> + </links> + </resources> + <resources xsi:type="monitoring:Publisher" id="urn:uuid:588f705e-5279-4847-9337-846af2c86973" title="Publisher" rlinks="//@resources.15/@links.1" publisherEndpoint="192.168.35.45:8080"> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='publisher']"/> + <attributes name="occi.core.id" value="urn:uuid:588f705e-5279-4847-9337-846af2c86973"/> + <attributes name="occi.core.title" value="Publisher"/> + <attributes name="publisher.endpoint" value="192.168.35.45:8080"/> + <parts mixin="//@mixins.7"/> + <parts xsi:type="monitoring:Martpublisher" monitoringPropertyName="Mem" monitoringPropertyId="/monitoringproperty/fb3604c9-1fd4-4fa8-bee6-eafceddd0488" monitoringPropertyResource="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf/"> + <mixin href="http://schemas.ugoe.cs.rwm/monitoring#//@mixins[term='martpublisher']"/> + <attributes name="monitoring.property.name" value="Mem"/> + <attributes name="monitoring.property.resource" value="/compute/urn:uuid:2e6a73d0-faaa-476a-bd25-ca461dd166cf/"/> + <attributes name="monitoring.property.id" value="/monitoringproperty/fb3604c9-1fd4-4fa8-bee6-eafceddd0488"/> + </parts> + <links xsi:type="platform:Componentlink" id="urn:uuid:9551c357-59f8-4ac1-8c85-0e886e206b83" title="link1" target="//@resources.13"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:9551c357-59f8-4ac1-8c85-0e886e206b83"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="placement:Placementlink" id="urn:uuid:275b5bce-084c-46f0-88bc-1f6f31bf3618" title="link2" target="//@resources.11"> + <kind href="http://schemas.modmacao.org/placement#//@kinds[term='placementlink']"/> + <attributes name="occi.core.id" value="urn:uuid:275b5bce-084c-46f0-88bc-1f6f31bf3618"/> + <attributes name="occi.core.title" value="link2"/> + </links> + </resources> + <resources xsi:type="monitoring:Sensor" id="urn:uuid:efb0f50a-7a7c-4153-b939-4846d6554dbc" title="Sensor" occiAppStateMessage="" occiSensorPeriod="" occiSensorAccuracy=""> + <kind href="http://schemas.ugoe.cs.rwm/monitoring#//@kinds[term='sensor']"/> + <attributes name="occi.core.title" value="Sensor"/> + <attributes name="occi.core.id" value="urn:uuid:efb0f50a-7a7c-4153-b939-4846d6554dbc"/> + <attributes name="occi.sensor.period" value=""/> + <attributes name="occi.sensor.accuracy" value=""/> + <attributes name="occi.app.state.message" value=""/> + <links xsi:type="platform:Componentlink" id="urn:uuid:04cf6483-706d-4a2a-9114-9918ab2bb52b" title="link1" target="//@resources.8"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:04cf6483-706d-4a2a-9114-9918ab2bb52b"/> + <attributes name="occi.core.title" value="link1"/> + </links> + <links xsi:type="platform:Componentlink" id="urn:uuid:9c604867-3135-4fa1-af9e-2bb11018ff5b" title="link2" target="//@resources.14"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:9c604867-3135-4fa1-af9e-2bb11018ff5b"/> + <attributes name="occi.core.title" value="link2"/> + </links> + <links xsi:type="platform:Componentlink" id="urn:uuid:93f08e31-f350-42b7-a73b-c139eba4a8e4" title="link3" target="//@resources.13"> + <kind href="http://schemas.modmacao.org/occi/platform#//@kinds[term='componentlink']"/> + <attributes name="occi.core.id" value="urn:uuid:93f08e31-f350-42b7-a73b-c139eba4a8e4"/> + <attributes name="occi.core.title" value="link3"/> + </links> + </resources> + <mixins name="hJob" scheme="http://schemas.modmacao.org/usermixins#" title="Hjob"/> + <mixins name="hMaster" scheme="http://schemas.modmacao.org/usermixins#" title="HMaster"/> + <mixins name="hWorker" scheme="http://schemas.modmacao.org/usermixins#" title="HWorker"/> + <mixins name="CPUGatherer" scheme="http://schemas.modmacao.org/usermixins#" title="CPUGatherer"/> + <mixins name="CPUProcessor" scheme="http://schemas.modmacao.org/usermixins#" title="CPUProcessor"/> + <mixins name="CPUPublisher" scheme="http://schemas.modmacao.org/usermixins#" title="CPUPublisher"/> + <mixins name="MemProcessor" scheme="http://schemas.modmacao.org/usermixins#" title="MemProcessor"/> + <mixins name="MemPublisher" scheme="http://schemas.modmacao.org/usermixins#" title="MemPublisher"/> +</occi:Configuration> diff --git a/src/test/resources/roles/memprocessor/.travis.yml b/src/test/resources/roles/memprocessor/.travis.yml new file mode 100644 index 0000000..36bbf62 --- /dev/null +++ b/src/test/resources/roles/memprocessor/.travis.yml @@ -0,0 +1,29 @@ +--- +language: python +python: "2.7" + +# Use the new container infrastructure +sudo: false + +# Install ansible +addons: + apt: + packages: + - python-pip + +install: + # Install ansible + - pip install ansible + + # Check ansible version + - ansible --version + + # Create ansible.cfg with correct roles_path + - printf '[defaults]\nroles_path=../' >ansible.cfg + +script: + # Basic role syntax check + - ansible-playbook tests/test.yml -i tests/inventory --syntax-check + +notifications: + webhooks: https://galaxy.ansible.com/api/v1/notifications/ \ No newline at end of file diff --git a/src/test/resources/roles/memprocessor/README.md b/src/test/resources/roles/memprocessor/README.md new file mode 100644 index 0000000..225dd44 --- /dev/null +++ b/src/test/resources/roles/memprocessor/README.md @@ -0,0 +1,38 @@ +Role Name +========= + +A brief description of the role goes here. + +Requirements +------------ + +Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required. + +Role Variables +-------------- + +A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well. + +Dependencies +------------ + +A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles. + +Example Playbook +---------------- + +Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: + + - hosts: servers + roles: + - { role: username.rolename, x: 42 } + +License +------- + +BSD + +Author Information +------------------ + +An optional section for the role authors to include contact information, or a website (HTML is not allowed). diff --git a/src/test/resources/roles/memprocessor/defaults/main.yml b/src/test/resources/roles/memprocessor/defaults/main.yml new file mode 100644 index 0000000..0642dc2 --- /dev/null +++ b/src/test/resources/roles/memprocessor/defaults/main.yml @@ -0,0 +1,2 @@ +--- +# defaults file for java diff --git a/src/test/resources/roles/memprocessor/files/memprocessor.sh b/src/test/resources/roles/memprocessor/files/memprocessor.sh new file mode 100644 index 0000000..e364673 --- /dev/null +++ b/src/test/resources/roles/memprocessor/files/memprocessor.sh @@ -0,0 +1,33 @@ +#! /bin/bash + +avgMem=0 +slept=0 +sequence=3 +times=3 +send=$(python -c "print $sequence*$times") +url=http://$1:61208/api/2/mem/percent + +if [ -f ~/memmonitor.txt ]; then + echo "Removing previous monitoring data" + rm monitor.txt +fi + +echo "Starting monitoring script" +echo "Requesting $url every $sequence seconds aggregating after $times times!" + + +while true; do + mem=$(curl -s $url | awk '{print $2}') + cutmem=$(echo "$mem" | rev | cut -c 2- | rev) + sumMem=$(python -c "print $sumMem+$cutmem") + echo "Current Mem: $cutmem" + sleep $sequence + slept=$(($slept+$sequence)) + if [ "$slept" = $send ]; then + mid=$(python -c "print $sumMem/$times") + echo "Aggregate Mem: $mid" + echo $mid >> ~/memmonitor.txt + slept=0 + sumMem=0 + fi +done diff --git a/src/test/resources/roles/memprocessor/handlers/main.yml b/src/test/resources/roles/memprocessor/handlers/main.yml new file mode 100644 index 0000000..6e163da --- /dev/null +++ b/src/test/resources/roles/memprocessor/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for java diff --git a/src/test/resources/roles/memprocessor/meta/main.yml b/src/test/resources/roles/memprocessor/meta/main.yml new file mode 100644 index 0000000..0a14708 --- /dev/null +++ b/src/test/resources/roles/memprocessor/meta/main.yml @@ -0,0 +1,246 @@ +galaxy_info: + author: your name + description: + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Some suggested licenses: + # - BSD (default) + # - MIT + # - GPLv2 + # - GPLv3 + # - Apache + # - CC-BY + license: license (GPLv2, CC-BY, etc) + + min_ansible_version: 1.2 + + # Optionally specify the branch Galaxy will use when accessing the GitHub + # repo for this role. During role install, if no tags are available, + # Galaxy will use this branch. During import Galaxy will access files on + # this branch. If travis integration is cofigured, only notification for this + # branch will be accepted. Otherwise, in all cases, the repo's default branch + # (usually master) will be used. + #github_branch: + + # + # Below are all platforms currently available. Just uncomment + # the ones that apply to your role. If you don't see your + # platform on this list, let us know and we'll get it added! + # + #platforms: + #- name: OpenBSD + # versions: + # - all + # - 5.6 + # - 5.7 + # - 5.8 + # - 5.9 + # - 6.0 + # - 6.1 + # - 6.2 + #- name: Fedora + # versions: + # - all + # - 16 + # - 17 + # - 18 + # - 19 + # - 20 + # - 21 + # - 22 + # - 23 + # - 24 + # - 25 + # - 26 + # - 27 + #- name: DellOS + # versions: + # - all + # - 10 + # - 6 + # - 9 + #- name: MacOSX + # versions: + # - all + # - 10.10 + # - 10.11 + # - 10.12 + # - 10.7 + # - 10.8 + # - 10.9 + #- name: Synology + # versions: + # - all + # - any + #- name: Junos + # versions: + # - all + # - any + #- name: Cumulus + # versions: + # - all + # - 2.5 + # - 3.0 + # - 3.1 + # - 3.2 + # - 3.3 + # - 3.4 + # - 3.5 + #- name: GenericBSD + # versions: + # - all + # - any + #- name: Void Linux + # versions: + # - all + # - any + #- name: GenericLinux + # versions: + # - all + # - any + #- name: NXOS + # versions: + # - all + # - any + #- name: macOS + # versions: + # - all + # - Sierra + #- name: IOS + # versions: + # - all + # - any + #- name: Amazon + # versions: + # - all + # - 2013.03 + # - 2013.09 + # - 2016.03 + # - 2016.09 + #- name: ArchLinux + # versions: + # - all + # - any + #- name: FreeBSD + # versions: + # - all + # - 10.0 + # - 10.1 + # - 10.2 + # - 10.3 + # - 10.4 + # - 11.0 + # - 11.1 + # - 8.0 + # - 8.1 + # - 8.2 + # - 8.3 + # - 8.4 + # - 9.0 + # - 9.1 + # - 9.1 + # - 9.2 + # - 9.3 + #- name: Ubuntu + # versions: + # - all + # - artful + # - bionic + # - lucid + # - maverick + # - natty + # - oneiric + # - precise + # - quantal + # - raring + # - saucy + # - trusty + # - utopic + # - vivid + # - wily + # - xenial + # - yakkety + # - zesty + #- name: Debian + # versions: + # - all + # - buster + # - etch + # - jessie + # - lenny + # - sid + # - squeeze + # - stretch + # - wheezy + #- name: Alpine + # versions: + # - all + # - any + #- name: EL + # versions: + # - all + # - 5 + # - 6 + # - 7 + #- name: Windows + # versions: + # - all + # - 2012R2 + #- name: SmartOS + # versions: + # - all + # - any + #- name: opensuse + # versions: + # - all + # - 12.1 + # - 12.2 + # - 12.3 + # - 13.1 + # - 13.2 + #- name: SLES + # versions: + # - all + # - 10SP3 + # - 10SP4 + # - 11 + # - 11SP1 + # - 11SP2 + # - 11SP3 + # - 11SP4 + # - 12 + # - 12SP1 + #- name: GenericUNIX + # versions: + # - all + # - any + #- name: Solaris + # versions: + # - all + # - 10 + # - 11.0 + # - 11.1 + # - 11.2 + # - 11.3 + #- name: eos + # versions: + # - all + # - Any + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is + # a keyword that describes and categorizes the role. + # Users find roles by searching for tags. Be sure to + # remove the '[]' above if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of + # alphanumeric characters. Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. + # Be sure to remove the '[]' above if you add dependencies + # to this list. \ No newline at end of file diff --git a/src/test/resources/roles/memprocessor/tasks/main.yml b/src/test/resources/roles/memprocessor/tasks/main.yml new file mode 100644 index 0000000..7b8ef23 --- /dev/null +++ b/src/test/resources/roles/memprocessor/tasks/main.yml @@ -0,0 +1,37 @@ +- name: Deploy CPUProcessor + block: + - name: Upload MemProcessor Script + copy: + src: memprocessor.sh + dest: /home/ubuntu/memprocessor.sh + when: task == "DEPLOY" + become_user: root + +- name: Configure MemProcessor + block: + - name: Make script executable + file: + path: /home/ubuntu/memprocessor.sh + mode: 0777 + when: task == "CONFIGURE" + become_user: root + +- name: Start MemProcessor + block: + - name: Execute processor script + command: start-stop-daemon --start --startas /home/ubuntu/memprocessor.sh {{ gatherer_address }} -m --pidfile /run/memprocessor.pid -b + when: task == "START" + become_user: root + +- name: Stop MemProcessor + block: + - name: Stop processor script + command: start-stop-daemon --stop -m --pidfile /run/memprocessor.pid + when: task == "STOP" + become_user: root + +- name: Undeploy MemProcessor + block: + - debug: msg="Operation undeploy not implemented." + when: task == "UNDEPLOY" + become_user: root diff --git a/src/test/resources/roles/memprocessor/tests/inventory b/src/test/resources/roles/memprocessor/tests/inventory new file mode 100644 index 0000000..d18580b --- /dev/null +++ b/src/test/resources/roles/memprocessor/tests/inventory @@ -0,0 +1 @@ +localhost \ No newline at end of file diff --git a/src/test/resources/roles/memprocessor/tests/test.yml b/src/test/resources/roles/memprocessor/tests/test.yml new file mode 100644 index 0000000..4e35830 --- /dev/null +++ b/src/test/resources/roles/memprocessor/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - java \ No newline at end of file diff --git a/src/test/resources/roles/memprocessor/vars/main.yml b/src/test/resources/roles/memprocessor/vars/main.yml new file mode 100644 index 0000000..fe05373 --- /dev/null +++ b/src/test/resources/roles/memprocessor/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for java diff --git a/src/test/resources/roles/mempublisher/.travis.yml b/src/test/resources/roles/mempublisher/.travis.yml new file mode 100644 index 0000000..36bbf62 --- /dev/null +++ b/src/test/resources/roles/mempublisher/.travis.yml @@ -0,0 +1,29 @@ +--- +language: python +python: "2.7" + +# Use the new container infrastructure +sudo: false + +# Install ansible +addons: + apt: + packages: + - python-pip + +install: + # Install ansible + - pip install ansible + + # Check ansible version + - ansible --version + + # Create ansible.cfg with correct roles_path + - printf '[defaults]\nroles_path=../' >ansible.cfg + +script: + # Basic role syntax check + - ansible-playbook tests/test.yml -i tests/inventory --syntax-check + +notifications: + webhooks: https://galaxy.ansible.com/api/v1/notifications/ \ No newline at end of file diff --git a/src/test/resources/roles/mempublisher/README.md b/src/test/resources/roles/mempublisher/README.md new file mode 100644 index 0000000..225dd44 --- /dev/null +++ b/src/test/resources/roles/mempublisher/README.md @@ -0,0 +1,38 @@ +Role Name +========= + +A brief description of the role goes here. + +Requirements +------------ + +Any pre-requisites that may not be covered by Ansible itself or the role should be mentioned here. For instance, if the role uses the EC2 module, it may be a good idea to mention in this section that the boto package is required. + +Role Variables +-------------- + +A description of the settable variables for this role should go here, including any variables that are in defaults/main.yml, vars/main.yml, and any variables that can/should be set via parameters to the role. Any variables that are read from other roles and/or the global scope (ie. hostvars, group vars, etc.) should be mentioned here as well. + +Dependencies +------------ + +A list of other roles hosted on Galaxy should go here, plus any details in regards to parameters that may need to be set for other roles, or variables that are used from other roles. + +Example Playbook +---------------- + +Including an example of how to use your role (for instance, with variables passed in as parameters) is always nice for users too: + + - hosts: servers + roles: + - { role: username.rolename, x: 42 } + +License +------- + +BSD + +Author Information +------------------ + +An optional section for the role authors to include contact information, or a website (HTML is not allowed). diff --git a/src/test/resources/roles/mempublisher/defaults/main.yml b/src/test/resources/roles/mempublisher/defaults/main.yml new file mode 100644 index 0000000..0642dc2 --- /dev/null +++ b/src/test/resources/roles/mempublisher/defaults/main.yml @@ -0,0 +1,2 @@ +--- +# defaults file for java diff --git a/src/test/resources/roles/mempublisher/files/mempublisher.sh b/src/test/resources/roles/mempublisher/files/mempublisher.sh new file mode 100644 index 0000000..6b10a6d --- /dev/null +++ b/src/test/resources/roles/mempublisher/files/mempublisher.sh @@ -0,0 +1,60 @@ +#! /bin/bash + +endpoint=$1 +propresource=$2 +propname=$3 +sensor=$4 +propid=$5 +thresholdCrit=90 +thresholdHigh=60 +thresholdMid=40 +thresholdLow=10 +monfile=~/memmonitor.txt +sequence=3 + +echo "Endpoint: $endpoint" +echo "Resource: $propresource" +echo "Name: $propname" + +if [! -f "$monfile" ]; then + echo "Did not find file for monitoring: $monfile" + sleep 10 +fi + +if [! -f "$monfile" ]; then + echo "Did not find file for monitoring: $monfile" + sleep 10 +fi + +echo "Starting publishing script" +echo "Checking $monfile every $sequence seconds with threshold of $threshold!" + + +while true; do + val=$(tail -1 $monfile) + echo "$val" + + if [ $(echo "$val > $thresholdCrit" | bc ) = 1 ]; then + state=Critical + elif [ $(echo "$val > $thresholdHigh" | bc ) = 1 ]; then + state=High + elif [ $(echo "$val > $thresholdMid" | bc ) = 1 ]; then + state=Mid + elif [ $(echo "$val > $thresholdLow" | bc ) = 1 ]; then + state=Low + else + state=None + fi + + + if [ "$oldstate" = "$state" ]; then + echo "Nothing changed! Still in state $state" + else + echo "New state reached: $state" + echo "Publishing new results" + curl -v -X PUT http://"$endpoint""$propid" -H 'Content-Type: text/occi' -H 'Category: monitoringproperty; scheme="http://schemas.ugoe.cs.rwm/monitoring#"; class="kind"' -H 'X-OCCI-Attribute:occi.core.source="'$sensor'",occi.core.target="'$propresource'", occi.core.title="monProp", monitoring.property.value="'$state'", monitoring.property.name="'$propname'"' + oldstate=$state + fi + sleep $sequence +done + diff --git a/src/test/resources/roles/mempublisher/handlers/main.yml b/src/test/resources/roles/mempublisher/handlers/main.yml new file mode 100644 index 0000000..6e163da --- /dev/null +++ b/src/test/resources/roles/mempublisher/handlers/main.yml @@ -0,0 +1,2 @@ +--- +# handlers file for java diff --git a/src/test/resources/roles/mempublisher/meta/main.yml b/src/test/resources/roles/mempublisher/meta/main.yml new file mode 100644 index 0000000..0a14708 --- /dev/null +++ b/src/test/resources/roles/mempublisher/meta/main.yml @@ -0,0 +1,246 @@ +galaxy_info: + author: your name + description: + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Some suggested licenses: + # - BSD (default) + # - MIT + # - GPLv2 + # - GPLv3 + # - Apache + # - CC-BY + license: license (GPLv2, CC-BY, etc) + + min_ansible_version: 1.2 + + # Optionally specify the branch Galaxy will use when accessing the GitHub + # repo for this role. During role install, if no tags are available, + # Galaxy will use this branch. During import Galaxy will access files on + # this branch. If travis integration is cofigured, only notification for this + # branch will be accepted. Otherwise, in all cases, the repo's default branch + # (usually master) will be used. + #github_branch: + + # + # Below are all platforms currently available. Just uncomment + # the ones that apply to your role. If you don't see your + # platform on this list, let us know and we'll get it added! + # + #platforms: + #- name: OpenBSD + # versions: + # - all + # - 5.6 + # - 5.7 + # - 5.8 + # - 5.9 + # - 6.0 + # - 6.1 + # - 6.2 + #- name: Fedora + # versions: + # - all + # - 16 + # - 17 + # - 18 + # - 19 + # - 20 + # - 21 + # - 22 + # - 23 + # - 24 + # - 25 + # - 26 + # - 27 + #- name: DellOS + # versions: + # - all + # - 10 + # - 6 + # - 9 + #- name: MacOSX + # versions: + # - all + # - 10.10 + # - 10.11 + # - 10.12 + # - 10.7 + # - 10.8 + # - 10.9 + #- name: Synology + # versions: + # - all + # - any + #- name: Junos + # versions: + # - all + # - any + #- name: Cumulus + # versions: + # - all + # - 2.5 + # - 3.0 + # - 3.1 + # - 3.2 + # - 3.3 + # - 3.4 + # - 3.5 + #- name: GenericBSD + # versions: + # - all + # - any + #- name: Void Linux + # versions: + # - all + # - any + #- name: GenericLinux + # versions: + # - all + # - any + #- name: NXOS + # versions: + # - all + # - any + #- name: macOS + # versions: + # - all + # - Sierra + #- name: IOS + # versions: + # - all + # - any + #- name: Amazon + # versions: + # - all + # - 2013.03 + # - 2013.09 + # - 2016.03 + # - 2016.09 + #- name: ArchLinux + # versions: + # - all + # - any + #- name: FreeBSD + # versions: + # - all + # - 10.0 + # - 10.1 + # - 10.2 + # - 10.3 + # - 10.4 + # - 11.0 + # - 11.1 + # - 8.0 + # - 8.1 + # - 8.2 + # - 8.3 + # - 8.4 + # - 9.0 + # - 9.1 + # - 9.1 + # - 9.2 + # - 9.3 + #- name: Ubuntu + # versions: + # - all + # - artful + # - bionic + # - lucid + # - maverick + # - natty + # - oneiric + # - precise + # - quantal + # - raring + # - saucy + # - trusty + # - utopic + # - vivid + # - wily + # - xenial + # - yakkety + # - zesty + #- name: Debian + # versions: + # - all + # - buster + # - etch + # - jessie + # - lenny + # - sid + # - squeeze + # - stretch + # - wheezy + #- name: Alpine + # versions: + # - all + # - any + #- name: EL + # versions: + # - all + # - 5 + # - 6 + # - 7 + #- name: Windows + # versions: + # - all + # - 2012R2 + #- name: SmartOS + # versions: + # - all + # - any + #- name: opensuse + # versions: + # - all + # - 12.1 + # - 12.2 + # - 12.3 + # - 13.1 + # - 13.2 + #- name: SLES + # versions: + # - all + # - 10SP3 + # - 10SP4 + # - 11 + # - 11SP1 + # - 11SP2 + # - 11SP3 + # - 11SP4 + # - 12 + # - 12SP1 + #- name: GenericUNIX + # versions: + # - all + # - any + #- name: Solaris + # versions: + # - all + # - 10 + # - 11.0 + # - 11.1 + # - 11.2 + # - 11.3 + #- name: eos + # versions: + # - all + # - Any + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is + # a keyword that describes and categorizes the role. + # Users find roles by searching for tags. Be sure to + # remove the '[]' above if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of + # alphanumeric characters. Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. + # Be sure to remove the '[]' above if you add dependencies + # to this list. \ No newline at end of file diff --git a/src/test/resources/roles/mempublisher/tasks/main.yml b/src/test/resources/roles/mempublisher/tasks/main.yml new file mode 100644 index 0000000..ac66d2e --- /dev/null +++ b/src/test/resources/roles/mempublisher/tasks/main.yml @@ -0,0 +1,42 @@ +- name: Deploy MemPublisher + block: + - name: Install bc package + apt: + name: bc + state: installed + - name: Upload Publisher Script + copy: + src: mempublisher.sh + dest: /home/ubuntu/mempublisher.sh + when: task == "DEPLOY" + become_user: root + +- name: Configure MemPublisher + block: + - name: Make script executable + file: + path: /home/ubuntu/mempublisher.sh + mode: 0777 + when: task == "CONFIGURE" + become_user: root + +- name: Start MemPublisher + block: + - name: Execute mempublisher script + command: start-stop-daemon --start --startas /home/ubuntu/mempublisher.sh {{ publisher_endpoint }} {{ monitoring_property_resource }} {{ monitoring_property_name }} {{ sensor }} {{ monitoring_property_id }} -m --pidfile /run/mempublisher.pid -b + when: task == "START" + become_user: root + +- name: Stop MemPublisher + block: + - name: Stop mempublisher script + command: start-stop-daemon --stop -m --pidfile /run/mempublisher.pid + when: task == "STOP" + become_user: root + +- name: Undeploy MemPublisher + block: + - debug: msg="Attributes {{ publisher_endpoint }} {{ monitoring_property_resource }} {{ monitoring_property_name }}." + when: task == "UNDEPLOY" + become_user: root + diff --git a/src/test/resources/roles/mempublisher/tests/inventory b/src/test/resources/roles/mempublisher/tests/inventory new file mode 100644 index 0000000..d18580b --- /dev/null +++ b/src/test/resources/roles/mempublisher/tests/inventory @@ -0,0 +1 @@ +localhost \ No newline at end of file diff --git a/src/test/resources/roles/mempublisher/tests/test.yml b/src/test/resources/roles/mempublisher/tests/test.yml new file mode 100644 index 0000000..4e35830 --- /dev/null +++ b/src/test/resources/roles/mempublisher/tests/test.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + remote_user: root + roles: + - java \ No newline at end of file diff --git a/src/test/resources/roles/mempublisher/vars/main.yml b/src/test/resources/roles/mempublisher/vars/main.yml new file mode 100644 index 0000000..fe05373 --- /dev/null +++ b/src/test/resources/roles/mempublisher/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for java -- GitLab