Bug 568834 - [PrivacyDesigner] add design plugins
- plugins to support privacy-by-design.
Change-Id: I0036495fb8bf8db38785da1b1b501daca8fe33e5
Signed-off-by: Gabriel Pedroza <gabriel.pedroza@cea.fr>
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/.project b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/.project
new file mode 100644
index 0000000..06da4a7
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/build.properties b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/build.properties
new file mode 100644
index 0000000..b3a611b
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/build.properties
@@ -0,0 +1,2 @@
+bin.includes = feature.xml,\
+ feature.properties
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.properties b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.properties
new file mode 100644
index 0000000..70e7520
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.properties
@@ -0,0 +1,30 @@
+###############################################################################
+# Copyright (c) 2012, 2016 CEA LIST, Christian W. Damus, and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+
+# "featureName" property - name of the feature
+featureName=PDP4Eng Designer feature
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse Modeling Project
+
+# description property - text of the "Feature Description"
+description=This feature regroups all functions about GDPR designer
+################ end of description property ##################################
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2020 CEA LIST.\n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License 2.0\n\
+which accompanies this distribution, and is available at\n\
+https://www.eclipse.org/legal/epl-2.0/\n\
+\n\
+SPDX-License-Identifier: EPL-2.0\n
+################ end of copyright property ####################################
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.xml b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.xml
new file mode 100644
index 0000000..9ff6c8f
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/feature.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.papyrus.pdp4eng.designer.feature"
+ label="%featureName"
+ version="1.0.0.qualifier"
+ provider-name="%providerName"
+ license-feature="org.eclipse.license"
+ license-feature-version="2.0.2">
+
+ <description url="https://eclipse.org/papyrus/">
+ %description
+ </description>
+
+ <copyright>
+ %copyright
+ </copyright>
+
+ <license url="%licenseURL">
+ %license
+ </license>
+
+ <requires>
+ <import feature="org.eclipse.papyrus.pdp4eng.common.feature" version="1.0.0.qualifier"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.papyrus.pdp4eng.designer.controller"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.pdp4eng.designer.datastrategies"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.pdp4eng.designer.engine"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.pdp4eng.designer.libraries-patterns"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.pdp4eng.designer.processstrategies"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.pdp4eng.designer.profile"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.pdp4eng.designer.ui"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.pdp4eng.designer.utils"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/feature/org.eclipse.papyrus.pdp4eng.designer.feature/pom.xml b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/pom.xml
new file mode 100644
index 0000000..1857021
--- /dev/null
+++ b/feature/org.eclipse.papyrus.pdp4eng.designer.feature/pom.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.feature</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.feature</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-feature</packaging>
+
+ <name>pdp4eng designer feature</name>
+ <description>pdp4eng designer feature</description>
+</project>
\ No newline at end of file
diff --git a/feature/pom.xml b/feature/pom.xml
index dd39239..79c2d70 100644
--- a/feature/pom.xml
+++ b/feature/pom.xml
@@ -19,6 +19,6 @@
<modules>
<module>org.eclipse.papyrus.pdp4eng.common.feature</module>
<module>org.eclipse.papyrus.pdp4eng.req.feature</module>
- <!--module>org.eclipse.papyrus.pdp4eng.designer.feature</module-->
+ <module>org.eclipse.papyrus.pdp4eng.designer.feature</module>
</modules>
</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <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.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.project
new file mode 100644
index 0000000..4ab62d8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.controller</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cacff42
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.controller;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.controller
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.commands;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.4.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.papyrus.requirements.sysml14.common;bundle-version="[0.7.0,1.0.0)",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.utils;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.uml.properties;bundle-version="[3.5.100,4.0.0)",
+ org.eclipse.papyrus.infra.properties.ui;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.profile;bundle-version="[1.0.0,2.0.0)"
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.controller.api,
+ org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/build.properties
new file mode 100644
index 0000000..af3cd05
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ build.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/plugin.properties
new file mode 100644
index 0000000..fde393f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design controller
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/pom.xml
new file mode 100644
index 0000000..ce93f97
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.controller</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/IModelTransfo.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/IModelTransfo.java
new file mode 100644
index 0000000..5b268da
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/IModelTransfo.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.api;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.OpaqueAction;
+
+
+/**
+ * Interface that declares model transformation for Data
+ *
+ */
+public interface IModelTransfo {
+ /**
+ * return a command to create an abstraction from a gieven Data
+ * @param domain
+ * @param data
+ * @return a command, it is never null
+ */
+ public Command getAbstractionDataCommand(TransactionalEditingDomain domain, org.eclipse.uml2.uml.Element data);
+
+ /**
+ * Return a command that create a DFD in the design package (owner) from a DFD of the RequirementPackage
+ * @param domain domain to execute command
+ * @param owner a package that contain the new DFD
+ * @param reqSource the DFD source
+ * @return a command
+ */
+ public Command getCreateProcessModelFromReq(TransactionalEditingDomain domain, org.eclipse.uml2.uml.Package owner,org.eclipse.uml2.uml.Activity ReqDFDSource);
+
+ /**
+ * Return a command that transform a process to a process call
+ * @param domain in order to execute the command
+ * @param process that will be transform into a call process
+ * @return the command
+ */
+ public Command getCallProcessToProcessCommand(TransactionalEditingDomain domain, OpaqueAction callProcess );
+
+ /**
+ * Return a command that transform a process (Action) to a process call
+ * @param domain
+ * @param process
+ * @return
+ */
+ public Command getActionCallProcessToProcessCommand(TransactionalEditingDomain domain, Action actionCallProcess);
+
+ /**
+ * Return a command that transforms all the CallProcess within and Activity DFD to a Process (Activity)
+ * @param domain
+ * @param activityDFD
+ * @return
+ */
+ public Command getAllCallProcessToProcessCommand(TransactionalEditingDomain domain, Activity activityDFD);
+
+ /**
+ * Applies the PDPbDesign profile to an Activity diagram according to DFD definition
+ * @param domain
+ * @param activityDFD
+ * @return
+ */
+ public Command getApplyPDPbDProfileToActivityDFDCommand(TransactionalEditingDomain domain, Activity activityDFD);
+
+ /**
+ * Instantiate a GDPR pattern to ensure consent over personal data processed
+ * @param domain
+ * @param process
+ * @return
+ */
+ public Command getInstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity process);
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/ModelTransfoFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/ModelTransfoFactory.java
new file mode 100644
index 0000000..b9747af
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/api/ModelTransfoFactory.java
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.api;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.controller.internal.ModelTransfoFactoryImpl;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * this an implementation that must be used as API
+ *
+ */
+public class ModelTransfoFactory implements IModelTransfo{
+ private ModelTransfoFactoryImpl factoryImpl= new ModelTransfoFactoryImpl();
+
+ @Override
+ public Command getAbstractionDataCommand(TransactionalEditingDomain domain, Element data) {
+ return factoryImpl.getAbstractionDataCommand(domain, data);
+ }
+
+ @Override
+ public Command getCreateProcessModelFromReq(TransactionalEditingDomain domain, Package owner,Activity ReqDFDSource) {
+ return factoryImpl.getCreateProcessModelFromReq(domain, owner, ReqDFDSource);
+ }
+
+ @Override
+ public Command getCallProcessToProcessCommand(TransactionalEditingDomain domain, OpaqueAction callProcess) {
+ return factoryImpl.getCallProcessToProcessCommand(domain, callProcess);
+ }
+
+ @Override
+ public Command getActionCallProcessToProcessCommand(TransactionalEditingDomain domain, Action actionCallProcess) {
+ // TODO Auto-generated method stub
+ return factoryImpl.getActionCallProcessToProcessCommand(domain, actionCallProcess);
+ }
+
+ @Override
+ public Command getAllCallProcessToProcessCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+ // TODO Auto-generated method stub
+ return factoryImpl.getAllCallProcessToProcessCommand(domain, activityDFD);
+ }
+
+ @Override
+ public Command getApplyPDPbDProfileToActivityDFDCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+ // TODO Auto-generated method stub
+ return factoryImpl.getApplyPDPbDProfileToActivityDFDCommand(domain, activityDFD);
+ }
+
+ @Override
+ public Command getInstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity process) {
+ // TODO Auto-generated method stub
+ return factoryImpl.getInstantiateGDPRConsentPatternCommand(domain, process);
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AbstractDataCreateCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AbstractDataCreateCommand.java
new file mode 100644
index 0000000..372822c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AbstractDataCreateCommand.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.util.UMLUtil.StereotypeApplicationHelper;
+
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class AbstractDataCreateCommand extends RecordingCommand {
+ protected NamedElement selectedElement;
+ private static int no = 0;
+
+ public AbstractDataCreateCommand(TransactionalEditingDomain domain, NamedElement selectedElements) {
+ super(domain, "AbstractDataCreateCommand");
+ this.selectedElement = selectedElements;
+ }
+
+ protected void createCompositeData(org.eclipse.uml2.uml.Package owner, String text) {
+ org.eclipse.uml2.uml.Class abstractData = owner.createOwnedClass(this.selectedElement.getName()+"_"+no, false);
+ StereotypeApplicationHelper stereotypeApplicationHelper = StereotypeApplicationHelper.getInstance(null);
+ stereotypeApplicationHelper.applyStereotype(abstractData, pdp4engDesignPackage.eINSTANCE.getCompositeData(),null);
+ ((Classifier)selectedElement).createAssociation(true, AggregationKind.get(2),"data_target", 0, 1, abstractData, false, AggregationKind.get(0), "data_source", 1, 1);
+ no++;
+ }
+
+ @Override
+ protected void doExecute() {
+ createCompositeData(selectedElement.getNearestPackage(), "");
+ }
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ActionCallProcessToProcessCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ActionCallProcessToProcessCommand.java
new file mode 100644
index 0000000..8475209
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ActionCallProcessToProcessCommand.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import java.util.ArrayList;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelPackageNames;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityParameterNode;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class ActionCallProcessToProcessCommand extends RecordingCommand {
+ protected Action actionCallProcess;
+
+ public ActionCallProcessToProcessCommand(TransactionalEditingDomain domain, Action actionCallProcess) {
+ super(domain, "Transform a call process (OpaqueAction or CallBehaviorAction) to a process (Activity)");
+ this.actionCallProcess = actionCallProcess;
+ }
+
+
+ @Override
+ protected void doExecute() {
+
+ // Get DFD_L1 Package. If it is not found create the package.
+ Package DFDL1_Pkg = this.actionCallProcess.getModel().getNestedPackage(ModelPackageNames.DFD_L1_PackageName);
+ if (DFDL1_Pkg==null) {
+ actionCallProcess.getModel().createPackagedElement(ModelPackageNames.DFD_L1_PackageName, UMLPackage.eINSTANCE.getPackage());
+ DFDL1_Pkg = actionCallProcess.getModel().getNestedPackage(ModelPackageNames.DFD_L1_PackageName);
+ }
+
+ // If the Action is an OpaqueAction then create a new CallBehaviorAction and set it as behavior of the new Activity
+ if (actionCallProcess instanceof org.eclipse.uml2.uml.OpaqueAction) {
+ Activity newProcess= UMLFactory.eINSTANCE.createActivity();
+ newProcess.setName(actionCallProcess.getName());
+ DFDL1_Pkg.getPackagedElements().add(newProcess);
+ CallBehaviorAction callBehaviorAction=UMLFactory.eINSTANCE.createCallBehaviorAction();
+ actionCallProcess.getActivity().getOwnedNodes().add(callBehaviorAction);
+ callBehaviorAction.setName(actionCallProcess.getName());
+ callBehaviorAction.setBehavior(newProcess);
+
+ // For each Input pin of the Action create a new ActivityParameterNode
+ // Each ActivityParameterNode is added to the new Activity
+ ArrayList<Pin> list=new ArrayList<Pin>();
+ for (InputPin input : actionCallProcess.getInputs()) {
+ ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+ parameter.setName(input.getName());
+ parameter.setType(input.getType());
+ newProcess.getOwnedNodes().add(parameter);
+ list.add(input);
+
+ }
+
+ // The Input pins in the OpaqueAction are added to the CallBehaviorAction
+ for (Pin pin : list) {
+ callBehaviorAction.getArguments().add((InputPin)pin);
+ }
+
+ list.clear();
+ // For each Output pin of the OpaqueAction create a new ActivityParameterNode
+ // Each ActivityParameterNode is added to the new Activity
+ for (OutputPin output : actionCallProcess.getOutputs()) {
+ ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+ parameter.setName(output.getName());
+ parameter.setType(output.getType());
+ newProcess.getOwnedNodes().add(parameter);
+ list.add(output);
+
+ }
+
+ // The Output pins in the OpaqueAction are added to the CallBehaviorAction
+ for (Pin pin : list) {
+ callBehaviorAction.getResults().add((OutputPin)pin);
+ }
+
+ // The OpaqueAction can be replaced by the CallBehaviorAction
+ // The code that follows is intended to remove the OpaqueAction (Code to be reviewed!)
+ //actionCallProcess.getActivity().getOwnedNodes().remove(actionCallProcess);
+ //actionCallProcess.destroy();
+ EcoreUtil.delete(actionCallProcess);
+
+
+ } else {
+ // If the Action is already a CallBehaviorAction then create the ActivityParameterNodes
+ // A new Behavior (Activity) will be created if the CallBehaviorAction is not associated to a Behavior
+ // Or if the associated Behavior is not named as the CallBehaviorAction
+ if (actionCallProcess instanceof org.eclipse.uml2.uml.CallBehaviorAction && (
+ (((CallBehaviorAction) actionCallProcess).getBehavior()==null) || (
+ (((CallBehaviorAction) actionCallProcess).getBehavior()!=null) &&
+ !((CallBehaviorAction) actionCallProcess).getBehavior().getName().equals(actionCallProcess.getName())))) {
+
+ Activity newProcess= UMLFactory.eINSTANCE.createActivity();
+ newProcess.setName(actionCallProcess.getName());
+ DFDL1_Pkg.getPackagedElements().add(newProcess);
+
+ // The CallBehaviorAction and the associated Behavior (Activity) should have the same name
+ // Otherwise the Behavior is renamed as a candidate to be deleted (assistance to clean model)
+ if ((((CallBehaviorAction) actionCallProcess).getBehavior()!=null) &&
+ !((CallBehaviorAction) actionCallProcess).getBehavior().getName().equals(actionCallProcess.getName())) {
+
+ Behavior behavior =((CallBehaviorAction) actionCallProcess).getBehavior();
+ behavior.setName("ToDelete_"+behavior.getName());
+ }
+
+ ((CallBehaviorAction) actionCallProcess).setBehavior(newProcess);
+
+ // For each Input pin of the Action create a new ActivityParameterNode
+ // Each ActivityParameterNode is added to the new Activity
+ for (InputPin input : actionCallProcess.getInputs()) {
+ ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+ parameter.setName(input.getName());
+ parameter.setType(input.getType());
+ newProcess.getOwnedNodes().add(parameter);
+ }
+
+ // For each Output pin of the OpaqueAction create a new ActivityParameterNode
+ // Each ActivityParameterNode is added to the new Activity
+ for (OutputPin output : actionCallProcess.getOutputs()) {
+ ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+ parameter.setName(output.getName());
+ parameter.setType(output.getType());
+ newProcess.getOwnedNodes().add(parameter);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AllCallProcessToProcessCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AllCallProcessToProcessCommand.java
new file mode 100644
index 0000000..d624f23
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/AllCallProcessToProcessCommand.java
@@ -0,0 +1,138 @@
+
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelProfileNames;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.ProfileApplication;
+
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class AllCallProcessToProcessCommand extends RecordingCommand {
+
+ protected Activity activityDFD;
+ protected TransactionalEditingDomain domain;
+
+ public AllCallProcessToProcessCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+ super(domain, "Transform each call process (OpaqueAction or CallBehaviorAction) within the Activity into a process");
+ this.activityDFD = activityDFD;
+ this.domain=domain;
+ }
+
+ @Override
+ protected void doExecute() {
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+ EList<Element> elementList = this.activityDFD.getNearestPackage().allOwnedElements();
+ if (elementList!=null && PDPbDprofile!=null) {
+ for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+ Element element = elementListIt.next();
+ EClass elementClass = element.eClass();
+ System.out.printf("===>"+elementClass.getName()+"\n");
+ if (elementClass!=null ) {
+ String className = elementClass.getName();
+ switch (className){
+
+ case "CallBehaviorAction":
+ if (element instanceof CallBehaviorAction) {
+ if (element != null) {
+ ActionCallProcessToProcessCommand command = new ActionCallProcessToProcessCommand(domain, ((Action) element));
+ if (command.canExecute()) {
+ command.execute();
+ }
+ }
+ }
+ break;
+ case "OpaqueAction":
+ if (element instanceof OpaqueAction) {
+ if (element != null) {
+ ActionCallProcessToProcessCommand command = new ActionCallProcessToProcessCommand(domain, ((Action) element));
+ if (command.canExecute()) {
+ command.execute();
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Verify whether the needed profiles have been already loaded in the model
+ * @param profileList
+ * @return
+ */
+ public boolean verifyProfilesApplied(EList<Profile> profileList) {
+ boolean found = false;
+ int noProfiles = 0;
+ for (Iterator<Profile> profileListIt = profileList.iterator(); profileListIt.hasNext() && noProfiles!=2;) {
+ Profile profile = profileListIt.next();
+ if (profile!=null) {
+ String profileName = profile.getName();
+ switch (profileName) {
+ case "pdp4engDesign":
+ noProfiles++;
+ break;
+
+ case "pdp4engCommonGDPR":
+ noProfiles++;
+ break;
+
+ }
+ }
+ }
+ if (noProfiles==2) {
+ found=true;
+ }
+ return found;
+ }
+
+
+ /**
+ * Return the profile with the given name or null elsewhere
+ * @param profileName
+ * @return
+ */
+ public Profile getProfile(String profileName) {
+ Profile profile = null;
+ for (ProfileApplication profileApplication : this.activityDFD.getModel().getProfileApplications()) {
+ profile = profileApplication.getAppliedProfile();
+ if (profile.getName().equals(profileName)){
+ return profile;
+ }
+ }
+ return profile;
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ApplyPDPbDProfileToActivityDFDCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ApplyPDPbDProfileToActivityDFDCommand.java
new file mode 100644
index 0000000..e537d57
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ApplyPDPbDProfileToActivityDFDCommand.java
@@ -0,0 +1,157 @@
+
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelProfileNames;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.ProfileApplication;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class ApplyPDPbDProfileToActivityDFDCommand extends RecordingCommand {
+
+ protected Activity activityDFD;
+
+ public ApplyPDPbDProfileToActivityDFDCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+ super(domain, "Apply the PDPbD Profile (and profile dependencies) for privacy analysis");
+ this.activityDFD = activityDFD;
+ }
+
+
+ @Override
+ protected void doExecute() {
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+ EList<Element> elementList = this.activityDFD.getNearestPackage().allOwnedElements();
+ if (elementList!=null && PDPbDprofile!=null) {
+ for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+ Element element = elementListIt.next();
+ EClass elementClass = element.eClass();
+ System.out.printf("===>"+elementClass.getName()+"\n");
+ if (elementClass!=null ) {
+ String className = elementClass.getName();
+ switch (className){
+ case "Activity":
+ Stereotype activityStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_Process);
+ if (activityStype!=null) {
+ UMLUtil.safeApplyStereotype(element, activityStype);
+ }
+ break;
+ case "CallBehaviorAction":
+ Stereotype processCallStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_CallProcess);
+ if (processCallStype!=null) {
+ UMLUtil.safeApplyStereotype(element, processCallStype);
+ }
+ break;
+ case "OpaqueAction":
+ Stereotype processCallStype1 = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_CallProcess);
+ if (processCallStype1!=null) {
+ UMLUtil.safeApplyStereotype(element, processCallStype1);
+ }
+ break;
+ case "DataStoreNode":
+ Stereotype dataStoreStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_DataStore);
+ if (dataStoreStype!=null) {
+ UMLUtil.safeApplyStereotype(element, dataStoreStype);
+ }
+ break;
+ case "ActivityParameterNode":
+ Stereotype externalEntityStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_ExternalEntity);
+ if (externalEntityStype!=null) {
+ UMLUtil.safeApplyStereotype(element, externalEntityStype);
+ }
+ break;
+ case "InputPin":
+ Stereotype dataInputStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_DataInput);
+ if (dataInputStype!=null) {
+ UMLUtil.safeApplyStereotype(element, dataInputStype);
+ }
+ break;
+ case "OutputPin":
+ Stereotype dataOutputStype = PDPbDprofile.getOwnedStereotype(ModelProfileNames.PDPbD_DataOutput);
+ if (dataOutputStype!=null) {
+ UMLUtil.safeApplyStereotype(element, dataOutputStype);
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Verify whether the needed profiles have been already loaded in the model
+ * @param profileList
+ * @return
+ */
+ public boolean verifyProfilesApplied(EList<Profile> profileList) {
+ boolean found = false;
+ int noProfiles = 0;
+ for (Iterator<Profile> profileListIt = profileList.iterator(); profileListIt.hasNext() && noProfiles!=2;) {
+ Profile profile = profileListIt.next();
+ if (profile!=null) {
+ String profileName = profile.getName();
+ switch (profileName) {
+ case "pdp4engDesign":
+ noProfiles++;
+ break;
+
+ case "pdp4engCommonGDPR":
+ noProfiles++;
+ break;
+
+ }
+ }
+ }
+ if (noProfiles==2) {
+ found=true;
+ }
+ return found;
+ }
+
+
+ /**
+ * Return the profile with the given name or null elsewhere
+ * @param profileName
+ * @return
+ */
+ public Profile getProfile(String profileName) {
+ Profile profile = null;
+ for (ProfileApplication profileApplication : this.activityDFD.getModel().getProfileApplications()) {
+ profile = profileApplication.getAppliedProfile();
+ if (profile.getName().equals(profileName)){
+ return profile;
+ }
+ }
+ return profile;
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/CallProcessToProcessCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/CallProcessToProcessCommand.java
new file mode 100644
index 0000000..680c01c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/CallProcessToProcessCommand.java
@@ -0,0 +1,98 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import java.util.ArrayList;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityParameterNode;
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.UMLFactory;
+
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class CallProcessToProcessCommand extends RecordingCommand {
+ protected OpaqueAction callProcess;
+
+ public CallProcessToProcessCommand(TransactionalEditingDomain domain, OpaqueAction callProcess) {
+ super(domain, "Transfor a call process (OpaqueAction) to a process (CallBehaviorAction + Activity)");
+ this.callProcess = callProcess;
+ }
+
+
+ @Override
+ protected void doExecute() {
+ // Create a new Activity within the root package containing the OpaqueAction
+ Package owner= callProcess.getNearestPackage();
+ Activity newProcess= UMLFactory.eINSTANCE.createActivity();
+ newProcess.setName(callProcess.getName());
+ owner.getPackagedElements().add(newProcess);
+ // Create a new CallBehaviorAction and set it as behavior of the new Activity
+ CallBehaviorAction callBehaviorAction=UMLFactory.eINSTANCE.createCallBehaviorAction();
+ callProcess.getActivity().getOwnedNodes().add(callBehaviorAction);
+ callBehaviorAction.setName(callProcess.getName());
+ callBehaviorAction.setBehavior(newProcess);
+
+ // For each Input pin of the OpaqueAction create a new ActivityParameterNode
+ // Each ActivityParameterNode is added to the new Activity
+ ArrayList<Pin> list=new ArrayList<Pin>();
+ for (InputPin input : callProcess.getInputValues()) {
+ ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+ parameter.setName(input.getName());
+ parameter.setType(input.getType());
+ newProcess.getOwnedNodes().add(parameter);
+ list.add(input);
+
+ }
+ // The Input pins in the OpaqueAction are added to the CallBehaviorAction
+ // The OpaqueAction can be replaced by the CallBehaviorAction
+ for (Pin pin : list) {
+ callBehaviorAction.getArguments().add((InputPin)pin);
+ }
+ list.clear();
+ // For each Output pin of the OpaqueAction create a new ActivityParameterNode
+ // Each ActivityParameterNode is added to the new Activity
+ for (OutputPin output : callProcess.getOutputValues()) {
+ ActivityParameterNode parameter=UMLFactory.eINSTANCE.createActivityParameterNode();
+ parameter.setName(output.getName());
+ parameter.setType(output.getType());
+ newProcess.getOwnedNodes().add(parameter);
+ list.add(output);
+
+ }
+ // The Output pins in the OpaqueAction are added to the CallBehaviorAction
+ // The OpaqueAction can be replaced by the CallBehaviorAction
+ for (Pin pin : list) {
+ callBehaviorAction.getResults().add((OutputPin)pin);
+ }
+
+ // The code that follows is intended to remove the OpaqueAction
+ // Code to be reviewed!!
+ callProcess.getActivity().getOwnedNodes().remove(callProcess);
+ //callProcess.destroy();
+
+ }
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/InstantiateGDPRConsentPatternCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/InstantiateGDPRConsentPatternCommand.java
new file mode 100644
index 0000000..b8090cc
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/InstantiateGDPRConsentPatternCommand.java
@@ -0,0 +1,40 @@
+
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.uml.properties.profile.ui.dialogs.ChooseSetStereotypeDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Activity;
+
+public class InstantiateGDPRConsentPatternCommand extends RecordingCommand {
+
+ protected Activity Process;
+
+ public InstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity Process) {
+ super(domain, "Instantiate a Consent Pattern based upon the information provided by the engineer");
+ this.Process = Process;
+ }
+
+ @Override
+ protected void doExecute() {
+ ChooseSetStereotypeDialog dialog = new ChooseSetStereotypeDialog(Display.getCurrent().getActiveShell(), Process);
+ dialog.open();
+ System.out.printf("==>>"+Process.toString());
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ModelTransfoFactoryImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ModelTransfoFactoryImpl.java
new file mode 100644
index 0000000..a55cdd4
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/ModelTransfoFactoryImpl.java
@@ -0,0 +1,84 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.IdentityCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.IModelTransfo;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;
+import org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation.ProcessDFDCreateCommand;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+/**
+ * This factory is an implementation of a factory that gives command to execute model transformation
+ * to used it see {@link ModelTransfoFactory}
+ */
+public class ModelTransfoFactoryImpl implements IModelTransfo{
+
+ /**
+ * return a command to create an abstraction from a given Data
+ * @param domain
+ * @param data
+ * @return a command, it is never null
+ */
+ public Command getAbstractionDataCommand(TransactionalEditingDomain domain, org.eclipse.uml2.uml.Element data) {
+ if( data instanceof NamedElement) {
+ Data appliedStereotypedata= (Data)UMLUtil.getStereotypeApplication(data, Data.class);
+ if( appliedStereotypedata!=null) {
+ return new AbstractDataCreateCommand(domain, (NamedElement)data);
+ }
+ }
+ return IdentityCommand.INSTANCE;
+
+ }
+
+ @Override
+ public Command getCreateProcessModelFromReq(TransactionalEditingDomain domain, Package owner,Activity ReqDFDSource) {
+ return new ProcessDFDCreateCommand(domain, owner,ReqDFDSource);
+ }
+
+ @Override
+ public Command getCallProcessToProcessCommand(TransactionalEditingDomain domain, OpaqueAction process) {
+ return new CallProcessToProcessCommand(domain, process);
+ }
+
+ @Override
+ public Command getActionCallProcessToProcessCommand(TransactionalEditingDomain domain, Action actionCallProcess) {
+ return new ActionCallProcessToProcessCommand(domain, actionCallProcess);
+ }
+
+ public Command getAllCallProcessToProcessCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+ return new AllCallProcessToProcessCommand(domain, activityDFD);
+ }
+
+ @Override
+ public Command getApplyPDPbDProfileToActivityDFDCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+ return new ApplyPDPbDProfileToActivityDFDCommand(domain, activityDFD);
+ }
+
+ @Override
+ public Command getInstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity process) {
+ return new InstantiateGDPRConsentPatternCommand(domain, process);
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ActivityProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ActivityProcessCreation.java
new file mode 100644
index 0000000..b722da0
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ActivityProcessCreation.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import java.util.Iterator;
+
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.UMLFactory;
+
+public class ActivityProcessCreation implements IProcessCreation {
+
+
+
+ @Override
+ public Element createElement(Element source, Element owner) {
+
+ if( owner instanceof Package) {
+ Activity anActivity= UMLFactory.eINSTANCE.createActivity();
+ ((Package)owner).getPackagedElements().add(anActivity);
+ anActivity.setName(((Activity)source).getName());
+ for (Iterator<ActivityNode> iterator = ((Activity)source).getNodes().iterator(); iterator.hasNext();) {
+ ProcessBuilder.getInstance().createElement(iterator.next(), anActivity);
+ }
+ for (Iterator<ActivityEdge> iterator = ((Activity)source).getEdges().iterator(); iterator.hasNext();) {
+ ProcessBuilder.getInstance().createElement(iterator.next(), anActivity);
+ }
+ ProcessBuilder.createSatisfy((NamedElement)source, (NamedElement)anActivity);
+ return anActivity;
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataProcessCreation.java
new file mode 100644
index 0000000..ce9eb01
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataProcessCreation.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+
+public class DataProcessCreation implements IProcessCreation {
+
+
+
+ @Override
+ public Element createElement(Element data, Element pin) {
+ if( data instanceof org.eclipse.uml2.uml.Class) {
+ org.eclipse.uml2.uml.Class aClass=(Class)pin.getNearestPackage().getOwnedType((((org.eclipse.uml2.uml.Class)data).getName()), false, UMLPackage.eINSTANCE.getClass_(), false);
+ if(aClass==null) {
+ aClass= UMLFactory.eINSTANCE.createClass();
+ pin.getNearestPackage().getPackagedElements().add(aClass);
+ }
+ ((org.eclipse.uml2.uml.Pin)pin).setType(aClass);
+ aClass.setName(((org.eclipse.uml2.uml.Class)data).getName());
+ return aClass;
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataStoreProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataStoreProcessCreation.java
new file mode 100644
index 0000000..e81d640
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/DataStoreProcessCreation.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityParameterNode;
+import org.eclipse.uml2.uml.DataStoreNode;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.UMLFactory;
+
+public class DataStoreProcessCreation implements IProcessCreation {
+
+
+
+ private boolean seekParameter;
+ private boolean sourceParameter;
+ @Override
+ public Element createElement(Element dataStore, Element activity) {
+ if( dataStore instanceof DataStoreNode) {
+ DataStoreNode dataStoreNode=(DataStoreNode)dataStore;
+ if( dataStoreNode.getIncomings().size()==0 && sourceParameter) {
+ ActivityParameterNode activityParameterNode= UMLFactory.eINSTANCE.createActivityParameterNode();
+ ((Activity) activity).getOwnedNodes().add(activityParameterNode);
+ activityParameterNode.setName(((DataStoreNode)dataStore).getName());
+ ProcessBuilder.createSatisfy((NamedElement)activityParameterNode, (NamedElement)dataStore);
+ }
+ else if( dataStoreNode.getOutgoings().size()==0&& seekParameter) {
+ ActivityParameterNode activityParameterNode= UMLFactory.eINSTANCE.createActivityParameterNode();
+ ((Activity) activity).getOwnedNodes().add(activityParameterNode);
+ activityParameterNode.setName(((DataStoreNode)dataStore).getName());
+ ProcessBuilder.createSatisfy((NamedElement)activityParameterNode, (NamedElement)dataStore);
+ }
+ else {
+ DataStoreNode aDataStoreNode= UMLFactory.eINSTANCE.createDataStoreNode();
+ ((Activity) activity).getOwnedNodes().add(aDataStoreNode);
+ aDataStoreNode.setName(((DataStoreNode)dataStore).getName());
+ ProcessBuilder.createSatisfy((NamedElement)aDataStoreNode, (NamedElement)dataStore);
+ return aDataStoreNode;
+ }
+ }
+ return null;
+ }
+
+ public void generateParameterForSeek(boolean value) {
+ this.seekParameter=value;
+ }
+ public void generateParameterForSource(boolean value) {
+ this.sourceParameter=value;
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/IProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/IProcessCreation.java
new file mode 100644
index 0000000..c7b910a
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/IProcessCreation.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import org.eclipse.uml2.uml.Element;
+
+public interface IProcessCreation {
+
+ /**
+ * create a element from the source inside the owner.
+ * @param source the source of the creation
+ * @param owner the owner of the element
+ * @return result of the creation
+ */
+ public Element createElement(Element source, Element owner);
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/InputPinProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/InputPinProcessCreation.java
new file mode 100644
index 0000000..31c4d85
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/InputPinProcessCreation.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.UMLFactory;
+
+public class InputPinProcessCreation implements IProcessCreation {
+
+
+
+ @Override
+ public Element createElement(Element inputPin, Element opaqueAction) {
+ if( inputPin instanceof InputPin) {
+ InputPin anInputPin= UMLFactory.eINSTANCE.createInputPin();
+ ((OpaqueAction) opaqueAction).getInputValues().add(anInputPin);
+ anInputPin.setName(((InputPin)inputPin).getName());
+ if( ((Pin)inputPin).getType()!=null) {
+ ProcessBuilder.getInstance().createElement(((Pin)inputPin).getType(), anInputPin);
+ }
+ return anInputPin;
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ObjectFlowProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ObjectFlowProcessCreation.java
new file mode 100644
index 0000000..ffe3b79
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ObjectFlowProcessCreation.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.ObjectFlow;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.UMLFactory;
+
+public class ObjectFlowProcessCreation implements IProcessCreation {
+
+
+
+ @Override
+ public Element createElement(Element objectFlow, Element activity) {
+ if( objectFlow instanceof ObjectFlow) {
+
+ ObjectFlow anObjectFlow= UMLFactory.eINSTANCE.createObjectFlow();
+ ((Activity)activity).getEdges().add(anObjectFlow);
+ //set source
+ ActivityNode sourceNode=((ObjectFlow)objectFlow).getSource();
+ if(sourceNode instanceof OutputPin) {
+ ActivityNode OpaqueBehaviorSource= (ActivityNode)((OutputPin)sourceNode).getOwner();
+ OpaqueAction opaqueActionResult= (OpaqueAction) ((Activity)activity).getNode(OpaqueBehaviorSource.getName());
+ OutputPin outputPinResult= opaqueActionResult.getOutputValue(sourceNode.getName(), null);
+ anObjectFlow.setSource(outputPinResult);
+ }
+ else {
+ ActivityNode opaqueActionResult= (ActivityNode) ((Activity)activity).getNode(sourceNode.getName());
+ anObjectFlow.setSource(opaqueActionResult);
+ }
+ //set target
+ ActivityNode targetNode=((ObjectFlow)objectFlow).getTarget();
+ if(targetNode instanceof InputPin) {
+ ActivityNode OpaqueBehaviorSource= (ActivityNode)((InputPin)targetNode).getOwner();
+ OpaqueAction opaqueActionResult= (OpaqueAction) ((Activity)activity).getNode(OpaqueBehaviorSource.getName());
+ InputPin inputPinResult= opaqueActionResult.getInputValue(targetNode.getName(), null);
+ anObjectFlow.setTarget(inputPinResult);
+ }
+ else {
+ ActivityNode opaqueActionResult= (ActivityNode) ((Activity)activity).getNode(targetNode.getName());
+ anObjectFlow.setTarget(opaqueActionResult);
+ }
+ ProcessBuilder.createSatisfy((NamedElement)anObjectFlow, (NamedElement)objectFlow);
+ return anObjectFlow;
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OpaqueActionProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OpaqueActionProcessCreation.java
new file mode 100644
index 0000000..4fb93e3
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OpaqueActionProcessCreation.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import java.util.Iterator;
+
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.UMLFactory;
+
+public class OpaqueActionProcessCreation implements IProcessCreation {
+
+
+
+ @Override
+ public Element createElement(Element opaqueAction, Element activity) {
+ if( activity instanceof Activity) {
+ OpaqueAction anOpaqueAction= UMLFactory.eINSTANCE.createOpaqueAction();
+ ((Activity) activity).getOwnedNodes().add(anOpaqueAction);
+ anOpaqueAction.setName(((OpaqueAction)opaqueAction).getName());
+ for (Iterator<InputPin> iterator = ((OpaqueAction)opaqueAction).getInputValues().iterator(); iterator.hasNext();) {
+ ProcessBuilder.getInstance().createElement(iterator.next(), anOpaqueAction);
+ }
+ for (Iterator<OutputPin> iterator = ((OpaqueAction)opaqueAction).getOutputValues().iterator(); iterator.hasNext();) {
+ ProcessBuilder.getInstance().createElement(iterator.next(), anOpaqueAction);
+ }
+ ProcessBuilder.createSatisfy((NamedElement)anOpaqueAction, (NamedElement)opaqueAction);
+ return anOpaqueAction;
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OutputPinProcessCreation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OutputPinProcessCreation.java
new file mode 100644
index 0000000..0c9a44f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/OutputPinProcessCreation.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.OpaqueAction;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.UMLFactory;
+
+public class OutputPinProcessCreation implements IProcessCreation {
+
+
+
+ @Override
+ public Element createElement(Element outputPin, Element opaqueAction) {
+ if( outputPin instanceof OutputPin) {
+ OutputPin anOutputPin= UMLFactory.eINSTANCE.createOutputPin();
+ ((OpaqueAction) opaqueAction).getOutputValues().add(anOutputPin);
+ anOutputPin.setName(((OutputPin)outputPin).getName());
+ if( ((Pin)outputPin).getType()!=null) {
+ ProcessBuilder.getInstance().createElement(((Pin)outputPin).getType(), anOutputPin);
+ }
+ return anOutputPin;
+ }
+ return null;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessBuilder.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessBuilder.java
new file mode 100644
index 0000000..3222da1
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessBuilder.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.requirements.sysml14.common.I_SysMLStereotype;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+
+public class ProcessBuilder implements IProcessCreation {
+ private HashMap<EClass, IProcessCreation> processCreations= new HashMap<EClass, IProcessCreation>();
+ private static ProcessBuilder builder=null;
+ public static ProcessBuilder getInstance() {
+ if( builder==null) {
+ builder= new ProcessBuilder();
+ }
+ return builder;
+ }
+
+
+ private ProcessBuilder() {
+ processCreations.put(UMLPackage.eINSTANCE.getActivity(), new ActivityProcessCreation());
+ processCreations.put(UMLPackage.eINSTANCE.getOpaqueAction(), new OpaqueActionProcessCreation());
+ processCreations.put(UMLPackage.eINSTANCE.getInputPin(), new InputPinProcessCreation());
+ processCreations.put(UMLPackage.eINSTANCE.getOutputPin(), new OutputPinProcessCreation());
+ processCreations.put(UMLPackage.eINSTANCE.getDataStoreNode(), new DataStoreProcessCreation());
+ processCreations.put(UMLPackage.eINSTANCE.getObjectFlow(), new ObjectFlowProcessCreation());
+ processCreations.put(UMLPackage.eINSTANCE.getClass_(), new DataProcessCreation());
+
+ }
+ public HashMap<EClass, IProcessCreation> getProcessTransfo(){
+ return processCreations;
+ }
+ @Override
+ public Element createElement(Element source, Element owner) {
+ for (Iterator<EClass> keyIterator = processCreations.keySet().iterator(); keyIterator.hasNext();) {
+ EClass currentEclass = (EClass) keyIterator.next();
+ if (currentEclass.isInstance(source)) {
+ return processCreations.get(currentEclass).createElement(source, owner);
+ }
+ }
+ return null;
+ }
+
+ public static void createSatisfy(NamedElement source, NamedElement target) {
+ Abstraction theAbstraction = UMLFactory.eINSTANCE.createAbstraction();
+ source.getNearestPackage().getPackagedElements().add(theAbstraction);
+ theAbstraction.getSuppliers().add(target);
+ theAbstraction.getClients().add(source);
+ theAbstraction.setName("Satisfies_" + target.getName());
+ Stereotype satisfyStereotype = theAbstraction.getApplicableStereotype(I_SysMLStereotype.SATISFY_STEREOTYPE);
+ if(satisfyStereotype!=null) {
+ theAbstraction.applyStereotype(satisfyStereotype);
+ }
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessDFDCreateCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessDFDCreateCommand.java
new file mode 100644
index 0000000..c3d009e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/ProcessDFDCreateCommand.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Creates an abstraction from Data.
+ *
+ */
+public class ProcessDFDCreateCommand extends RecordingCommand {
+ protected NamedElement selectedElement;
+ private Package owner;
+ private Activity reqDFDSource;
+
+ public ProcessDFDCreateCommand(TransactionalEditingDomain domain, Package owner,Activity ReqDFDSource) {
+ super(domain, "AbstractDataCreateCommand");
+ this.owner=owner;
+ this.reqDFDSource=ReqDFDSource;
+ }
+
+
+
+ @Override
+ protected void doExecute() {
+ RulesInformation rulesInformation= new RulesInformation(new Shell());
+ DataStoreProcessCreation dataStoreProcessCreation= new DataStoreProcessCreation();
+ rulesInformation.open();
+ dataStoreProcessCreation.generateParameterForSeek(rulesInformation.generateSeekAsParameter());
+ dataStoreProcessCreation.generateParameterForSource(rulesInformation.generateSourceAsParameter());
+ ProcessBuilder.getInstance().getProcessTransfo().put(UMLPackage.eINSTANCE.getDataStoreNode(), dataStoreProcessCreation);
+ ProcessBuilder.getInstance().createElement(this.reqDFDSource, this.owner);
+ }
+
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/RulesInformation.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/RulesInformation.java
new file mode 100644
index 0000000..61ab8a0
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.controller/src/org/eclipse/papyrus/pdp4eng/designer/controller/internal/processcreation/RulesInformation.java
@@ -0,0 +1,116 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Dialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+class RulesInformation extends Dialog {
+
+ private boolean seekParameter=false;
+ private boolean sourceParameter=false;
+
+ public RulesInformation(Shell parent) {
+ this(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
+ }
+
+ public RulesInformation(Shell parent, int style) {
+ super(parent, style);
+
+ }
+
+ public void open() {
+ Shell shell = new Shell(getParent(), getStyle());
+ shell.setText("Rules generation");
+ shell.setSize(400,200);
+ createContents(shell);
+ shell.pack();
+ shell.open();
+ Display display = getParent().getDisplay();
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ }
+
+ public boolean generateSeekAsParameter() {
+ return seekParameter;
+ }
+ public boolean generateSourceAsParameter() {
+ return sourceParameter;
+
+ }
+ private void createContents(final Shell shell) {
+ shell.setLayout(new GridLayout(2, true));
+
+ GridData data = new GridData();
+
+ Button sourceDataButton = new Button (shell, SWT.CHECK);
+ sourceDataButton.setText("Generate a ParameterNode for each source DataStore node");
+ sourceDataButton.setSelection(true);
+ data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 2;
+ sourceDataButton.setLayoutData(data);
+
+ Button seekDataButton = new Button (shell, SWT.CHECK);
+ seekDataButton.setText("Generate a ParameterNode for each seek DataStore node");
+ seekDataButton.setSelection(true);
+ data = new GridData(GridData.FILL_HORIZONTAL);
+ data.horizontalSpan = 2;
+ seekDataButton.setLayoutData(data);
+
+
+
+ Button ok = new Button(shell, SWT.PUSH);
+ ok.setText("OK");
+ data = new GridData(GridData.FILL_HORIZONTAL);
+ ok.setLayoutData(data);
+ ok.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+
+ seekParameter=seekDataButton.getSelection();
+ sourceParameter=sourceDataButton.getSelection();
+ shell.close();
+ }
+ });
+
+
+ shell.setDefaultButton(ok);
+ }
+ public static void main(String[] args) {
+ Display display = new Display();
+ Shell shell = new Shell(display);
+ shell.setSize(400, 100);
+
+ RulesInformation dlg = new RulesInformation(shell);
+ dlg.open();
+
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ display.dispose();
+ }
+}
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <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.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.project
new file mode 100644
index 0000000..1358cae
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.datastrategies</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..472dc29
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.datastrategies;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.strategies
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.papyrus.pdp4eng.designer.engine;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.1,2.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.119.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.117.0,4.0.0)"
+Bundle-Activator: org.eclipse.papyrus.pdp4eng.designer.datastrategies.Activator
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.datastrategies
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/build.properties
new file mode 100644
index 0000000..0dc34f7
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.properties
new file mode 100644
index 0000000..539400c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design data strategies
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.xml
new file mode 100644
index 0000000..5de9ef3
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+<extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.eclipse.papyrus.pdp4eng.designer.datastrategies.Activator"></startup>
+ </extension>
+
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/pom.xml
new file mode 100644
index 0000000..ddd7820
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.datastrategies</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/Activator.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/Activator.java
new file mode 100644
index 0000000..00ef80b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/Activator.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA.
+ * Any use is subject to specific agreement with the CEA.
+ * Contributors:
+ *
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) - API extensions and modifications
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.datastrategies;
+
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.CatalogFactory;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.StrategyEngineFactory;
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+
+
+
+public class Activator extends AbstractUIPlugin implements IStartup{
+ // The plug-in ID
+ public static final String pluginId = "org.eclipse.papyrus.pdp4eng.designer.datastrategies";
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ Activator.plugin = this;
+
+ StrategyEngineFactory engineFactory= StrategyEngineFactory.getInstance();
+ CatalogFactory catalogFactory= new CatalogFactory();
+ IStrategyCatalog catalog=catalogFactory.createCatalog("Data-oriented Strategies");
+ catalog.addStrategy(new KanonymityStrategy());
+ engineFactory.getCurrentEngine().connectACatalog(catalog);
+ //System.out.printf(catalog.toString());
+
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ Activator.plugin = null;
+ super.stop(context);
+
+ }
+
+ @Override
+ public void earlyStartup() {
+ // TODO Auto-generated method stub
+
+ }
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return Activator.plugin;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/KanonymityStrategy.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/KanonymityStrategy.java
new file mode 100644
index 0000000..9443a6c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/KanonymityStrategy.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA.
+ * Any use is subject to specific agreement with the CEA.
+ * Contributors:
+ *
+ * Gabriel Pedroza (CEA LIST) - API extensions and modifications
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.datastrategies;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.datastrategies.command.KAnonymityCommand;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.uml2.uml.Element;
+
+public class KanonymityStrategy implements IStrategy {
+
+ @Override
+ public String getName() {
+ return "K Anonymity Strategy";
+ }
+
+ @Override
+ public String getGoal() {
+ return "Apply K-anonymity algorithm";
+ }
+
+ @Override
+ public boolean canBeApplied(Element element) {
+ if( element instanceof org.eclipse.uml2.uml.NamedElement) {return true;}
+ return false;
+ }
+
+ @Override
+ public Command getCommand(Element element, TransactionalEditingDomain domain) {
+ // TODO Auto-generated method stub
+ return new KAnonymityCommand(domain, element);
+
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/command/KAnonymityCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/command/KAnonymityCommand.java
new file mode 100644
index 0000000..15fb35e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/command/KAnonymityCommand.java
@@ -0,0 +1,305 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA.
+ * Any use is subject to specific agreement with the CEA.
+ * Contributors:
+ *
+ * Gabriel Pedroza (CEA LIST) - API extensions and modifications
+ *
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.datastrategies.command;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.datastrategies.ui.KAnonymityDialog;
+import org.eclipse.papyrus.pdp4eng.designer.datastrategies.ui.KAnonymityOutcomesDialog;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+
+
+public class KAnonymityCommand extends RecordingCommand {
+
+ public Element elmt;
+
+ public KAnonymityCommand(TransactionalEditingDomain domain, Element element) {
+ super(domain);
+ this.elmt = element;
+ // TODO Auto-generated constructor stub
+ }
+
+ public KAnonymityCommand(TransactionalEditingDomain domain, String label) {
+ super(domain, label);
+ // TODO Auto-generated constructor stub
+ }
+
+ public KAnonymityCommand(TransactionalEditingDomain domain, String label, String description) {
+ super(domain, label, description);
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ protected void doExecute() {
+ // TODO Auto-generated method stub
+ EList<Stereotype> selectedStereotypeList = elmt.getAppliedStereotypes();
+ EList<Element> tableElementsList = new BasicEList<Element>();
+ if (selectedStereotypeList.size()>0) {
+ // Get the stereotype from the element selected
+ Stereotype selectedStereotype = selectedStereotypeList.get(0);
+ if (selectedStereotype!=null) {
+
+ // Gather all elements having the selected stereotype
+ tableElementsList = getTableElementsList(selectedStereotype);
+
+ // Create and open the k-anonymity dialog
+ KAnonymityDialog kAnonymityDialog=new KAnonymityDialog(selectedStereotype);
+ kAnonymityDialog.open();
+
+ ArrayList<Property> propertiesList = kAnonymityDialog.getSelectedProperty();
+
+ EList<Element> KanonymizedTable = computeEqualitySetsWrtQI(selectedStereotype, tableElementsList, propertiesList);
+
+ ArrayList<Integer> cardinalityEqualitySetsQI = computeEqualitySetsCardinalityWrtQI(selectedStereotype, tableElementsList, propertiesList);
+
+ for (Iterator<Integer> cardinalityEqualitySetsQIIt = cardinalityEqualitySetsQI.iterator(); cardinalityEqualitySetsQIIt.hasNext();) {
+ System.out.println("Cardinality: "+cardinalityEqualitySetsQIIt.next().toString());
+ }
+ int kAnonymityTarget = kAnonymityDialog.getKvalue();
+ int kAnonymityValue = KAnonymityAlgorithm(selectedStereotype, tableElementsList, propertiesList);
+
+ System.out.println("K-anonymity value: "+ kAnonymityValue);
+
+ int[] lowerUpperBounds = computeLowerUpperBounds(selectedStereotype, tableElementsList, propertiesList);
+
+
+ KAnonymityOutcomesDialog kAnonymityOutcomes = new KAnonymityOutcomesDialog(KanonymizedTable,
+ propertiesList,
+ kAnonymityTarget,
+ kAnonymityValue, lowerUpperBounds);
+
+ }
+ }
+ }
+
+ /**
+ *
+ * @param stereotype
+ * @return
+ */
+ public EList<Element> getTableElementsList(Stereotype stereotype){
+ EList<Element> tableElementsList = new BasicEList<Element>();
+
+ // Gather all elements within the parent package
+ PackageableElement parentPackage = elmt.getModel().getNearestPackage();
+ if (parentPackage!=null) {
+ EList<Element> parentPackageElements = parentPackage.getOwnedElements();
+ // Filter elements according to the chosen stereotype
+ for (Iterator<Element> elementsListIt = parentPackageElements.iterator(); elementsListIt.hasNext() ;){
+ Element tgtElement = elementsListIt.next();
+ if ((tgtElement!=null) && (tgtElement instanceof org.eclipse.uml2.uml.Classifier) ){
+ Classifier tgtClassElement = (Classifier) tgtElement;
+ // Obtain list of applied stereotypes
+ EList<Stereotype> tgtClassStLst = tgtClassElement.getAppliedStereotypes();
+ // Find if the list includes the chosen stereotype
+ if (tgtClassStLst!=null){
+ boolean notfound = true;
+ for (Iterator<Stereotype> tgtClassStLstIt = tgtClassStLst.iterator(); tgtClassStLstIt.hasNext() && notfound;){
+ Stereotype tgtClassSt = tgtClassStLstIt.next();
+ if (tgtClassSt!=null && tgtClassSt.getName().equals(stereotype.getName())){
+ notfound = false;
+ if (!tableElementsList.contains(tgtElement)){
+ tableElementsList.add((Element) tgtElement);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return tableElementsList;
+ }
+
+ /**
+ *
+ * @param stereotype
+ * @param rowElement1
+ * @param rowElement2
+ * @param QuasiIdentifiers
+ * @return
+ */
+ public boolean compareTwoRowElements(Stereotype stereotype, Element rowElement1, Element rowElement2, ArrayList<Property> QuasiIdentifiers) {
+ boolean result = true;
+ for (Iterator<Property> QuasiIdentifierIt = QuasiIdentifiers.iterator(); QuasiIdentifierIt.hasNext() && result;) {
+ Property property = QuasiIdentifierIt.next();
+ if (rowElement1!=null &&
+ rowElement2!= null &&
+ rowElement1.getValue(stereotype, property.getName())!=null &&
+ rowElement2.getValue(stereotype, property.getName())!=null) {
+ if (!(rowElement1.getValue(stereotype, property.getName()).equals(rowElement2.getValue(stereotype, property.getName()))) ) {
+ result = false;
+ }
+ } else {
+ result = false;
+ }
+ }
+ return result;
+ }
+
+ /**
+ *
+ * @param stereotype
+ * @param refRowElement
+ * @param tableElementsList
+ * @param QuasiIdentifiers
+ * @return
+ */
+ public int countEqualRowsWrtQuasiIdentifiers(Stereotype stereotype, Element refRowElement, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers) {
+ int result = 0;
+ Element element;
+ for (Iterator<Element> tableElementsListIt = tableElementsList.iterator(); tableElementsListIt.hasNext();) {
+ element = tableElementsListIt.next();
+ if (element!=null && element instanceof org.eclipse.uml2.uml.Classifier) {
+ if (compareTwoRowElements(stereotype, refRowElement, element, QuasiIdentifiers)) {
+ result++;
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ *
+ * @param stereotype
+ * @param refRowElement
+ * @param tableElementsList
+ * @param QuasiIdentifiers
+ * @return
+ */
+ public EList<Element> getEqualRowsWrtQuasiIdentifiers(Stereotype stereotype, Element refRowElement, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers) {
+ EList<Element> equalityElementsWrtQI = new BasicEList<Element>();
+ Element element;
+ for (Iterator<Element> tableElementsListIt = tableElementsList.iterator(); tableElementsListIt.hasNext();) {
+ element = tableElementsListIt.next();
+ if (element!=null && element instanceof org.eclipse.uml2.uml.Classifier) {
+ if (compareTwoRowElements(stereotype, refRowElement, element, QuasiIdentifiers)) {
+ equalityElementsWrtQI.add(element);
+ }
+ }
+ }
+ return equalityElementsWrtQI;
+ }
+
+ /**
+ *
+ * @param stereotype
+ * @param tableElementsList
+ * @param QuasiIdentifiers
+ * @return
+ */
+ public ArrayList<Integer> computeEqualitySetsCardinalityWrtQI(Stereotype stereotype, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers){
+ ArrayList<Integer> cardinalityEqualitySetsQI = new ArrayList<Integer>();
+ EList<Element> equalityElementsWrtQI = new BasicEList<Element>();
+ if (stereotype!=null && tableElementsList!=null && QuasiIdentifiers!=null &&
+ tableElementsList.size()>0 && QuasiIdentifiers.size()>0) {
+ int cardinality = 0;
+ for (Iterator<Element> tableElementsListIt = tableElementsList.iterator(); tableElementsListIt.hasNext();) {
+ Element element = tableElementsListIt.next();
+ if (countEqualRowsWrtQuasiIdentifiers(stereotype, element, equalityElementsWrtQI, QuasiIdentifiers)==0) {
+ cardinality = countEqualRowsWrtQuasiIdentifiers(stereotype, element, tableElementsList, QuasiIdentifiers);
+ cardinalityEqualitySetsQI.add(cardinality);
+ equalityElementsWrtQI.add(element);
+ }
+ }
+ }
+ return cardinalityEqualitySetsQI;
+ }
+
+ /**
+ *
+ * @param stereotype
+ * @param tableElementsList
+ * @param QuasiIdentifiers
+ * @return
+ */
+ public EList<Element> computeEqualitySetsWrtQI(Stereotype stereotype, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers){
+ EList<Element> equalityElementsWrtQI = new BasicEList<Element>();
+ if (stereotype!=null && tableElementsList!=null && QuasiIdentifiers!=null &&
+ tableElementsList.size()>0 && QuasiIdentifiers.size()>0) {
+ for (Iterator<Element> tableElementsListIt = tableElementsList.iterator(); tableElementsListIt.hasNext();) {
+ Element element = tableElementsListIt.next();
+ if (countEqualRowsWrtQuasiIdentifiers(stereotype, element, equalityElementsWrtQI, QuasiIdentifiers)==0) {
+ equalityElementsWrtQI.addAll(getEqualRowsWrtQuasiIdentifiers(stereotype, element, tableElementsList, QuasiIdentifiers));
+ }
+ }
+ }
+ return equalityElementsWrtQI;
+ }
+
+ /**
+ *
+ * @param stereotype
+ * @param tableElementsList
+ * @param QuasiIdentifiers
+ * @return
+ */
+ public int KAnonymityAlgorithm(Stereotype stereotype, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers) {
+ int kvalue = 0;
+ ArrayList<Integer> cardinalityEqualitySetsQI = new ArrayList<Integer>();
+ if (stereotype!=null && tableElementsList!=null && QuasiIdentifiers != null &&
+ tableElementsList.size()>0 && QuasiIdentifiers.size()>0) {
+ cardinalityEqualitySetsQI = computeEqualitySetsCardinalityWrtQI(stereotype, tableElementsList, QuasiIdentifiers);
+ if (cardinalityEqualitySetsQI!=null && cardinalityEqualitySetsQI.size()>0) {
+ kvalue = cardinalityEqualitySetsQI.get(0);
+ for (Iterator<Integer> cardinalityEqualitySetsQIIt = cardinalityEqualitySetsQI.iterator();
+ cardinalityEqualitySetsQIIt.hasNext();) {
+ Integer value = cardinalityEqualitySetsQIIt.next();
+ if (value < kvalue) {
+ kvalue = value;
+ }
+ }
+ }
+ }
+
+ return kvalue;
+ }
+
+ /**
+ *
+ * @param stereotype
+ * @param tableElementsList
+ * @param QuasiIdentifiers
+ * @return
+ */
+ public int[] computeLowerUpperBounds(Stereotype stereotype, EList<Element> tableElementsList, ArrayList<Property> QuasiIdentifiers){
+ int[] lowerUpperBounds = new int[2];
+ ArrayList<Integer> equalitySetsCardinality = computeEqualitySetsCardinalityWrtQI(stereotype, tableElementsList, QuasiIdentifiers);
+ int kvalue = KAnonymityAlgorithm(stereotype, tableElementsList, QuasiIdentifiers);
+ int lower = 0;
+ int upper = 0;
+ boolean notfound = true;
+ for (Iterator<Integer> equalitySetsCardinalityIt = equalitySetsCardinality.iterator(); equalitySetsCardinalityIt.hasNext() && notfound; ) {
+ Integer aux = equalitySetsCardinalityIt.next();
+ if (aux == kvalue) {
+ notfound=false;
+ } else {
+ lower += aux;
+ }
+ }
+ upper = lower + kvalue;
+ lowerUpperBounds[0] = lower;
+ lowerUpperBounds[1] = upper;
+
+ return lowerUpperBounds;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityDialog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityDialog.java
new file mode 100644
index 0000000..d357ef6
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityDialog.java
@@ -0,0 +1,254 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA.
+ * Any use is subject to specific agreement with the CEA.
+ * Contributors:
+ *
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) - API extensions and modifications
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.datastrategies.ui;
+
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.UMLFactory;
+
+/**
+ *
+ */
+public class KAnonymityDialog {
+ protected Object result=null;
+
+
+ protected Display display;
+ protected Shell shell;
+ protected Button okbt;
+ protected Button cancelbt;
+
+
+ protected Stereotype stereotype=null;
+
+ protected boolean canExecute=false;
+ protected ArrayList<Table> tableList= new ArrayList<Table>();
+ protected ArrayList<Property> selectedProperties= new ArrayList<Property>();
+
+
+ protected Text textCell;
+ protected int kvalue;
+
+
+ public KAnonymityDialog(Stereotype stereotype) {
+
+ this.stereotype=stereotype;
+
+
+ display = Display.getDefault();
+ shell = new Shell(display);
+
+ shell.setSize(250, 200);
+ shell.setText("K-Anonymity");
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ shell.setLayout(gl);
+
+ final Table table = new Table(shell, SWT.BORDER | SWT.CHECK | SWT.MULTI | SWT.FULL_SELECTION);
+
+ TableViewer viewer= new TableViewer(table);
+
+
+ viewer.getTable().addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ if ((event.detail == SWT.CHECK) && (event.item instanceof TableItem)) {
+ TableItem selectedTableItem=(TableItem)event.item;
+ TableItem[] itemSet=table.getItems();
+ for (int i=0; i<itemSet.length;i++){
+ if(itemSet[i].getChecked()){
+ //System.err.println(" checked "+itemSet[i].getData());
+ itemSet[i].setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN));
+ itemSet[i].setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
+ selectedProperties.add((Property)itemSet[i].getData());
+ }
+ else {
+ //System.err.println("not checked "+itemSet[i].getData());
+ itemSet[i].setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
+ itemSet[i].setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
+ selectedProperties.remove((Property)itemSet[i].getData());
+ }
+
+ }
+ }
+ }
+ }
+
+ );
+
+ //TableViewer
+ createColumn(viewer);
+ viewer.setContentProvider(new IStructuredContentProvider() {
+
+ @Override
+ public Object[] getElements(Object inputElement) {
+ if( inputElement instanceof Stereotype)
+ return ((Stereotype)inputElement).getAllAttributes().toArray();
+ return null;
+ }
+ });
+ viewer.setLabelProvider(new ITableLabelProvider() {
+
+ @Override
+ public void removeListener(ILabelProviderListener listener) {
+ }
+
+ @Override
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public void addListener(ILabelProviderListener listener) {
+ }
+
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ switch(columnIndex) {
+ case 0:
+ return ((Property)element).getName();
+ default:
+ return "";
+ }
+ }
+
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+ });
+ viewer.setInput(stereotype);
+ final GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = 2;
+ table.setLayoutData(gd);
+ table.setHeaderVisible(true);
+ Label label= new Label(shell, SWT.NONE);
+ label.setText("K target value: ");
+ label.setAlignment(SWT.RIGHT);
+ textCell = new Text(shell, SWT.NONE);
+
+
+ okbt = new Button(shell, SWT.NONE);
+ okbt.setText("Execute");
+
+ cancelbt = new Button(shell, SWT.NONE);
+ cancelbt.setText("Cancel");
+
+ addButtonListener();
+
+ shell.pack();
+
+
+ }
+
+
+ private void createColumn(TableViewer viewer) {
+ // name column
+ TableViewerColumn nameColumn = new TableViewerColumn(viewer, SWT.RESIZE);
+ nameColumn.getColumn().setText("Select Quasi Identifiers");
+ nameColumn.getColumn().setWidth(200);
+ nameColumn.getColumn().setResizable(true);
+ nameColumn.getColumn().setMoveable(false);
+ }
+
+ public int getKvalue() {
+ return this.kvalue;
+ }
+
+
+ public ArrayList<Property> getSelectedProperty(){
+ return selectedProperties;
+ }
+
+
+ public void addButtonListener(){
+ //Execute button selection
+ okbt.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ canExecute=true;
+ if(textCell.getText()==null) {
+ kvalue = 0;
+ }
+ else{
+ if (textCell.getText().length()>0) {
+ Integer value= new Integer(textCell.getText());
+ kvalue = value.intValue();
+ }
+ }
+ shell.close();
+ }
+ });
+
+ //Cancel button selection
+ cancelbt.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ canExecute=false;
+ shell.close();
+ }
+ });
+
+ }
+
+
+ /**
+ * Open the dialog.
+ * @return the result
+ */
+ public Object open() {
+ shell.open();
+ while(!shell.isDisposed()) {
+ if(!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ return result;
+ }
+
+
+ public static void main(String[] argv) {
+ Stereotype stereotype1= UMLFactory.eINSTANCE.createStereotype();
+ stereotype1.setName("TableTest");
+ stereotype1.createOwnedAttribute("column1", null);
+ stereotype1.createOwnedAttribute("column2", null);
+ stereotype1.createOwnedAttribute("column3", null);
+ stereotype1.createOwnedAttribute("column5", null);
+ KAnonymityDialog km=new KAnonymityDialog(stereotype1);
+ km.open();
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityOutcomesDialog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityOutcomesDialog.java
new file mode 100644
index 0000000..1f38dc4
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.datastrategies/src/org/eclipse/papyrus/pdp4eng/designer/datastrategies/ui/KAnonymityOutcomesDialog.java
@@ -0,0 +1,193 @@
+/**
+ * Copyright (c) 2019 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are the property of the CEA.
+ * Any use is subject to specific agreement with the CEA.
+ * Contributors:
+ *
+ * Gabriel Pedroza (CEA LIST) - API extensions and modifications
+ *
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.datastrategies.ui;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.JTextField;
+import javax.swing.border.LineBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellRenderer;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+
+@SuppressWarnings("serial")
+public class KAnonymityOutcomesDialog extends JFrame
+{
+ public KAnonymityOutcomesDialog(
+ EList<Element> tableList,
+ ArrayList<Property> QuasiIdentifiers, int kAnonymityTarget, int kAnonymityValue, int[] lowerUpperBounds){
+
+ if (tableList!=null && QuasiIdentifiers!= null &&
+ tableList.size()>0 && QuasiIdentifiers.size()>0 ) {
+
+ // Avoid repeated elements in the list of Quasi Identifiers
+ EList<String> uniqueQIList = new BasicEList<String>();
+ for (Iterator<Property> QuasiIdentifiersIt = QuasiIdentifiers.iterator(); QuasiIdentifiersIt.hasNext(); ) {
+ Property property = QuasiIdentifiersIt.next();
+ if (property!=null && !uniqueQIList.contains(property.getName())) {
+ uniqueQIList.add(property.getName());
+ }
+ }
+
+ if (uniqueQIList.size()>0) {
+ int noColumns = uniqueQIList.size()+1;
+ int noRows = tableList.size();
+ System.out.println("No. Columns: "+noColumns);
+ System.out.println("No. Rows: "+noRows);
+ //String[] outcomesList = new String[noRows];
+ String[] headerRow = new String[noColumns];
+ Object[][] kAnonymizedTable = new Object[noRows][noColumns];
+
+ for (int i=0; i<noRows; i++) {
+ Element currentElmt = tableList.get(i);
+ EList<Stereotype> selectedStereotypeList = currentElmt.getAppliedStereotypes();
+ if (selectedStereotypeList!=null && selectedStereotypeList.size()>0) {
+ Stereotype selectedStereotype = selectedStereotypeList.get(0);
+ if (currentElmt!=null && currentElmt instanceof org.eclipse.uml2.uml.Classifier) {
+ Classifier currentElmtClass = (Classifier) currentElmt;
+ kAnonymizedTable[i][0]= currentElmtClass.getName();
+ for (int j=0; j<noColumns-1; j++) {
+ String QIattribute = uniqueQIList.get(j);
+ if (QIattribute!=null) {
+ kAnonymizedTable[i][j+1] = currentElmtClass.getValue(selectedStereotype, QIattribute).toString();
+ }
+ }
+ }
+ }
+ }
+
+ headerRow[0]= "ElementName";
+ for (int j=0; j<noColumns-1; j++) {
+ headerRow[j+1] = (String) uniqueQIList.get(j);
+ }
+
+ // add the table to the frame
+ JTable table = new JTable(kAnonymizedTable, headerRow){
+ private static final long serialVersionUID = 1L;
+ @Override
+ public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
+ Component c = super.prepareRenderer(renderer, row, column);
+ if (isRowSelected(row) && isColumnSelected(column)) {
+ ((JComponent) c).setBorder(new LineBorder(Color.GREEN));
+ }
+ return c;
+ }
+ };
+
+ if ((kAnonymityTarget>kAnonymityValue)) {
+ table.setDefaultRenderer(Object.class, new CellRenderer(lowerUpperBounds[0],lowerUpperBounds[1]));
+ }
+
+ this.add(new JScrollPane(table));
+ this.pack();
+
+ // auxiliary elements of the frame
+
+ this.setTitle("K-Anonymity Outcomes");
+ this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
+ JTextArea kanonymityText;
+ if (kAnonymityTarget>kAnonymityValue) {
+ kanonymityText = new JTextArea("K-ANONYMITY OUTCOMES\n\n"+
+ "K-Anonymity target: "+kAnonymityTarget+
+ "\nK-Anonymity achieved: "+kAnonymityValue+
+ "\n\nProperty satisfied? "+ (kAnonymityTarget<=kAnonymityValue)+
+ "\n\n A concerned data set is highlighted!");
+ kanonymityText.setForeground(Color.MAGENTA);
+ } else {
+ kanonymityText = new JTextArea("K-ANONYMITY OUTCOMES\n\n"+
+ "K-Anonymity target: "+kAnonymityTarget+
+ "\nK-Anonymity achieved: "+kAnonymityValue+
+ "\n\nProperty satisfied? "+ (kAnonymityTarget<=kAnonymityValue));
+ kanonymityText.setForeground(Color.BLUE);
+ }
+ kanonymityText.setEditable(false);
+ this.add(kanonymityText, BorderLayout.BEFORE_LINE_BEGINS);
+ this.pack();
+
+ JButton myButton = new JButton(" CLOSE ");
+ myButton.addActionListener(eAL -> {
+ this.dispose();
+ pack();
+ });
+
+ this.add(myButton, BorderLayout.SOUTH);
+ this.pack();
+ this.setVisible(true);
+ }
+ }
+ }
+
+ class CellRenderer extends DefaultTableCellRenderer {
+ public int lower;
+ public int upper;
+
+ CellRenderer(int lowerBound,int upperBound){
+ lower=lowerBound;
+ upper=upperBound;
+ }
+
+ public Component getTableCellRendererComponent(
+ JTable table, Object value, boolean isSelected,
+ boolean hasFocus, int row, int column)
+ {
+ if (row >=lower && row <upper) {
+ setBackground(Color.LIGHT_GRAY);
+ setForeground(Color.MAGENTA);
+
+ } else {
+ setBackground(Color.WHITE);
+ setForeground(Color.BLACK);
+ }
+
+ return super.getTableCellRendererComponent(table, value, isSelected,
+ hasFocus, row, column);
+ }
+ }
+
+ public static void main(String[] args) {
+ Object[] options1 = { "Try This Number", "Choose A Random Number", "Quit" };
+
+ JPanel panel = new JPanel();
+ panel.add(new JLabel("Enter number between 0 and 1000"));
+ JTextField textField = new JTextField(10);
+ panel.add(textField);
+
+ int result = JOptionPane.showOptionDialog(null, panel, "Enter a Number",
+ JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null,
+ options1, null);
+ if (result == JOptionPane.YES_OPTION) {
+ JOptionPane.showMessageDialog(null, textField.getText());
+
+ }
+ }
+}
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <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.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.project
new file mode 100644
index 0000000..7de6f5e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.engine</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1c776ad
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/META-INF/MANIFEST.MF
@@ -0,0 +1,14 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.engine;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.engine
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.emf.common;bundle-version="[2.19.0,3.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.1,2.0.0)"
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.engine.api
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/build.properties
new file mode 100644
index 0000000..aa1a008
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/plugin.properties
new file mode 100644
index 0000000..f656ede
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/plugin.properties
@@ -0,0 +1,16 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Gabriel Pedroza - initial API and implementation
+# Patrick Tessier - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design Engine
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/pom.xml
new file mode 100644
index 0000000..dc2e0b6
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.engine</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/CatalogFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/CatalogFactory.java
new file mode 100644
index 0000000..e21d10c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/CatalogFactory.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.engine.api;
+
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.internal.StrategyCatalog;
+/**
+ * Req003.001: the system shall have a catalog to sore all possible strategies.
+ * This class is used to create a Catalog
+ * @author PT202707
+ *
+ */
+public class CatalogFactory {
+
+ public CatalogFactory() {
+ }
+
+ /**
+ * Create a catalog
+ * @param id the id of the catalog
+ * @return a catalog
+ */
+ public IStrategyCatalog createCatalog(String id) {
+ return new StrategyCatalog(id);
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategy.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategy.java
new file mode 100644
index 0000000..6dd37ad
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategy.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.engine.api;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * Req001.001: A strategy shall be a model transformation.
+ * <BR>
+ * Req001.001.001: A Strategy shall contains a name in order to identify it.
+ * <BR>
+ * Req001.001.002: A Strategy shall contains a goal to explain to user the purpose of this transformation.
+ * <BR>
+ * Req001.001.003: A strategy shall contain the transformation of the model.
+ *
+ */
+public interface IStrategy {
+ /**@return the name of the strategy
+ * **/
+ public String getName();
+ /**
+ *
+ * @return some information about the strategy
+ */
+ public String getGoal();
+ /**
+ *
+ * @param model the model to apply the transformation
+ * @return true if the strategy can be applied
+ */
+ public boolean canBeApplied(Element element);
+ /**
+ *
+ * @param model the model to apply the transformation
+ * @return the command that is the transformation
+ */
+ public Command getCommand(Element element, TransactionalEditingDomain domain);
+
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyCatalog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyCatalog.java
new file mode 100644
index 0000000..524d369
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyCatalog.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.engine.api;
+
+import java.util.ArrayList;
+
+/**
+* Req003.001: the system shall have a catalog to sore all possible strategies.
+* <BR>
+* Req003.002: the calalog shall provide to developer add their own strategies.
+* <BR>
+ *
+ */
+public interface IStrategyCatalog {
+
+
+ /**
+ * getter of possible rules
+ * @return the list of possible rules
+ */
+ public ArrayList<IStrategy> getPossibleStrategies();
+
+
+ /**
+ * Add a strategy inside the Catalog
+ * @param newStrategy add this strategy inside the catalog
+ */
+ public void addStrategy(IStrategy newStrategy);
+
+ /** @return the Id of the catalog**/
+ public String getId();
+
+ }
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyEngine.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyEngine.java
new file mode 100644
index 0000000..d90e120
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/IStrategyEngine.java
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.engine.api;
+
+import java.util.ArrayList;
+
+/**
+ * Req002.001: The system shall have an engine to get the selected strategy
+ * </BR>
+ * Req002.002: The engine shall be able to execute selected rules
+ *<BR>
+ ** Req002.003: the engine shall be a singleton .
+ */
+public interface IStrategyEngine {
+
+ /**
+ * getter of executable rules
+ * @return the list of possible rules
+ */
+ public IStrategy getStrategyToExecute();
+
+
+ /**
+ * connect a catalog to the engine.
+ * @param catalog
+ */
+ public void connectACatalog(IStrategyCatalog catalog);
+
+
+ /** get the current Catalog**/
+ public ArrayList<IStrategyCatalog> getCurrentCatalogList();
+
+ /**
+ * set the Strategy to execute
+ * @param strategy
+ */
+ public void setStrategyToExecute(IStrategy strategy);
+ /**
+ * clear the list of executable rules
+ */
+ public void clearExecutableStrategy();
+
+
+ /**
+ *
+ * @return true is the catalog and the context to execute strategy are set.
+ */
+ public boolean isReadyToRun();
+
+ /**
+ *
+ * @param index
+ * @return the catalog in the register "index"
+ */
+
+ IStrategyCatalog getCatalog(int index);
+
+
+ /**
+ *
+ * @param name
+ * @return the catalog named "name"
+ */
+ IStrategyCatalog getCatalog(String name);
+
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/StrategyEngineFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/StrategyEngineFactory.java
new file mode 100644
index 0000000..84fb51d
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/StrategyEngineFactory.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.engine.api;
+
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.internal.StrategyEngine;
+
+/**
+ * Req003.002: the engine shall be a singleton.
+ *
+ */
+public class StrategyEngineFactory {
+
+ protected IStrategyEngine strategyEngine;
+
+ private StrategyEngineFactory() {
+ super();
+ }
+
+ private static StrategyEngineFactory instance=null;
+
+ public static StrategyEngineFactory getInstance() {
+ if( instance==null) {
+ instance= new StrategyEngineFactory();
+ }
+ return instance;
+ }
+ /**
+ *
+ * @return get the current engine
+ */
+ public IStrategyEngine getCurrentEngine() {
+ if( strategyEngine==null) {
+ createEngine();
+ }
+ return strategyEngine;
+ }
+
+ /**
+ * create a default engine
+ * if you want to instanciate an new engine, you can inherit and add your own method of engine creation :D
+ */
+ public void createEngine() {
+ strategyEngine= new StrategyEngine();
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyCatalog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyCatalog.java
new file mode 100644
index 0000000..487b2ac
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyCatalog.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.engine.api.internal;
+
+import java.util.ArrayList;
+
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;
+
+public class StrategyCatalog implements IStrategyCatalog {
+
+ protected String id=null;
+ public StrategyCatalog(String id) {
+ this.id=id;
+ }
+ protected ArrayList<IStrategy> strategies= new ArrayList<>();
+ @Override
+ public ArrayList<IStrategy> getPossibleStrategies() {
+ return strategies;
+ }
+
+ @Override
+ public void addStrategy(IStrategy newStrategy) {
+ strategies.add(newStrategy);
+
+ }
+
+ @Override
+ public String getId() {
+ return this.id;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyEngine.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyEngine.java
new file mode 100644
index 0000000..1055d41
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.engine/src/org/eclipse/papyrus/pdp4eng/designer/engine/api/internal/StrategyEngine.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.engine.api.internal;
+
+import java.util.ArrayList;
+import java.util.ListIterator;
+
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyEngine;
+
+public class StrategyEngine implements IStrategyEngine {
+
+ protected IStrategy selectedStrategy=null;
+ protected ArrayList<IStrategyCatalog> currentCatalogList=new ArrayList<>(); //maybe a collection?
+
+ @Override
+ public IStrategy getStrategyToExecute() {
+ return selectedStrategy;
+ }
+
+ @Override
+ public void connectACatalog(IStrategyCatalog catalog) {
+ this.currentCatalogList.add(catalog);
+
+ }
+ @Override
+ public ArrayList<IStrategyCatalog> getCurrentCatalogList(){
+ return currentCatalogList;
+ }
+
+ @Override
+ public IStrategyCatalog getCatalog(int index) {
+ if (currentCatalogList.size()>0 && index<currentCatalogList.size()) {
+ return currentCatalogList.get(index);
+ }
+ return null;
+ }
+
+ @Override
+ public IStrategyCatalog getCatalog(String name){
+ if (currentCatalogList.size()>0) {
+ ListIterator<IStrategyCatalog> catalogListIterator = currentCatalogList.listIterator();
+ while (catalogListIterator.hasNext()) {
+ IStrategyCatalog currentCatalog = catalogListIterator.next();
+ if (currentCatalog!=null && currentCatalog.getId().equals(name)) {
+ return currentCatalog;
+ }
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void clearExecutableStrategy() {
+ this.selectedStrategy=null;
+
+ }
+
+ @Override
+ public void setStrategyToExecute(IStrategy strategy) {
+ selectedStrategy= strategy;
+
+ }
+ @Override
+ public boolean isReadyToRun() {
+ if( currentCatalogList.size()!=0) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.classpath
new file mode 100644
index 0000000..e78a76c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry exported="true" 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.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.project
new file mode 100644
index 0000000..8c301ae
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.libraries-patterns</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..87b7a7a
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fcd7100
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.libraries-patterns;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.libraries-patterns
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.ui;bundle-version="[3.117.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.22.0,3.0.0)",
+ org.eclipse.emf.common;bundle-version="[2.19.0,3.0.0)"
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.properties
new file mode 100644
index 0000000..b202ac5
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng process libraries pattern
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.xml
new file mode 100644
index 0000000..5535690
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/plugin.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/pom.xml
new file mode 100644
index 0000000..cb9c35d
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.libraries-patterns/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.libraries-patterns</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.classpath
new file mode 100644
index 0000000..1fa3e68
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.project
new file mode 100644
index 0000000..240660b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.processstrategies</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e768ed8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.processstrategies;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.processstrategies
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.pdp4eng.designer.engine;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.1,2.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.119.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.117.0,4.0.0)",
+ org.eclipse.papyrus.uml.properties;bundle-version="[3.5.100,4.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.controller;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.profile;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.pdp4eng.common.profile;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.utils;bundle-version="[1.0.0,2.0.0)"
+Bundle-Activator: org.eclipse.papyrus.pdp4eng.designer.processstrategies.Activator
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/build.properties
new file mode 100644
index 0000000..0dc34f7
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.properties
new file mode 100644
index 0000000..71f5076
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng process strategies
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.xml
new file mode 100644
index 0000000..d003ba8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.eclipse.papyrus.pdp4eng.designer.processstrategies.Activator"></startup>
+ </extension>
+
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/pom.xml
new file mode 100644
index 0000000..239ad06
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/pom.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.processstrategies</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/Activator.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/Activator.java
new file mode 100644
index 0000000..a160208
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/Activator.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.processstrategies;
+
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.CatalogFactory;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.StrategyEngineFactory;
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+
+
+
+public class Activator extends AbstractUIPlugin implements IStartup{
+ // The plug-in ID
+ public static final String pluginId = "org.eclipse.papyrus.pdp4eng.designer.processstrategies";
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ Activator.plugin = this;
+
+ StrategyEngineFactory engineFactory= StrategyEngineFactory.getInstance();
+ CatalogFactory catalogFactory= new CatalogFactory();
+ IStrategyCatalog catalog=catalogFactory.createCatalog("Process-oriented Strategies");
+ catalog.addStrategy(new InstantiateGDPRConsentPatternStrategy());
+ engineFactory.getCurrentEngine().connectACatalog(catalog);
+
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ Activator.plugin = null;
+ super.stop(context);
+
+ }
+
+ @Override
+ public void earlyStartup() {
+ // TODO Auto-generated method stub
+
+ }
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return Activator.plugin;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/InstantiateGDPRConsentPatternStrategy.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/InstantiateGDPRConsentPatternStrategy.java
new file mode 100644
index 0000000..b96f0fb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/InstantiateGDPRConsentPatternStrategy.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.processstrategies;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.papyrus.pdp4eng.designer.processstrategies.command.InstantiateGDPRConsentPatternCommand;
+
+public class InstantiateGDPRConsentPatternStrategy implements IStrategy {
+
+ @Override
+ public String getName() {
+ return "GDPRConsentPatternStrategy";
+ }
+
+ @Override
+ public String getGoal() {
+ return "Instantiate GDPR Consent Pattern Strategy";
+ }
+
+ @Override
+ public boolean canBeApplied(Element element) {
+ if( element instanceof org.eclipse.uml2.uml.Activity) {return true;}
+ return false;
+ }
+
+ @Override
+ public Command getCommand(Element element, TransactionalEditingDomain domain) {
+ // TODO Auto-generated method stub
+ return new InstantiateGDPRConsentPatternCommand(domain, (Activity) element);
+
+ }
+
+}
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/command/InstantiateGDPRConsentPatternCommand.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/command/InstantiateGDPRConsentPatternCommand.java
new file mode 100644
index 0000000..ed39108
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.processstrategies/src/org/eclipse/papyrus/pdp4eng/designer/processstrategies/command/InstantiateGDPRConsentPatternCommand.java
@@ -0,0 +1,707 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.processstrategies.command;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.*;
+import org.eclipse.papyrus.pdp4eng.designer.controller.internal.processcreation.ProcessBuilder;
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.swt.widgets.Display;
+
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityParameterNode;
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.ObjectFlow;
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.ProfileApplication;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.util.UMLUtil;
+import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelPackageNames;
+import org.eclipse.papyrus.pdp4eng.designer.utils.ModelProfileNames;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Consent;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Controller;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.DataSubject;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.PersonalData;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Processor;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Purpose;
+import org.eclipse.papyrus.pdp4eng.common.profile.pdp4engCommonGDPR.Process;
+
+public class InstantiateGDPRConsentPatternCommand extends RecordingCommand {
+
+ protected Activity activityDFD;
+
+ public InstantiateGDPRConsentPatternCommand(TransactionalEditingDomain domain, Activity activityDFD) {
+ super(domain, "Instantiate a Consent Pattern based upon the information provided by the engineer");
+ this.activityDFD = activityDFD;
+ }
+
+ @Override
+ protected void doExecute() {
+
+ String title = "1. Consent Pattern - Select the Controller";
+ String message = "1. Select the Controller responsible for processing Personal Data";
+ ExternalEntity selectedController = selectExternalEntityFromActivityDFD(title,message);
+ Entity controllerEntity = createEntity(selectedController.getBase_ActivityParameterNode().getName());
+ Entity processorEntity = createEntity(selectedController.getBase_ActivityParameterNode().getName()+"_Processor");
+ applyStereotypeToNamedElement(controllerEntity.getBase_NamedElement(), ModelProfileNames.commonGDPRProfileName, ModelProfileNames.commonGDPR_Controller);
+ applyStereotypeToNamedElement(processorEntity.getBase_NamedElement(), ModelProfileNames.commonGDPRProfileName, ModelProfileNames.commonGDPR_Processor);
+ selectedController.setEntity(controllerEntity);
+
+ title = "2. Consent Pattern - Select the Data Subject";
+ message = "2. Select the Data Subject to ask for Consent";
+ ExternalEntity selectedDataSubject = selectExternalEntityFromActivityDFD(title, message);
+ Entity dataSubjectEntity = createEntity(selectedDataSubject.getBase_ActivityParameterNode().getName());
+ applyStereotypeToNamedElement(dataSubjectEntity.getBase_NamedElement(), ModelProfileNames.commonGDPRProfileName, ModelProfileNames.commonGDPR_DataSubject);
+ selectedDataSubject.setEntity(dataSubjectEntity);
+
+ title = "3. Consent Pattern - Select the Process";
+ message = "3. Select the Process concerned by the Consent";
+ CallProcess selectedCallProcess = selectCallProcessFromActivityDFD(title, message);
+ applyStereotypeToAction(selectedCallProcess.getBase_CallBehaviorAction(), ModelProfileNames.commonGDPRProfileName, ModelProfileNames.commonGDPR_Process);
+
+ title = "4. Consent Pattern - Declare the Purpose";
+ message = "4. Declare the Purpose for which Data is processed";
+ InputDialog dialog = new InputDialog(Display.getCurrent().getActiveShell(),
+ title, message, "", null);
+ dialog.open();
+ String purposeTxt = dialog.getValue();
+ Purpose purpose = createPurpose(purposeTxt);
+
+ title = "5. Consent Pattern - Select the Personal Data";
+ message = "5. Select the Personal Data involved in "+ selectedCallProcess.getBase_CallBehaviorAction().getName();
+ PersonalData selectedPersonalData = selectPersonalDataFromActivityDFD(title, message);
+
+ /** Start to instantiate the Consent Pattern by completing and filling the model **/
+
+ /** 1st. Controller (and Processor) **/
+ Controller controller = getController(controllerEntity.getBase_NamedElement());
+ Processor processor = getProcessor(processorEntity.getBase_NamedElement());
+
+ if ((controller!=null) && (processor!=null) && (selectedPersonalData!=null)) {
+ controller.getPersonalData().add(selectedPersonalData);
+ controller.getProcessor().add(processor);
+ }
+
+ /** 2nd. Data Subject and Consent **/
+
+ Consent consent = createConsent("Consent("+selectedPersonalData.getBase_NamedElement().getName()+"_"+purpose.getBase_NamedElement().getName()+")");
+ DataSubject dataSubject = getDataSubject(dataSubjectEntity.getBase_NamedElement());
+
+ if (dataSubject!=null && selectedPersonalData!=null && consent!=null) {
+ dataSubject.getPersonalData().add(selectedPersonalData);
+ dataSubject.getGivenConsent().add(consent);
+ }
+
+
+ /** 3rd. Process **/
+ Process process = getProcess(selectedCallProcess.getBase_CallBehaviorAction());
+ if (process!=null) {
+ processor.getProcess().add(process);
+ process.getPersonaldata().add(selectedPersonalData);
+ }
+
+ /** 4th. Purpose **/
+ if (process!=null && consent!=null) {
+ purpose.getProcesses().add(process);
+ purpose.setConsent(consent);
+ }
+
+ /** INSTANTIATE THE CONSENT PATTERN **/
+
+ /** Create a CallProcess **/
+ Activity newProcess= UMLFactory.eINSTANCE.createActivity();
+ String consentName = "GDPRConsent_"+process.getBase_NamedElement().getName();
+ newProcess.setName(consentName);
+ Package DFDL1_Pkg = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.DFD_L1_PackageName);
+ if (DFDL1_Pkg!=null && newProcess!=null) {
+ //System.err.printf(DFDL1_Pkg.toString()+"\n\n\n");
+ //System.err.printf(newProcess.toString()+"\n\n\n");
+ DFDL1_Pkg.getPackagedElements().add(newProcess);
+ CallBehaviorAction consentCallBehaviorAction=UMLFactory.eINSTANCE.createCallBehaviorAction();
+ activityDFD.getOwnedNodes().add(consentCallBehaviorAction);
+ consentCallBehaviorAction.setName("GDPRConsent_"+process.getBase_NamedElement().getName());
+ consentCallBehaviorAction.setBehavior(newProcess);
+ applyStereotypeToAction(consentCallBehaviorAction, ModelProfileNames.PDPbDProfileName, ModelProfileNames.PDPbD_CallProcess);
+
+ /** Add DataInput and DataOutput pins **/
+ InputPin inPin = UMLFactory.eINSTANCE.createInputPin();
+ OutputPin outPin = UMLFactory.eINSTANCE.createOutputPin();
+ if (inPin != null && outPin!=null) {
+ inPin.setType((Type) consent.getBase_NamedElement());
+ outPin.setType((Type) consent.getBase_NamedElement());
+ inPin.setName("InputPin1");
+ outPin.setName("OutputPin2");
+ consentCallBehaviorAction.getArguments().add(inPin);
+ consentCallBehaviorAction.getResults().add(outPin);
+ applyStereotypeToPin(inPin, ModelProfileNames.PDPbDProfileName, ModelProfileNames.PDPbD_DataInput);
+ applyStereotypeToPin(outPin, ModelProfileNames.PDPbDProfileName, ModelProfileNames.PDPbD_DataOutput);
+
+ /** Connect DataSubject entity to the DataInput pin **/
+ ObjectFlow dataFlowEdge1 = UMLFactory.eINSTANCE.createObjectFlow();
+ if (dataFlowEdge1 !=null) {
+ dataFlowEdge1.setName("Consent_"+selectedDataSubject.getBase_ActivityParameterNode().getName());
+ dataFlowEdge1.setSource(selectedDataSubject.getBase_ActivityParameterNode());
+ dataFlowEdge1.setTarget(inPin);
+ activityDFD.getEdges().add(dataFlowEdge1);
+
+ /** Connect DataOutput pin to Controller entity **/
+ ObjectFlow dataFlowEdge2 = UMLFactory.eINSTANCE.createObjectFlow();
+ if (dataFlowEdge2!=null) {
+ dataFlowEdge2.setName("Consent_"+selectedController.getBase_ActivityParameterNode().getName());
+ dataFlowEdge2.setSource(outPin);
+ dataFlowEdge2.setTarget(selectedController.getBase_ActivityParameterNode());
+ activityDFD.getEdges().add(dataFlowEdge2);
+
+ /** Completing Behavior Process **/
+ ActivityParameterNode parameterIn=UMLFactory.eINSTANCE.createActivityParameterNode();
+ if (parameterIn!=null) {
+ parameterIn.setName(inPin.getName());
+ parameterIn.setType(inPin.getType());
+ newProcess.getOwnedNodes().add(parameterIn);
+ }
+
+ ActivityParameterNode parameterOut=UMLFactory.eINSTANCE.createActivityParameterNode();
+ if (parameterOut!=null) {
+ parameterOut.setName(outPin.getName());
+ parameterOut.setType(outPin.getType());
+ newProcess.getOwnedNodes().add(parameterOut);
+ }
+ }
+ }
+ }
+ }
+ }
+
+
+ /**
+ * Verify whether the needed profiles have been already loaded in the model
+ * @param profileList
+ * @return
+ */
+ public boolean verifyProfilesApplied(EList<Profile> profileList) {
+ boolean found = false;
+ int noProfiles = 0;
+ for (Iterator<Profile> profileListIt = profileList.iterator(); profileListIt.hasNext() && noProfiles!=2;) {
+ Profile profile = profileListIt.next();
+ if (profile!=null) {
+ String profileName = profile.getName();
+ switch (profileName) {
+ case "pdp4engDesign":
+ noProfiles++;
+ break;
+
+ case "pdp4engCommonGDPR":
+ noProfiles++;
+ break;
+
+ }
+ }
+ }
+ if (noProfiles==2) {
+ found=true;
+ }
+ return found;
+ }
+
+ /**
+ * Return the profile with the given name or null elsewhere
+ * @param profileName
+ * @return
+ */
+ public Profile getProfile(String profileName) {
+ Profile profile = null;
+ for (ProfileApplication profileApplication : this.activityDFD.getModel().getProfileApplications()) {
+ profile = profileApplication.getAppliedProfile();
+ if (profile.getName().equals(profileName)){
+ return profile;
+ }
+ }
+ return profile;
+ }
+
+ /**
+ * Create a Package with the given name.
+ * @param packageName
+ */
+ public void createIfMissingPackage(String packageName){
+ PackageableElement targetPackage = this.activityDFD.getModel().getPackagedElement(packageName);
+ if (targetPackage==null || !targetPackage.getName().equals(packageName)){
+ this.activityDFD.getModel().createPackagedElement(packageName, UMLPackage.eINSTANCE.getPackage());
+ }
+ }
+
+
+ /**
+ * Shows all the Call Process associated to an Activity DFD. Returns the CallProcess selected by the user.
+ * @return
+ */
+ CallProcess selectCallProcessFromActivityDFD(String title, String message) {
+ CallProcess selectedCallProcess = null;
+ EList<Action> selectedCallProcList = new BasicEList<Action>();
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+ EList<Element> elementList = this.activityDFD.getNearestPackage().allOwnedElements();
+ if (elementList!=null && PDPbDprofile!=null) {
+ for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+ Element element = elementListIt.next();
+ EList<Stereotype> elementStypesList = element.getAppliedStereotypes();
+ for (Iterator<Stereotype> elementStypeListIt = elementStypesList.iterator(); elementStypeListIt.hasNext();) {
+ Stereotype stype = elementStypeListIt.next();
+ if (stype!=null && stype.getName().equals(ModelProfileNames.PDPbD_CallProcess)) {
+ if (element instanceof org.eclipse.uml2.uml.Action) {
+ Action actionElmt = (Action) element;
+ System.out.printf("CallProcess Name: "+actionElmt.getName()+"\n");
+ if (!selectedCallProcList.contains(actionElmt)) {
+ selectedCallProcList.add(actionElmt);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Object[] objList = new Object[selectedCallProcList.size()];
+ Iterator<Action> selectedElementListIt = selectedCallProcList.iterator();
+ for (int i=0; selectedElementListIt.hasNext()&& i<objList.length; i++) {
+ Action callProc = selectedElementListIt.next();
+ objList[i] = callProc.getName();
+ }
+
+ ElementListSelectionDialog dialog = new ElementListSelectionDialog(Display.getCurrent().getActiveShell(), new LabelProvider());
+ dialog.setElements(objList);
+ dialog.setTitle(title);
+ dialog.setMessage(message);
+ dialog.setHelpAvailable(true);
+
+ if (dialog.open() != Window.OK) {
+ System.out.printf(">> A problem opening the CallProcess Window");
+ }
+
+ Object[] resultList = dialog.getResult();
+ if (resultList!=null && resultList.length>0) {
+ Object result = resultList[0];
+ for (Iterator<Action> selectedElementListIt1 = selectedCallProcList.iterator(); selectedElementListIt1.hasNext();) {
+ Action callProc = selectedElementListIt1.next();
+ if (callProc.getName().equals(result)){
+ selectedCallProcess = UMLUtil.getStereotypeApplication(callProc,CallProcess.class) ;
+ }
+ }
+ }
+ return selectedCallProcess;
+ }
+
+ /**
+ * Shows all the External Entities associated to an Activity DFD. Returns the ExternalEntity selected by the user.
+ * @return
+ */
+ ExternalEntity selectExternalEntityFromActivityDFD(String title, String message) {
+ ExternalEntity selectedEEntity = null;
+ EList<ActivityParameterNode> selectedEEntityList = new BasicEList<ActivityParameterNode>();
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+ EList<Element> elementList = this.activityDFD.getNearestPackage().allOwnedElements();
+ if (elementList!=null && PDPbDprofile!=null) {
+ for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+ Element element = elementListIt.next();
+ EList<Stereotype> elementStypesList = element.getAppliedStereotypes();
+ for (Iterator<Stereotype> elementStypeListIt = elementStypesList.iterator(); elementStypeListIt.hasNext();) {
+ Stereotype stype = elementStypeListIt.next();
+ if (stype!=null && stype.getName().equals(ModelProfileNames.PDPbD_ExternalEntity)) {
+ if (element instanceof org.eclipse.uml2.uml.ActivityParameterNode) {
+ ActivityParameterNode activityParameterNodeElmt = (ActivityParameterNode) element;
+ System.out.printf("ExternalEntity Name: "+activityParameterNodeElmt.getName()+"\n");
+ if (!selectedEEntityList.contains(activityParameterNodeElmt)) {
+ selectedEEntityList.add(activityParameterNodeElmt);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Object[] objList = new Object[selectedEEntityList.size()];
+ Iterator<ActivityParameterNode> selectedEEntityListIt = selectedEEntityList.iterator();
+ for (int i=0; selectedEEntityListIt.hasNext()&& i<objList.length; i++) {
+ ActivityParameterNode extEntity = selectedEEntityListIt.next();
+ objList[i] = extEntity.getName();
+ }
+
+ ElementListSelectionDialog dialog = new ElementListSelectionDialog(Display.getCurrent().getActiveShell(), new LabelProvider());
+ dialog.setElements(objList);
+ dialog.setTitle(title);
+ dialog.setMessage(message);
+ dialog.setHelpAvailable(true);
+
+ if (dialog.open() != Window.OK) {
+ System.out.printf(">> A problem opening the ExternalEntity Window");
+ }
+
+ Object[] resultList = dialog.getResult();
+ if (resultList!=null && resultList.length>0) {
+ Object result = resultList[0];
+ for (Iterator<ActivityParameterNode> selectedEEntityListIt1 = selectedEEntityList.iterator(); selectedEEntityListIt1.hasNext();) {
+ ActivityParameterNode activityParamNode = selectedEEntityListIt1.next();
+ if (activityParamNode.getName().equals(result)){
+ selectedEEntity = UMLUtil.getStereotypeApplication(activityParamNode,ExternalEntity.class);
+ }
+ }
+ }
+ return selectedEEntity;
+ }
+
+ /**
+ * hows all the Data associated to an Activity DFD. Stereotypes the selected Data as Personal and returns them.
+ * @param title
+ * @param message
+ * @return
+ */
+ PersonalData selectPersonalDataFromActivityDFD(String title, String message) {
+ PersonalData selectedPersonalData = null;
+ EList<Classifier> selectedPersonalDataList = new BasicEList<Classifier>();
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile PDPbDprofile = getProfile(ModelProfileNames.PDPbDProfileName);
+ EList<Element> elementList = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.Data_PackageName).allOwnedElements();
+ if (elementList!=null && PDPbDprofile!=null) {
+ for (Iterator<Element> elementListIt = elementList.iterator(); elementListIt.hasNext();) {
+ Element element = elementListIt.next();
+ EList<Stereotype> elementStypesList = element.getAppliedStereotypes();
+ for (Iterator<Stereotype> elementStypeListIt = elementStypesList.iterator(); elementStypeListIt.hasNext();) {
+ Stereotype stype = elementStypeListIt.next();
+ if (stype!=null && stype.getName().equals(ModelProfileNames.commonGDPR_PersonalData)) {
+ if (element instanceof org.eclipse.uml2.uml.Classifier) {
+ Classifier classElmt = (Classifier) element;
+ System.out.printf("PersonalData Name: "+classElmt.getName()+"\n");
+ if (!selectedPersonalDataList.contains(classElmt)) {
+ selectedPersonalDataList.add(classElmt);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ Object[] objList = new Object[selectedPersonalDataList.size()];
+ Iterator<Classifier> selectedPersonalDataListIt = selectedPersonalDataList.iterator();
+ for (int i=0; selectedPersonalDataListIt.hasNext()&& i<objList.length; i++) {
+ Classifier extEntity = selectedPersonalDataListIt.next();
+ objList[i] = extEntity.getName();
+ }
+
+ ElementListSelectionDialog dialog = new ElementListSelectionDialog(Display.getCurrent().getActiveShell(), new LabelProvider());
+ dialog.setElements(objList);
+ dialog.setTitle(title);
+ dialog.setMessage(message);
+ dialog.setHelpAvailable(true);
+
+ if (dialog.open() != Window.OK) {
+ System.out.printf(">> A problem opening the PersonalData Window");
+ }
+
+ Object[] resultList = dialog.getResult();
+ if (resultList!=null && resultList.length>0) {
+ Object result = resultList[0];
+ for (Iterator<Classifier> selectedPersonalDataListIt1 = selectedPersonalDataList.iterator(); selectedPersonalDataListIt1.hasNext();) {
+ Classifier activityParamNode = selectedPersonalDataListIt1.next();
+ if (activityParamNode.getName().equals(result)){
+ selectedPersonalData = UMLUtil.getStereotypeApplication(activityParamNode,PersonalData.class);
+ }
+ }
+ }
+ return selectedPersonalData;
+ }
+
+ /**
+ * Create a Purpose with the given name within the Stakeholders package
+ * @param name
+ * @return
+ */
+ Purpose createPurpose(String name) {
+ Purpose purpose = null;
+ createIfMissingPackage(ModelPackageNames.Stakeholder_PackageName);
+ Classifier purposeCls = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.Stakeholder_PackageName).
+ createOwnedClass(name, false);
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+ if (commonProfile!=null){
+ Stereotype purposeStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Purpose);
+ if (purposeStype!=null){
+ UMLUtil.safeApplyStereotype(purposeCls, purposeStype);
+ purpose = UMLUtil.getStereotypeApplication(purposeCls, Purpose.class);
+ }
+ }
+ }
+ return purpose;
+ }
+
+ /**
+ * Create an Entity with the given name within the Stakeholders package
+ * @param name
+ * @return
+ */
+ Entity createEntity(String name) {
+ Entity entity = null;
+ createIfMissingPackage(ModelPackageNames.Stakeholder_PackageName);
+ Classifier entityCls = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.Stakeholder_PackageName).
+ createOwnedClass(name, false);
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile commonProfile = getProfile(ModelProfileNames.PDPbDProfileName);
+ if (commonProfile!=null){
+ Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.PDPbD_Entity);
+ if (entityStype!=null){
+ UMLUtil.safeApplyStereotype(entityCls, entityStype);
+ entity = UMLUtil.getStereotypeApplication(entityCls, Entity.class);
+ }
+ }
+ }
+ return entity;
+ }
+
+ /**
+ * Create a Consent with the given name within the Data package
+ * @param name
+ * @return
+ */
+ Consent createConsent(String name) {
+ Consent consent = null;
+ createIfMissingPackage(ModelPackageNames.Data_PackageName);
+ Classifier entityCls = this.activityDFD.getModel().getNestedPackage(ModelPackageNames.Data_PackageName).
+ createOwnedClass(name, false);
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+ if (commonProfile!=null){
+ Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Consent);
+ if (entityStype!=null){
+ UMLUtil.safeApplyStereotype(entityCls, entityStype);
+ consent = UMLUtil.getStereotypeApplication(entityCls, Consent.class);
+ }
+ }
+ }
+ return consent;
+ }
+
+ /**
+ * Get the controller of an Entity
+ * @param entityCls
+ * @return
+ */
+ Controller getController(NamedElement entityCls) {
+ Controller controller = null;
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+ if (commonProfile!=null){
+ Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Controller);
+ if (entityStype!=null){
+ UMLUtil.safeApplyStereotype(entityCls, entityStype);
+ controller = UMLUtil.getStereotypeApplication(entityCls, Controller.class);
+ }
+ }
+ }
+ return controller;
+ }
+
+ /**
+ * Get the processor of an Entity
+ * @param entityCls
+ * @return
+ */
+ Processor getProcessor(NamedElement entityCls) {
+ Processor processor = null;
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+ if (commonProfile!=null){
+ Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Processor);
+ if (entityStype!=null){
+ UMLUtil.safeApplyStereotype(entityCls, entityStype);
+ processor = UMLUtil.getStereotypeApplication(entityCls, Processor.class);
+ }
+ }
+ }
+ return processor;
+ }
+
+ /**
+ * Get the Data Subject of an Entity
+ * @param entityCls
+ * @return
+ */
+ DataSubject getDataSubject(NamedElement entityCls) {
+ DataSubject dataSubject = null;
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+ if (commonProfile!=null){
+ Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_DataSubject);
+ if (entityStype!=null){
+ UMLUtil.safeApplyStereotype(entityCls, entityStype);
+ dataSubject = UMLUtil.getStereotypeApplication(entityCls, DataSubject.class);
+ }
+ }
+ }
+ return dataSubject;
+ }
+
+ /**
+ * Get the process of a CallBehaviorAction
+ * @param entityCls
+ * @return
+ */
+ Process getProcess(CallBehaviorAction callBehaviorAction) {
+ Process process = null;
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ if (verifyProfilesApplied(profileList)) {
+ Profile commonProfile = getProfile(ModelProfileNames.commonGDPRProfileName);
+ if (commonProfile!=null){
+ Stereotype entityStype = commonProfile.getOwnedStereotype(ModelProfileNames.commonGDPR_Process);
+ if (entityStype!=null){
+ UMLUtil.safeApplyStereotype(callBehaviorAction, entityStype);
+ process = UMLUtil.getStereotypeApplication(callBehaviorAction, Process.class);
+ }
+ }
+ }
+ return process;
+ }
+
+ /**
+ * Safely apply the a stereotype to an ActivityParameterNode
+ * @param classifier
+ * @param stereotype
+ */
+ public void applyStereotypeToActivityParameterNode(ActivityParameterNode activityPNode, String profileName, String stereotypeName) {
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ EList<Stereotype> appliedStypes = activityPNode.getAppliedStereotypes();
+ if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && activityPNode!=null) {
+ Profile profile = getProfile(profileName);
+ if (profile!=null){
+ Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+ if (stereotype!=null && !appliedStypes.contains(stereotype)){
+ UMLUtil.safeApplyStereotype(activityPNode, stereotype);
+ }
+ }
+ }
+ }
+
+ /**
+ * Safely apply the a stereotype to a Classifier
+ * @param classifier
+ * @param profileName
+ * @param stereotypeName
+ */
+ public void applyStereotypeToClassifier(Classifier classifier, String profileName, String stereotypeName) {
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ EList<Stereotype> appliedStypes = classifier.getAppliedStereotypes();
+ if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && classifier!=null) {
+ Profile profile = getProfile(profileName);
+ if (profile!=null){
+ Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+ if (stereotype!=null && !appliedStypes.contains(stereotype)){
+ UMLUtil.safeApplyStereotype(classifier, stereotype);
+ }
+ }
+ }
+ }
+
+ /**
+ * Safely apply the a stereotype to a NamedElement
+ * @param namedElement
+ * @param profileName
+ * @param stereotypeName
+ */
+ public void applyStereotypeToNamedElement(NamedElement namedElement, String profileName, String stereotypeName) {
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ EList<Stereotype> appliedStypes = namedElement.getAppliedStereotypes();
+ if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && namedElement!=null) {
+ Profile profile = getProfile(profileName);
+ if (profile!=null){
+ Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+ if (stereotype!=null && !appliedStypes.contains(stereotype)){
+ UMLUtil.safeApplyStereotype(namedElement, stereotype);
+ }
+ }
+ }
+ }
+
+ /**
+ * Safely apply the a stereotype to an Action node
+ * @param action
+ * @param profileName
+ * @param stereotypeName
+ */
+ public void applyStereotypeToAction(Action action, String profileName, String stereotypeName) {
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ EList<Stereotype> appliedStypes = action.getAppliedStereotypes();
+ if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && action!=null) {
+ Profile profile = getProfile(profileName);
+ if (profile!=null){
+ Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+ if (stereotype!=null && !appliedStypes.contains(stereotype)){
+ UMLUtil.safeApplyStereotype(action, stereotype);
+ }
+ }
+ }
+ }
+
+ public void applyStereotypeToPin(Pin pin, String profileName, String stereotypeName) {
+ EList<Profile> profileList = this.activityDFD.getModel().getAppliedProfiles();
+ EList<Stereotype> appliedStypes = pin.getAppliedStereotypes();
+ if (verifyProfilesApplied(profileList) && profileName!=null && stereotypeName!=null && pin!=null) {
+ Profile profile = getProfile(profileName);
+ if (profile!=null){
+ Stereotype stereotype = profile.getOwnedStereotype(stereotypeName);
+ if (stereotype!=null && !appliedStypes.contains(stereotype)){
+ UMLUtil.safeApplyStereotype(pin, stereotype);
+ }
+ }
+ }
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <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.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.project
new file mode 100644
index 0000000..e88cf2d
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.profile</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a285847
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.profile;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.papyrus.pdp4eng.designer.profile.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.22.0,3.0.0)",
+ org.eclipse.uml2.types;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.papyrus.designer.profile
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign,
+ org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl,
+ org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.util
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/build.properties
new file mode 100644
index 0000000..2c23fde
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ model/,\
+ plugin.properties,\
+ plugin.xml
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.ecore b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.ecore
new file mode 100644
index 0000000..75f9570
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.ecore
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="pdp4engDesign" nsURI="http://org.eclipse.papyrus.pdp4eng.designer.profile"
+ nsPrefix="pdp4engDesign">
+ <eClassifiers xsi:type="ecore:EClass" name="OpaqueData" eSuperTypes="#//DataType">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="OpaqueData are data which are not directly interpretable: further tokens are necessary to transform them into a readable form. This data type can be useful to model special data types like for instance ciphered data."/>
+ </eAnnotations>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataType">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_PrimitiveType" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//PrimitiveType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="isPersonalData">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Likelihood interval to be 
written as a Java constraint"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="likelihood" ordered="false"
+ eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_NamedElement" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//NamedElement"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataOutput">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Input and output pins can play double role:
- As ports
- As parameters"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_OutputPin" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//OutputPin"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Parameter" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Data">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataLink" eSuperTypes="#//Data">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="path" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//DataType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CompositeData" eSuperTypes="#//Data"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Table" eSuperTypes="#//Data"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ExternalEntity">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_ActivityParameterNode"
+ ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//ActivityParameterNode"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="entity" ordered="false"
+ eType="#//Entity"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Entity">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_NamedElement" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//NamedElement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataStore">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_DataStoreNode" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//DataStoreNode"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DataInput">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_InputPin" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//InputPin"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Parameter" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Process">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Activity" ordered="false"
+ lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Activity"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CallProcess">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_CallBehaviorAction"
+ ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//CallBehaviorAction"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_OpaqueAction" ordered="false"
+ eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//OpaqueAction"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SmartGridFrame" eSuperTypes="#//Data">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="concentratorID" ordered="false"
+ eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="userName" ordered="false"
+ eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="postcode" ordered="false"
+ eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="consumption" ordered="false"
+ eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="crc" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.genmodel b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.genmodel
new file mode 100644
index 0000000..050223b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.genmodel
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+ copyrightText=" Copyright (c)2020 CEA LIST, Committer Name, and others.

 All rights reserved. This program and the accompanying materials
 are made available under the terms of the Eclipse Public License 2.0
 which accompanies this distribution, and is available at
 https://www.eclipse.org/legal/epl-2.0/

 SPDX-License-Identifier: EPL-2.0

 Contributors:
 CEA LIST - Initial API and implementation
 Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
 Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 
"
+ modelDirectory="/org.eclipse.papyrus.pdp4eng.designer.profile/src" modelPluginID="org.eclipse.papyrus.designer.profile"
+ modelName="pdp4engDesign" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+ usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+ operationReflection="true" importOrganizing="true">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+ <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+ <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="REPORT"/>
+ <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+ <details key="NON_API_INVARIANTS" value="IGNORE"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+ <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+ <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+ <details key="VALIDATION_DELEGATES" value="PROCESS"/>
+ </genAnnotations>
+ <foreignModel>pdp4engDesign.profile.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="pdp4engDesign" basePackage="org.eclipse.papyrus.pdp4eng.designer.profile"
+ disposableProviderFactory="true" ecorePackage="pdp4engDesign.ecore#/">
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//OpaqueData"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataType">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataType/base_PrimitiveType"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//isPersonalData">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//isPersonalData/likelihood"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//isPersonalData/base_NamedElement"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//isPersonalData/base_Class"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataOutput">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataOutput/base_OutputPin"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataOutput/base_Parameter"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//Data">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//Data/base_Class"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataLink">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//DataLink/path"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataLink/type"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//CompositeData"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//Table"/>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//ExternalEntity">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//ExternalEntity/base_ActivityParameterNode"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//ExternalEntity/entity"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//Entity">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//Entity/base_NamedElement"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataStore">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataStore/base_DataStoreNode"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//DataInput">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataInput/base_InputPin"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//DataInput/base_Parameter"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//Process">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//Process/base_Activity"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//CallProcess">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//CallProcess/base_CallBehaviorAction"/>
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference pdp4engDesign.ecore#//CallProcess/base_OpaqueAction"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="pdp4engDesign.ecore#//SmartGridFrame">
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/concentratorID"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/userName"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/postcode"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/date"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/consumption"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/crc"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute pdp4engDesign.ecore#//SmartGridFrame/id"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.di b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.di
new file mode 100644
index 0000000..4f26340
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.uml.architecture.Profile"/>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.notation b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.notation
new file mode 100644
index 0000000..ce23978
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.notation
@@ -0,0 +1,1040 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_KDmV4Nf2Eemg9YvAnhgu3w" type="PapyrusUMLProfileDiagram" name="Profile Diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VhNzQNf3Eemg9YvAnhgu3w" type="Class_MetaclassShape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VhQPgNf3Eemg9YvAnhgu3w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2kNf3Eemg9YvAnhgu3w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2kdf3Eemg9YvAnhgu3w" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2ktf3Eemg9YvAnhgu3w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2k9f3Eemg9YvAnhgu3w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhQ2lNf3Eemg9YvAnhgu3w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VhPBYNf3Eemg9YvAnhgu3w" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VhPocNf3Eemg9YvAnhgu3w" x="240" y="40" width="141" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a63_kNf3Eemg9YvAnhgu3w" type="Class_MetaclassShape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a64motf3Eemg9YvAnhgu3w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a64mo9f3Eemg9YvAnhgu3w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a64mpNf3Eemg9YvAnhgu3w" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a64mpdf3Eemg9YvAnhgu3w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a64mptf3Eemg9YvAnhgu3w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a65NsNf3Eemg9YvAnhgu3w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a64moNf3Eemg9YvAnhgu3w" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a64modf3Eemg9YvAnhgu3w" x="620" y="40" width="141" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AGLYkNf4Eemg9YvAnhgu3w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_AGL_oNf4Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AGL_odf4Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AGL_otf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AGL_o9f4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AGL_pNf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AGL_pdf4Eemg9YvAnhgu3w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AGL_ptf4Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AGL_p9f4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AGL_qNf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AGL_qdf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AGL_qtf4Eemg9YvAnhgu3w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_AGAZcNf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AGLYkdf4Eemg9YvAnhgu3w" x="640" y="180" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JdiwkNf4Eemg9YvAnhgu3w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jdiwktf4Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Jdiwk9f4Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JdiwlNf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Jdiwldf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Jdiwltf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jdiwl9f4Eemg9YvAnhgu3w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JdiwmNf4Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Jdiwmdf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Jdiwmtf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Jdiwm9f4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JdiwnNf4Eemg9YvAnhgu3w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_Jdg7YNf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jdiwkdf4Eemg9YvAnhgu3w" x="240" y="160" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Sib4gNf4Eemg9YvAnhgu3w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Sib4gtf4Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SicfkNf4Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Sicfkdf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Sicfktf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Sicfk9f4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SicflNf4Eemg9YvAnhgu3w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Sicfldf4Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Sicfltf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Sicfl9f4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SicfmNf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sicfmdf4Eemg9YvAnhgu3w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_SiXAANf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sib4gdf4Eemg9YvAnhgu3w" x="240" y="360" width="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gFktYNf4Eemg9YvAnhgu3w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gFktYtf4Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gFktY9f4Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_zwwekNf4Eemg9YvAnhgu3w" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_zwn7sNf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zwwekdf4Eemg9YvAnhgu3w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hWJvANf5Eemg9YvAnhgu3w" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_hV4CMNf5Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hWJvAdf5Eemg9YvAnhgu3w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gFktZNf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gFktZdf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gFktZtf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFktZ9f4Eemg9YvAnhgu3w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gFktaNf4Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gFktadf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gFktatf4Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gFkta9f4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFktbNf4Eemg9YvAnhgu3w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_gFi4MNf4Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gFktYdf4Eemg9YvAnhgu3w" x="400" y="520" width="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NK26YNf5Eemg9YvAnhgu3w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_NK3hcNf5Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NK3hcdf5Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NK3hctf5Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NK3hc9f5Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NK3hdNf5Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NK3hddf5Eemg9YvAnhgu3w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_NK4IgNf5Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NK4Igdf5Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_NK4Igtf5Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_NK4Ig9f5Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NK4IhNf5Eemg9YvAnhgu3w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_NKwzwNf5Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NK26Ydf5Eemg9YvAnhgu3w" x="620" y="520" width="161" height="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VQwqgNf5Eemg9YvAnhgu3w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VQxRkNf5Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VQxRkdf5Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VQxRktf5Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VQxRk9f5Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VQxRlNf5Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VQxRldf5Eemg9YvAnhgu3w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VQxRltf5Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VQxRl9f5Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VQxRmNf5Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VQxRmdf5Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VQxRmtf5Eemg9YvAnhgu3w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_VQu1UNf5Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VQwqgdf5Eemg9YvAnhgu3w" x="820" y="520" width="141" height="121"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_I3ytQNf6Eemg9YvAnhgu3w" type="Class_MetaclassShape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I3ytRNf6Eemg9YvAnhgu3w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUUNf6Eemg9YvAnhgu3w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUUdf6Eemg9YvAnhgu3w" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUUtf6Eemg9YvAnhgu3w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUU9f6Eemg9YvAnhgu3w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I3zUVNf6Eemg9YvAnhgu3w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I3ytQtf6Eemg9YvAnhgu3w" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I3ytQ9f6Eemg9YvAnhgu3w" x="920" y="40" width="141" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_P0D70Nf6Eemg9YvAnhgu3w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_P0Ei4Nf6Eemg9YvAnhgu3w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P0Ei4df6Eemg9YvAnhgu3w" type="Stereotype_AttributeCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_R5FHkNf6Eemg9YvAnhgu3w" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_R4yMoNf6Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R5FHkdf6Eemg9YvAnhgu3w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P0Ei4tf6Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P0Ei49f6Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P0Ei5Nf6Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P0Ei5df6Eemg9YvAnhgu3w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P0Ei5tf6Eemg9YvAnhgu3w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P0Ei59f6Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P0Ei6Nf6Eemg9YvAnhgu3w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P0Ei6df6Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P0Ei6tf6Eemg9YvAnhgu3w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_P0ARcNf6Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P0D70df6Eemg9YvAnhgu3w" x="900" y="180" width="201"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xKzMINf8Eemg9YvAnhgu3w" type="Comment_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_xKzzMNf8Eemg9YvAnhgu3w" type="Comment_BodyLabel"/>
+ <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_xKiGYNf8Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xKzMIdf8Eemg9YvAnhgu3w" x="380" y="120" width="241" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YcH2cNf9Eemg9YvAnhgu3w" type="Comment_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YcIdgNf9Eemg9YvAnhgu3w" type="Comment_BodyLabel"/>
+ <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_YcFaMNf9Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YcH2cdf9Eemg9YvAnhgu3w" x="100" y="520" width="281"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2NVccNf9Eemg9YvAnhgu3w" type="Comment_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_2NVcctf9Eemg9YvAnhgu3w" type="Comment_BodyLabel"/>
+ <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_2NU1YNf9Eemg9YvAnhgu3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2NVccdf9Eemg9YvAnhgu3w" x="440" y="400" width="221" height="41"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_MUTKkN1DEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MUVm0N1DEemRdeFT-FlIPQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm0d1DEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm0t1DEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm091DEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm1N1DEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUVm1d1DEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_MUUYsN1DEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MUU_wN1DEemRdeFT-FlIPQ" x="2160" y="40" width="181" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QtibsN1DEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">
+ <children xmi:type="notation:DecorationNode" xmi:id="_QtjCwN1DEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QtjCwd1DEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QtjCwt1DEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QtjCw91DEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QtjCxN1DEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QtjCxd1DEemRdeFT-FlIPQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QtjCxt1DEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QtjCx91DEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QtjCyN1DEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QtjCyd1DEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QtjCyt1DEemRdeFT-FlIPQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_QtdjMN1DEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qtibsd1DEemRdeFT-FlIPQ" x="2160" y="180" width="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bd4_4N1DEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bd5m8t1DEemRdeFT-FlIPQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m891DEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m9N1DEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m9d1DEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m9t1DEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bd5m991DEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bd5m8N1DEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bd5m8d1DEemRdeFT-FlIPQ" x="1360" y="40" width="160" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iR0x0N1DEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">
+ <children xmi:type="notation:DecorationNode" xmi:id="_iR1Y4N1DEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iR1Y4d1DEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iR1Y4t1DEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iR1Y491DEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iR1Y5N1DEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iR1Y5d1DEemRdeFT-FlIPQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iR1Y5t1DEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iR1Y591DEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iR1Y6N1DEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iR1Y6d1DEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iR1Y6t1DEemRdeFT-FlIPQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_iRy8oN1DEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iR0x0d1DEemRdeFT-FlIPQ" x="1360" y="180" width="160"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HUVbMN1EEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HUWCQt1EEemRdeFT-FlIPQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCQ91EEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCRN1EEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCRd1EEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCRt1EEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HUWCR91EEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HUWCQN1EEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HUWCQd1EEemRdeFT-FlIPQ" x="1580" y="40" width="120" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_My5VoN1EEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">
+ <children xmi:type="notation:DecorationNode" xmi:id="_My58sN1EEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_My58sd1EEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_My58st1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_My58s91EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_My58tN1EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_My58td1EEemRdeFT-FlIPQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_My58tt1EEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_My58t91EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_My58uN1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_My58ud1EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_My58ut1EEemRdeFT-FlIPQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_My4ukN1EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_My5Vod1EEemRdeFT-FlIPQ" x="1580" y="180" width="120"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_U9Yq0N1EEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U9ZR4t1EEemRdeFT-FlIPQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR491EEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR5N1EEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR5d1EEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR5t1EEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U9ZR591EEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U9ZR4N1EEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U9ZR4d1EEemRdeFT-FlIPQ" x="1740" y="40" width="120" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bdMm4N1EEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bdMm4t1EEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bdMm491EEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bdMm5N1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bdMm5d1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bdMm5t1EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bdMm591EEemRdeFT-FlIPQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bdMm6N1EEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bdMm6d1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bdMm6t1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bdMm691EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bdMm7N1EEemRdeFT-FlIPQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_bdLYwN1EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bdMm4d1EEemRdeFT-FlIPQ" x="1740" y="180" width="120"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7FWgYN1EEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7FXHct1EEemRdeFT-FlIPQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHc91EEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHdN1EEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHdd1EEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHdt1EEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FXHd91EEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7FXHcN1EEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FXHcd1EEemRdeFT-FlIPQ" x="1920" y="40" width="160" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__BGkQN1EEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">
+ <children xmi:type="notation:DecorationNode" xmi:id="__BGkQt1EEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__BGkQ91EEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__BGkRN1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__BGkRd1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__BGkRt1EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__BGkR91EEemRdeFT-FlIPQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__BGkSN1EEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__BGkSd1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="__BGkSt1EEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="__BGkS91EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__BGkTN1EEemRdeFT-FlIPQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#__BFWIN1EEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__BGkQd1EEemRdeFT-FlIPQ" x="1940" y="180" width="140"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_U01g4N1GEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U01g5N1GEemRdeFT-FlIPQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g5d1GEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g5t1GEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g591GEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g6N1GEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U01g6d1GEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U01g4t1GEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U01g491GEemRdeFT-FlIPQ" x="1360" y="420" width="160" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aLMhkN1GEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">
+ <children xmi:type="notation:DecorationNode" xmi:id="_aLMhkt1GEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aLMhk91GEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aLMhlN1GEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aLMhld1GEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aLMhlt1GEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aLMhl91GEemRdeFT-FlIPQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aLNIoN1GEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aLNIod1GEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aLNIot1GEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aLNIo91GEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aLNIpN1GEemRdeFT-FlIPQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_aLL6gN1GEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aLMhkd1GEemRdeFT-FlIPQ" x="1380" y="560" width="140"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yP4poN1GEemRdeFT-FlIPQ" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yP4ppN1GEemRdeFT-FlIPQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4ppd1GEemRdeFT-FlIPQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4ppt1GEemRdeFT-FlIPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4pp91GEemRdeFT-FlIPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4pqN1GEemRdeFT-FlIPQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yP4pqd1GEemRdeFT-FlIPQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yP4pot1GEemRdeFT-FlIPQ" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yP4po91GEemRdeFT-FlIPQ" x="1580" y="420" width="160" height="60"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_93zvAN1GEemRdeFT-FlIPQ" type="Stereotype_Shape" fillColor="12621752">
+ <children xmi:type="notation:DecorationNode" xmi:id="_930WEN1GEemRdeFT-FlIPQ" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_930WEd1GEemRdeFT-FlIPQ" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_930WEt1GEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_930WE91GEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_930WFN1GEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_930WFd1GEemRdeFT-FlIPQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_930WFt1GEemRdeFT-FlIPQ" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_930WF91GEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_930WGN1GEemRdeFT-FlIPQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_930WGd1GEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_930WGt1GEemRdeFT-FlIPQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_93zH8N1GEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_93zvAd1GEemRdeFT-FlIPQ" x="1600" y="560" width="140"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5OpWEN1HEemRdeFT-FlIPQ" type="Comment_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5Op9IN1HEemRdeFT-FlIPQ" type="Comment_BodyLabel"/>
+ <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_5Ong4N1HEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5OpWEd1HEemRdeFT-FlIPQ" x="-1" y="40" width="201"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__lj00N1HEemRdeFT-FlIPQ" type="Comment_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="__lj00t1HEemRdeFT-FlIPQ" type="Comment_BodyLabel"/>
+ <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#__lh_oN1HEemRdeFT-FlIPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__lj00d1HEemRdeFT-FlIPQ" x="1111" y="40" width="209"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wRCB8N3jEemd764Om4vVaw" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wRD3IN3jEemd764Om4vVaw" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wRD3Id3jEemd764Om4vVaw" type="Stereotype_AttributeCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_6dOJIN3jEemd764Om4vVaw" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_6Qn3kN3jEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6dOJId3jEemd764Om4vVaw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VWn0gN3kEemd764Om4vVaw" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_VKQzgN3kEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VWn0gd3kEemd764Om4vVaw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_MB9q4N3nEemd764Om4vVaw" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_L1ulsN3nEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MB9q4d3nEemd764Om4vVaw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qYwqMN3nEemd764Om4vVaw" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_qMP4MN3nEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qYwqMd3nEemd764Om4vVaw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-3uowN3nEemd764Om4vVaw" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_-rnfYN3nEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-3uowd3nEemd764Om4vVaw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9UrsMN3oEemd764Om4vVaw" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_9IPLoN3oEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9UrsMd3oEemd764Om4vVaw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TIyNsN4VEemd764Om4vVaw" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="pdp4engDesign.profile.uml#_S6R3oN4VEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TIyNsd4VEemd764Om4vVaw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wRD3It3jEemd764Om4vVaw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wRD3I93jEemd764Om4vVaw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wRD3JN3jEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wRD3Jd3jEemd764Om4vVaw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wRD3Jt3jEemd764Om4vVaw" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wRD3J93jEemd764Om4vVaw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_wRD3KN3jEemd764Om4vVaw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_wRD3Kd3jEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wRD3Kt3jEemd764Om4vVaw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="pdp4engDesign.profile.uml#_wQLtYN3jEemd764Om4vVaw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wRCB8d3jEemd764Om4vVaw" x="720" y="720" width="241" height="180"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DDHz8N_REemY2N9mLr0t_A" type="Comment_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DDKQMN_REemY2N9mLr0t_A" type="Comment_BodyLabel"/>
+ <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_DCIVcN_REemY2N9mLr0t_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DDHz8d_REemY2N9mLr0t_A" x="1120" y="180" height="41"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ll_rADw2Eeq4CulPkgdiyw" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LmCuUDw2Eeq4CulPkgdiyw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVYDw2Eeq4CulPkgdiyw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVYTw2Eeq4CulPkgdiyw" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVYjw2Eeq4CulPkgdiyw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVYzw2Eeq4CulPkgdiyw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LmDVZDw2Eeq4CulPkgdiyw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LmCHQDw2Eeq4CulPkgdiyw" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LmCHQTw2Eeq4CulPkgdiyw" x="1660" y="-80" width="121" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tzSTYDw5EeqAXbhiSoKbXQ" type="Comment_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tzUIkDw5EeqAXbhiSoKbXQ" type="Comment_BodyLabel"/>
+ <element xmi:type="uml:Comment" href="pdp4engDesign.profile.uml#_tyS04Dw5EeqAXbhiSoKbXQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tzSTYTw5EeqAXbhiSoKbXQ" x="1820" y="340" width="201"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0w--MFQHEeqg5faUSU0D9Q" type="Class_MetaclassShape" fillColor="12621752">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0xAzYFQHEeqg5faUSU0D9Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBacFQHEeqg5faUSU0D9Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBacVQHEeqg5faUSU0D9Q" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBaclQHEeqg5faUSU0D9Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBac1QHEeqg5faUSU0D9Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0xBadFQHEeqg5faUSU0D9Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0w_lQFQHEeqg5faUSU0D9Q" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0xAMUFQHEeqg5faUSU0D9Q" x="1780" y="420" width="141" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Nq0y4FSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Nq0y4VSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nq0y41SHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nq0y4lSHEeq7oNgDaAroEA" x="440" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NrAZEFSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NrAZEVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NrBAIFSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NrAZElSHEeq7oNgDaAroEA" x="820" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NreTIFSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NreTIVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NreTI1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NreTIlSHEeq7oNgDaAroEA" x="1120" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NruKw1SHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NruKxFSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NruKxlSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NruKxVSHEeq7oNgDaAroEA" x="2360" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Nr_QgFSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Nr_QgVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nr_3kFSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nr_QglSHEeq7oNgDaAroEA" x="1560" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NsPvMFSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NsPvMVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NsPvM1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NsPvMlSHEeq7oNgDaAroEA" x="1780" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Nsfm0FSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Nsfm0VSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nsfm01SHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nsfm0lSHEeq7oNgDaAroEA" x="1940" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Nsu3YFSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Nsu3YVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nsu3Y1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nsu3YlSHEeq7oNgDaAroEA" x="2120" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ns5Pc1SHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ns5PdFSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ns5PdlSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ns5PdVSHEeq7oNgDaAroEA" x="1560" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NtDng1SHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NtDnhFSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtDnhlSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NtDnhVSHEeq7oNgDaAroEA" x="1780" y="420"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NtXJgFSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NtXJgVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtXJg1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NtXJglSHEeq7oNgDaAroEA" x="1860" y="-80"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_NtivsFSHEeq7oNgDaAroEA" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_NtivsVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ntivs1SHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NtivslSHEeq7oNgDaAroEA" x="1980" y="420"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_KDmV4df2Eemg9YvAnhgu3w" name="diagram_compatibility_version" stringValue="1.4.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_KDmV4tf2Eemg9YvAnhgu3w"/>
+ <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_KDmV49f2Eemg9YvAnhgu3w" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+ <owner xmi:type="uml:Profile" href="pdp4engDesign.profile.uml#_KCC2sNf2Eemg9YvAnhgu3w"/>
+ </styles>
+ <element xmi:type="uml:Profile" href="pdp4engDesign.profile.uml#_KCC2sNf2Eemg9YvAnhgu3w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_DICAANf4Eemg9YvAnhgu3w" type="Extension_Edge" source="_AGLYkNf4Eemg9YvAnhgu3w" target="_a63_kNf3Eemg9YvAnhgu3w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_DICAAdf4Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_DHt28Nf4Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DICAAtf4Eemg9YvAnhgu3w" points="[700, 180, -643984, -643984]$[700, 101, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DIM_INf4Eemg9YvAnhgu3w" id="(0.49586776859504134,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DIM_Idf4Eemg9YvAnhgu3w" id="(0.5673758865248227,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_M0MjUNf4Eemg9YvAnhgu3w" type="Extension_Edge" source="_JdiwkNf4Eemg9YvAnhgu3w" target="_VhNzQNf3Eemg9YvAnhgu3w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_M0MjUdf4Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_M0BkMNf4Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_M0MjUtf4Eemg9YvAnhgu3w" points="[300, 160, -643984, -643984]$[300, 101, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M0YwkNf4Eemg9YvAnhgu3w" id="(0.49586776859504134,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M0Ywkdf4Eemg9YvAnhgu3w" id="(0.425531914893617,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_VA10oNf4Eemg9YvAnhgu3w" type="Generalization_Edge" source="_Sib4gNf4Eemg9YvAnhgu3w" target="_JdiwkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_VA2bsNf4Eemg9YvAnhgu3w" type="Generalization_StereotypeLabel">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VA2bsdf4Eemg9YvAnhgu3w" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_VA10odf4Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_VAuf4Nf4Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VA10otf4Eemg9YvAnhgu3w" points="[300, 360, -643984, -643984]$[300, 260, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VBLy4Nf4Eemg9YvAnhgu3w" id="(0.49586776859504134,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VBLy4df4Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mPdcwNf4Eemg9YvAnhgu3w" type="Generalization_Edge" source="_gFktYNf4Eemg9YvAnhgu3w" target="_AGLYkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_mPdcw9f4Eemg9YvAnhgu3w" type="Generalization_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_nEQWwNf4Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mPdcxNf4Eemg9YvAnhgu3w" y="179"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_mPdcwdf4Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_mPWIANf4Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mPdcwtf4Eemg9YvAnhgu3w" points="[480, 520, -643984, -643984]$[480, 480, -643984, -643984]$[700, 480, -643984, -643984]$[700, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mPrfMNf4Eemg9YvAnhgu3w" id="(0.4419889502762431,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mPrfMdf4Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PyfrANf5Eemg9YvAnhgu3w" type="Generalization_Edge" source="_NK26YNf5Eemg9YvAnhgu3w" target="_AGLYkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PyfrA9f5Eemg9YvAnhgu3w" type="Generalization_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_RYL2cNf5Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PyfrBNf5Eemg9YvAnhgu3w" x="-1" y="59"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_PyfrAdf5Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_PyXvMNf5Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PyfrAtf5Eemg9YvAnhgu3w" points="[720, 400, -643984, -643984]$[700, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PywwwNf5Eemg9YvAnhgu3w" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pywwwdf5Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_W_nZANf5Eemg9YvAnhgu3w" type="Generalization_Edge" source="_VQwqgNf5Eemg9YvAnhgu3w" target="_AGLYkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_W_oAENf5Eemg9YvAnhgu3w" type="Generalization_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_XZ_n4Nf5Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_W_oAEdf5Eemg9YvAnhgu3w" x="-1" y="58"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_W_nZAdf5Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_W_YvgNf5Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_W_nZAtf5Eemg9YvAnhgu3w" points="[900, 520, -643984, -643984]$[900, 480, -643984, -643984]$[700, 480, -643984, -643984]$[700, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_W_6T8Nf5Eemg9YvAnhgu3w" id="(0.5673758865248227,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_W_6T8df5Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kLa2gNf6Eemg9YvAnhgu3w" type="Extension_Edge" source="_P0D70Nf6Eemg9YvAnhgu3w" target="_I3ytQNf6Eemg9YvAnhgu3w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kLa2gdf6Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_kLP3YNf6Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kLa2gtf6Eemg9YvAnhgu3w" points="[1000, 180, -643984, -643984]$[1000, 101, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kLr8QNf6Eemg9YvAnhgu3w" id="(0.4975124378109453,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kLr8Qdf6Eemg9YvAnhgu3w" id="(0.5673758865248227,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_k39MYNf6Eemg9YvAnhgu3w" type="Extension_Edge" source="_P0D70Nf6Eemg9YvAnhgu3w" target="_a63_kNf3Eemg9YvAnhgu3w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_k39MYdf6Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_k3pDUNf6Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_k39MYtf6Eemg9YvAnhgu3w" points="[980, 180, -643984, -643984]$[980, 140, -643984, -643984]$[720, 140, -643984, -643984]$[720, 101, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k4OSINf6Eemg9YvAnhgu3w" id="(0.39800995024875624,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k4OSIdf6Eemg9YvAnhgu3w" id="(0.7092198581560284,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_V925sNf8Eemg9YvAnhgu3w" type="Dependency_Edge" source="_gFktYNf4Eemg9YvAnhgu3w" target="_JdiwkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_V925s9f8Eemg9YvAnhgu3w" type="Dependency_NameLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_uoTaMNf8Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V925tNf8Eemg9YvAnhgu3w" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V925tdf8Eemg9YvAnhgu3w" type="Dependency_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_uobWANf8Eemg9YvAnhgu3w" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_V925ttf8Eemg9YvAnhgu3w" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_V925sdf8Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Dependency" href="pdp4engDesign.profile.uml#_V9zPUNf8Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_V925stf8Eemg9YvAnhgu3w" points="[460, 520, -643984, -643984]$[420, 200, -643984, -643984]$[360, 200, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V-SXgNf8Eemg9YvAnhgu3w" id="(0.11049723756906077,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V-SXgdf8Eemg9YvAnhgu3w" id="(0.9917355371900827,0.4)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_sayZwNf8Eemg9YvAnhgu3w" type="Dependency_Edge" source="_NK26YNf5Eemg9YvAnhgu3w" target="_AGLYkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_sayZw9f8Eemg9YvAnhgu3w" type="Dependency_NameLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WZSysN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sayZxNf8Eemg9YvAnhgu3w" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sayZxdf8Eemg9YvAnhgu3w" type="Dependency_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WgsbMN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sayZxtf8Eemg9YvAnhgu3w" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_sayZwdf8Eemg9YvAnhgu3w"/>
+ <element xmi:type="uml:Dependency" href="pdp4engDesign.profile.uml#_saxLoNf8Eemg9YvAnhgu3w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sayZwtf8Eemg9YvAnhgu3w" points="[781, 460, -643984, -643984]$[761, 240, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sbNQgNf8Eemg9YvAnhgu3w" id="(0.37267080745341613,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sbNQgdf8Eemg9YvAnhgu3w" id="(0.3305785123966942,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Te_1INf9Eemg9YvAnhgu3w" type="Comment_AnnotatedElementEdge" source="_xKzMINf8Eemg9YvAnhgu3w" target="_V925sNf8Eemg9YvAnhgu3w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Te_1Idf9Eemg9YvAnhgu3w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Te_1Itf9Eemg9YvAnhgu3w" points="[560, 182, -643984, -643984]$[458, 200, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Tj7_gNf9Eemg9YvAnhgu3w" id="(0.8298755186721992,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Tj7_gdf9Eemg9YvAnhgu3w" id="(0.873015873015873,0.24568965517241378)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_w2vyQNf9Eemg9YvAnhgu3w" type="Comment_AnnotatedElementEdge" source="_YcH2cNf9Eemg9YvAnhgu3w" target="_Sib4gNf4Eemg9YvAnhgu3w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_w2vyQdf9Eemg9YvAnhgu3w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w2vyQtf9Eemg9YvAnhgu3w" points="[381, 560, -643984, -643984]$[300, 460, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xAuNoNf9Eemg9YvAnhgu3w" id="(0.7117437722419929,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xAuNodf9Eemg9YvAnhgu3w" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__TK_kNf9Eemg9YvAnhgu3w" type="Comment_AnnotatedElementEdge" source="_2NVccNf9Eemg9YvAnhgu3w" target="_sayZwNf8Eemg9YvAnhgu3w">
+ <styles xmi:type="notation:FontStyle" xmi:id="__TK_kdf9Eemg9YvAnhgu3w"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__TK_ktf9Eemg9YvAnhgu3w" points="[1141, 340, -643984, -643984]$[740, 315, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__hPQwNf9Eemg9YvAnhgu3w" id="(0.6334841628959276,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__hP30Nf9Eemg9YvAnhgu3w" id="(0.4864864864864865,0.32653061224489793)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_B-sMMN1EEemRdeFT-FlIPQ" type="Extension_Edge" source="_QtibsN1DEemRdeFT-FlIPQ" target="_MUTKkN1DEemRdeFT-FlIPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_B-sMMd1EEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_B3OSQN1EEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_B-sMMt1EEemRdeFT-FlIPQ" points="[2000, 180, -643984, -643984]$[2000, 100, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CNe2IN1EEemRdeFT-FlIPQ" id="(0.4419889502762431,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CNe2Id1EEemRdeFT-FlIPQ" id="(0.4419889502762431,0.9836065573770492)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_DR45cN1EEemRdeFT-FlIPQ" type="Extension_Edge" source="_iR0x0N1DEemRdeFT-FlIPQ" target="_bd4_4N1DEemRdeFT-FlIPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_DR45cd1EEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_DKmlsN1EEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DR45ct1EEemRdeFT-FlIPQ" points="[1465, 180, -643984, -643984]$[1465, 40, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DgQsoN1EEemRdeFT-FlIPQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DgQsod1EEemRdeFT-FlIPQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_adGb0N1EEemRdeFT-FlIPQ" type="Extension_Edge" source="_My5VoN1EEemRdeFT-FlIPQ" target="_HUVbMN1EEemRdeFT-FlIPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_adGb0d1EEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_aV19QN1EEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_adGb0t1EEemRdeFT-FlIPQ" points="[1665, 180, -643984, -643984]$[1665, 100, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_arNwUN1EEemRdeFT-FlIPQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_arNwUd1EEemRdeFT-FlIPQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gU4ukN1EEemRdeFT-FlIPQ" type="Extension_Edge" source="_bdMm4N1EEemRdeFT-FlIPQ" target="_U9Yq0N1EEemRdeFT-FlIPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_gU4ukd1EEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_gNXxUN1EEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gU4ukt1EEemRdeFT-FlIPQ" points="[1825, 180, -643984, -643984]$[1825, 100, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gjDtcN1EEemRdeFT-FlIPQ" id="(0.5,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gjDtcd1EEemRdeFT-FlIPQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_CLif8N1FEemRdeFT-FlIPQ" type="Extension_Edge" source="__BGkQN1EEemRdeFT-FlIPQ" target="_7FWgYN1EEemRdeFT-FlIPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_CLif8d1FEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_CEDX4N1FEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CLif8t1FEemRdeFT-FlIPQ" points="[1825, 180, -643984, -643984]$[1825, 100, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CZ5sEN1FEemRdeFT-FlIPQ" id="(0.42857142857142855,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CZ5sEd1FEemRdeFT-FlIPQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GMd-wN1FEemRdeFT-FlIPQ" type="Association_Edge" source="_QtibsN1DEemRdeFT-FlIPQ" target="__BGkQN1EEemRdeFT-FlIPQ">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GMd-w91FEemRdeFT-FlIPQ" type="Association_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PYSOEN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel0N1FEemRdeFT-FlIPQ" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GMel0d1FEemRdeFT-FlIPQ" type="Association_NameLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PfisoN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel0t1FEemRdeFT-FlIPQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GMel091FEemRdeFT-FlIPQ" type="Association_TargetRoleLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PnK-oN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel1N1FEemRdeFT-FlIPQ" x="-16" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GMel1d1FEemRdeFT-FlIPQ" type="Association_SourceRoleLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PuPP8N1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel1t1FEemRdeFT-FlIPQ" x="16" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GMel191FEemRdeFT-FlIPQ" type="Association_SourceMultiplicityLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_P1V9gN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel2N1FEemRdeFT-FlIPQ" x="16" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GMel2d1FEemRdeFT-FlIPQ" type="Association_TargetMultiplicityLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_P8bc8N1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GMel2t1FEemRdeFT-FlIPQ" x="-16" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GMd-wd1FEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Association" href="pdp4engDesign.profile.uml#_GFLD8N1FEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GMd-wt1FEemRdeFT-FlIPQ" points="[1985, 220, -643984, -643984]$[1905, 220, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Gb0CUN1FEemRdeFT-FlIPQ" id="(0.0,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Gb0CUd1FEemRdeFT-FlIPQ" id="(1.0,0.4)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_tiaDUN1FEemRdeFT-FlIPQ" type="Association_Edge" source="_iR0x0N1DEemRdeFT-FlIPQ" target="_AGLYkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tiaqYN1FEemRdeFT-FlIPQ" type="Association_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vpqDsN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqYd1FEemRdeFT-FlIPQ" x="1" y="58"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tiaqYt1FEemRdeFT-FlIPQ" type="Association_NameLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_vw5UIN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqY91FEemRdeFT-FlIPQ" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tiaqZN1FEemRdeFT-FlIPQ" type="Association_TargetRoleLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_v4H9gN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqZd1FEemRdeFT-FlIPQ" x="-156" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tiaqZt1FEemRdeFT-FlIPQ" type="Association_SourceRoleLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_v_RuYN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqZ91FEemRdeFT-FlIPQ" x="27" y="-57"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tiaqaN1FEemRdeFT-FlIPQ" type="Association_SourceMultiplicityLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wGdUcN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqad1FEemRdeFT-FlIPQ" x="39" y="-87"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tiaqat1FEemRdeFT-FlIPQ" type="Association_TargetMultiplicityLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wOcy0N1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tiaqa91FEemRdeFT-FlIPQ" x="-157" y="-18"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tiaDUd1FEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Association" href="pdp4engDesign.profile.uml#_tbKL0N1FEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tiaDUt1FEemRdeFT-FlIPQ" points="[1400, 280, -643984, -643984]$[1400, 360, -643984, -643984]$[740, 360, -643984, -643984]$[700, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_twzrsN1FEemRdeFT-FlIPQ" id="(0.25,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_twzrsd1FEemRdeFT-FlIPQ" id="(0.8264462809917356,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_yduGwN1FEemRdeFT-FlIPQ" type="Association_Edge" source="_My5VoN1EEemRdeFT-FlIPQ" target="_AGLYkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ydut0N1FEemRdeFT-FlIPQ" type="Association_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zO7hQN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut0d1FEemRdeFT-FlIPQ" x="-1" y="58"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ydut0t1FEemRdeFT-FlIPQ" type="Association_NameLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zWErEN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut091FEemRdeFT-FlIPQ" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ydut1N1FEemRdeFT-FlIPQ" type="Association_TargetRoleLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zeEJcN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut1d1FEemRdeFT-FlIPQ" x="-123" y="-92"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ydut1t1FEemRdeFT-FlIPQ" type="Association_SourceRoleLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zlK3AN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut191FEemRdeFT-FlIPQ" x="27" y="2"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ydut2N1FEemRdeFT-FlIPQ" type="Association_SourceMultiplicityLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zsPIUN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut2d1FEemRdeFT-FlIPQ" x="47" y="-26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ydut2t1FEemRdeFT-FlIPQ" type="Association_TargetMultiplicityLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_zzTZoN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ydut291FEemRdeFT-FlIPQ" x="-121" y="-130"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_yduGwd1FEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Association" href="pdp4engDesign.profile.uml#_yWL7YN1FEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yduGwt1FEemRdeFT-FlIPQ" points="[1640, 280, -643984, -643984]$[1640, 360, -643984, -643984]$[740, 360, -643984, -643984]$[740, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ysCPkN1FEemRdeFT-FlIPQ" id="(0.5,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ysCPkd1FEemRdeFT-FlIPQ" id="(0.8264462809917356,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_65D7YN1FEemRdeFT-FlIPQ" type="Association_Edge" source="_bdMm4N1EEemRdeFT-FlIPQ" target="_AGLYkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_65D7Y91FEemRdeFT-FlIPQ" type="Association_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_72d-0N1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7ZN1FEemRdeFT-FlIPQ" x="-1" y="58"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_65D7Zd1FEemRdeFT-FlIPQ" type="Association_NameLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_7-JUIN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7Zt1FEemRdeFT-FlIPQ" x="-1" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_65D7Z91FEemRdeFT-FlIPQ" type="Association_TargetRoleLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8FJ7EN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7aN1FEemRdeFT-FlIPQ" x="-230" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_65D7ad1FEemRdeFT-FlIPQ" type="Association_SourceRoleLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8MKiAN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7at1FEemRdeFT-FlIPQ" x="27" y="-23"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_65D7a91FEemRdeFT-FlIPQ" type="Association_SourceMultiplicityLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8TMXEN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7bN1FEemRdeFT-FlIPQ" x="47" y="-26"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_65D7bd1FEemRdeFT-FlIPQ" type="Association_TargetMultiplicityLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8aM-AN1FEemRdeFT-FlIPQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_65D7bt1FEemRdeFT-FlIPQ" x="-230" y="-19"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_65D7Yd1FEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Association" href="pdp4engDesign.profile.uml#_6x6KgN1FEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_65D7Yt1FEemRdeFT-FlIPQ" points="[1800, 280, -643984, -643984]$[1800, 360, -643984, -643984]$[740, 360, -643984, -643984]$[720, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7H62wN1FEemRdeFT-FlIPQ" id="(0.5,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7H62wd1FEemRdeFT-FlIPQ" id="(0.8264462809917356,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_eqae4N1GEemRdeFT-FlIPQ" type="Extension_Edge" source="_aLMhkN1GEemRdeFT-FlIPQ" target="_U01g4N1GEemRdeFT-FlIPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_eqae4d1GEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_ejILIN1GEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eqae4t1GEemRdeFT-FlIPQ" points="[1440, 560, -643984, -643984]$[1440, 480, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e4jBgN1GEemRdeFT-FlIPQ" id="(0.4285714285714275,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e4jBgd1GEemRdeFT-FlIPQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_F0M90N1HEemRdeFT-FlIPQ" type="Extension_Edge" source="_93zvAN1GEemRdeFT-FlIPQ" target="_yP4poN1GEemRdeFT-FlIPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_F0M90d1HEemRdeFT-FlIPQ"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_Fs8fQN1HEemRdeFT-FlIPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F0M90t1HEemRdeFT-FlIPQ" points="[1660, 560, -643984, -643984]$[1660, 480, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCSdIN1HEemRdeFT-FlIPQ" id="(0.42857142857142855,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GCSdId1HEemRdeFT-FlIPQ" id="(0.5,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_G_83oN3pEemd764Om4vVaw" type="Generalization_Edge" source="_wRCB8N3jEemd764Om4vVaw" target="_AGLYkNf4Eemg9YvAnhgu3w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_G_9esN3pEemd764Om4vVaw" type="Generalization_StereotypeLabel">
+ <styles xmi:type="notation:BooleanValueStyle" xmi:id="_UQfgoN3pEemd764Om4vVaw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G_9esd3pEemd764Om4vVaw" x="-1" y="58"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_G_83od3pEemd764Om4vVaw"/>
+ <element xmi:type="uml:Generalization" href="pdp4engDesign.profile.uml#_Gy_ZsN3pEemd764Om4vVaw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_G_83ot3pEemd764Om4vVaw" points="[820, 740, -643984, -643984]$[800, 480, -643984, -643984]$[720, 480, -643984, -643984]$[720, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HYmBIN3pEemd764Om4vVaw" id="(0.33195020746887965,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HYmBId3pEemd764Om4vVaw" id="(0.6611570247933884,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_N18dUN_REemY2N9mLr0t_A" type="Comment_AnnotatedElementEdge" source="_DDHz8N_REemY2N9mLr0t_A" target="_P0D70Nf6Eemg9YvAnhgu3w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_N18dUd_REemY2N9mLr0t_A"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_N18dUt_REemY2N9mLr0t_A" points="[1306, 220, -643984, -643984]$[1101, 240, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OXXIUN_REemY2N9mLr0t_A" id="(0.21505376344086022,1.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OXXIUd_REemY2N9mLr0t_A" id="(1.0,0.594059405940594)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bGzGcDw2Eeq4CulPkgdiyw" type="Extension_Edge" source="_My5VoN1EEemRdeFT-FlIPQ" target="_Ll_rADw2Eeq4CulPkgdiyw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_bGzGcTw2Eeq4CulPkgdiyw"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_a2DUsDw2Eeq4CulPkgdiyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bGzGcjw2Eeq4CulPkgdiyw" points="[1660, 180, -643984, -643984]$[1660, 140, -643984, -643984]$[1720, 140, -643984, -643984]$[1720, -19, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_boZXoDw2Eeq4CulPkgdiyw" id="(0.6666666666666666,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_boZXoTw2Eeq4CulPkgdiyw" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jajFUDw2Eeq4CulPkgdiyw" type="Extension_Edge" source="_bdMm4N1EEemRdeFT-FlIPQ" target="_Ll_rADw2Eeq4CulPkgdiyw">
+ <styles xmi:type="notation:FontStyle" xmi:id="_jajFUTw2Eeq4CulPkgdiyw"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_jJhmwDw2Eeq4CulPkgdiyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jajFUjw2Eeq4CulPkgdiyw" points="[1780, 180, -643984, -643984]$[1780, 140, -643984, -643984]$[1720, 140, -643984, -643984]$[1720, -19, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_j_08oDw2Eeq4CulPkgdiyw" id="(0.3333333333333333,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_j_08oTw2Eeq4CulPkgdiyw" id="(0.49586776859504134,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_AFeb4Dw7Eeq_nqtGu0tpGg" type="Comment_AnnotatedElementEdge" source="_tzSTYDw5EeqAXbhiSoKbXQ" target="_bdMm4N1EEemRdeFT-FlIPQ">
+ <styles xmi:type="notation:FontStyle" xmi:id="_AFeb4Tw7Eeq_nqtGu0tpGg"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AFeb4jw7Eeq_nqtGu0tpGg" points="[1880, 340, -643984, -643984]$[1820, 280, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AoELkDw7Eeq_nqtGu0tpGg" id="(0.29850746268656714,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AoELkTw7Eeq_nqtGu0tpGg" id="(0.6666666666666666,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_27yB0FQHEeqg5faUSU0D9Q" type="Extension_Edge" source="_93zvAN1GEemRdeFT-FlIPQ" target="_0w--MFQHEeqg5faUSU0D9Q">
+ <styles xmi:type="notation:FontStyle" xmi:id="_27yB0VQHEeqg5faUSU0D9Q"/>
+ <element xmi:type="uml:Extension" href="pdp4engDesign.profile.uml#_22MXMFQHEeqg5faUSU0D9Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_27yB0lQHEeqg5faUSU0D9Q" points="[1680, 560, -643984, -643984]$[1680, 520, -643984, -643984]$[1840, 520, -643984, -643984]$[1840, 481, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F_GsFQHEeqg5faUSU0D9Q" id="(0.5714285714285714,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3F_GsVQHEeqg5faUSU0D9Q" id="(0.425531914893617,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Nq1Z8FSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_VhNzQNf3Eemg9YvAnhgu3w" target="_Nq0y4FSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Nq1Z8VSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nq2BAFSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nq1Z8lSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nq1Z81SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nq1Z9FSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NrBAIVSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_a63_kNf3Eemg9YvAnhgu3w" target="_NrAZEFSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NrBAIlSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NrBAJlSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NrBAI1SHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NrBAJFSHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NrBAJVSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NreTJFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_I3ytQNf6Eemg9YvAnhgu3w" target="_NreTIFSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NreTJVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nre6MFSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NreTJlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NreTJ1SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NreTKFSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Nrux0FSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_MUTKkN1DEemRdeFT-FlIPQ" target="_NruKw1SHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Nrux0VSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nrux1VSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nrux0lSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nrux01SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nrux1FSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Nr_3kVSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_bd4_4N1DEemRdeFT-FlIPQ" target="_Nr_QgFSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Nr_3klSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nr_3llSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nr_3k1SHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nr_3lFSHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nr_3lVSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NsPvNFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_HUVbMN1EEemRdeFT-FlIPQ" target="_NsPvMFSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NsPvNVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NsPvOVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NsPvNlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NsPvN1SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NsPvOFSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Nsfm1FSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_U9Yq0N1EEemRdeFT-FlIPQ" target="_Nsfm0FSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Nsfm1VSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nsfm2VSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nsfm1lSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nsfm11SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nsfm2FSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Nsu3ZFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_7FWgYN1EEemRdeFT-FlIPQ" target="_Nsu3YFSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Nsu3ZVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Nsu3aVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nsu3ZlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nsu3Z1SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nsu3aFSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Ns5Pd1SHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_U01g4N1GEemRdeFT-FlIPQ" target="_Ns5Pc1SHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Ns5PeFSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ns52glSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ns5PeVSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ns52gFSHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ns52gVSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NtEOkFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_yP4poN1GEemRdeFT-FlIPQ" target="_NtDng1SHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NtEOkVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtEOlVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NtEOklSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtEOk1SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtEOlFSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NtXJhFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_Ll_rADw2Eeq4CulPkgdiyw" target="_NtXJgFSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NtXJhVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtXJiVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NtXJhlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtXJh1SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtXJiFSHEeq7oNgDaAroEA"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NtivtFSHEeq7oNgDaAroEA" type="StereotypeCommentLink" source="_0w--MFQHEeqg5faUSU0D9Q" target="_NtivsFSHEeq7oNgDaAroEA">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NtivtVSHEeq7oNgDaAroEA"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_NtivuVSHEeq7oNgDaAroEA" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NtivtlSHEeq7oNgDaAroEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ntivt1SHEeq7oNgDaAroEA"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NtivuFSHEeq7oNgDaAroEA"/>
+ </edges>
+</notation:Diagram>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.uml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.uml
new file mode 100644
index 0000000..fb02312
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/model/pdp4engDesign.profile.uml
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Profile xmi:id="_KCC2sNf2Eemg9YvAnhgu3w" name="pdp4engDesign" metaclassReference="_VhITsNf3Eemg9YvAnhgu3w _a62xcNf3Eemg9YvAnhgu3w _y2-MUNf3Eemg9YvAnhgu3w _I3xfINf6Eemg9YvAnhgu3w _h9j30Nf6Eemg9YvAnhgu3w _MTddEN1DEemRdeFT-FlIPQ _bd18kN1DEemRdeFT-FlIPQ _HUUNEN1EEemRdeFT-FlIPQ _U9YDwN1EEemRdeFT-FlIPQ _U00SwN1GEemRdeFT-FlIPQ _yP3bgN1GEemRdeFT-FlIPQ _Lk9JMDw2Eeq4CulPkgdiyw _0w8h8FQHEeqg5faUSU0D9Q">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DaV3ANgDEemg9YvAnhgu3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0w7T0FQHEeqg5faUSU0D9Q" source="PapyrusVersion">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T0VQHEeqg5faUSU0D9Q" key="Version" value="0.0.0"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T0lQHEeqg5faUSU0D9Q" key="Comment" value="<undefined>"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T01QHEeqg5faUSU0D9Q" key="Copyright" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T1FQHEeqg5faUSU0D9Q" key="Date" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0w7T1VQHEeqg5faUSU0D9Q" key="Author" value="<undefined>"/>
+ </eAnnotations>
+ </eAnnotations>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_xKiGYNf8Eemg9YvAnhgu3w" annotatedElement="_V9zPUNf8Eemg9YvAnhgu3w">
+ <body>DataLinks are typed with a DataType. The DataType contains a library of categories for data typing.
+</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_YcFaMNf9Eemg9YvAnhgu3w" annotatedElement="_SiXAANf4Eemg9YvAnhgu3w">
+ <body>OpaqueData are data which are not directly interpretable: further tokens are necessary to transform them into a readable form. This data type can be useful to model special data types like for instance ciphered data.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_2NU1YNf9Eemg9YvAnhgu3w" annotatedElement="_saxLoNf8Eemg9YvAnhgu3w">
+ <body>CompositeData play the role of data containers and thus they can contain other data.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_5Ong4N1HEemRdeFT-FlIPQ">
+ <body>Elements in gray support the implementation of data-centric models</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="__lh_oN1HEemRdeFT-FlIPQ">
+ <body>Elements in magenta support the implementation of process-centric models (DFDs)</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_DCIVcN_REemY2N9mLr0t_A" annotatedElement="_P0ARcNf6Eemg9YvAnhgu3w">
+ <body>Likelihood interval to be
+written as a Java constraint</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="_tyS04Dw5EeqAXbhiSoKbXQ" annotatedElement="_bdLYwN1EEemRdeFT-FlIPQ">
+ <body>Input and output pins can play double role:
+- As ports
+- As parameters</body>
+ </ownedComment>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_VhITsNf3Eemg9YvAnhgu3w" alias="PrimitiveType">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_a62xcNf3Eemg9YvAnhgu3w" alias="Class">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_y2-MUNf3Eemg9YvAnhgu3w" alias="Property">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_I3xfINf6Eemg9YvAnhgu3w" alias="NamedElement">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_h9j30Nf6Eemg9YvAnhgu3w" alias="Element">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_MTddEN1DEemRdeFT-FlIPQ" alias="ActivityParameterNode">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_bd18kN1DEemRdeFT-FlIPQ" alias="DataStoreNode">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_HUUNEN1EEemRdeFT-FlIPQ" alias="InputPin">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_U9YDwN1EEemRdeFT-FlIPQ" alias="OutputPin">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_U00SwN1GEemRdeFT-FlIPQ" alias="Activity">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_yP3bgN1GEemRdeFT-FlIPQ" alias="CallBehaviorAction">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_Lk9JMDw2Eeq4CulPkgdiyw" alias="Parameter">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_0w8h8FQHEeqg5faUSU0D9Q" alias="OpaqueAction">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>
+ </elementImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_KIQzcNf2Eemg9YvAnhgu3w">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_KIRagNf2Eemg9YvAnhgu3w">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_AGAZcNf4Eemg9YvAnhgu3w" name="Data">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_DHyvcNf4Eemg9YvAnhgu3w" name="base_Class" association="_DHt28Nf4Eemg9YvAnhgu3w">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_DHt28Nf4Eemg9YvAnhgu3w" name="E_Data_Class7" memberEnd="_DHyIYNf4Eemg9YvAnhgu3w _DHyvcNf4Eemg9YvAnhgu3w">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_DHyIYNf4Eemg9YvAnhgu3w" name="extension_Data" type="_AGAZcNf4Eemg9YvAnhgu3w" aggregation="composite" association="_DHt28Nf4Eemg9YvAnhgu3w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Jdg7YNf4Eemg9YvAnhgu3w" name="DataType">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_M0CLQdf4Eemg9YvAnhgu3w" name="base_PrimitiveType" association="_M0BkMNf4Eemg9YvAnhgu3w">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_M0BkMNf4Eemg9YvAnhgu3w" name="E_DataType_PrimitiveType9" memberEnd="_M0CLQNf4Eemg9YvAnhgu3w _M0CLQdf4Eemg9YvAnhgu3w">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_M0CLQNf4Eemg9YvAnhgu3w" name="extension_DataType" type="_Jdg7YNf4Eemg9YvAnhgu3w" aggregation="composite" association="_M0BkMNf4Eemg9YvAnhgu3w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_SiXAANf4Eemg9YvAnhgu3w" name="OpaqueData">
+ <generalization xmi:type="uml:Generalization" xmi:id="_VAuf4Nf4Eemg9YvAnhgu3w" general="_Jdg7YNf4Eemg9YvAnhgu3w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_gFi4MNf4Eemg9YvAnhgu3w" name="DataLink">
+ <generalization xmi:type="uml:Generalization" xmi:id="_mPWIANf4Eemg9YvAnhgu3w" general="_AGAZcNf4Eemg9YvAnhgu3w"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_zwn7sNf4Eemg9YvAnhgu3w" name="path">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FN98UNf5Eemg9YvAnhgu3w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FOEC8Nf5Eemg9YvAnhgu3w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_hV4CMNf5Eemg9YvAnhgu3w" name="type" visibility="public" type="_Jdg7YNf4Eemg9YvAnhgu3w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vx4_0Nf5Eemg9YvAnhgu3w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vyCw0Nf5Eemg9YvAnhgu3w" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_NKwzwNf5Eemg9YvAnhgu3w" name="CompositeData">
+ <generalization xmi:type="uml:Generalization" xmi:id="_PyXvMNf5Eemg9YvAnhgu3w" general="_AGAZcNf4Eemg9YvAnhgu3w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_VQu1UNf5Eemg9YvAnhgu3w" name="Table">
+ <generalization xmi:type="uml:Generalization" xmi:id="_W_YvgNf5Eemg9YvAnhgu3w" general="_AGAZcNf4Eemg9YvAnhgu3w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_P0ARcNf6Eemg9YvAnhgu3w" name="isPersonalData">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_R4yMoNf6Eemg9YvAnhgu3w" name="likelihood" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c3FGMNf6Eemg9YvAnhgu3w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c3JXoNf6Eemg9YvAnhgu3w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_kLQecdf6Eemg9YvAnhgu3w" name="base_NamedElement" association="_kLP3YNf6Eemg9YvAnhgu3w">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_k3qRcNf6Eemg9YvAnhgu3w" name="base_Class" association="_k3pDUNf6Eemg9YvAnhgu3w">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_kLP3YNf6Eemg9YvAnhgu3w" name="E_isPersonalData_NamedElement18" memberEnd="_kLQecNf6Eemg9YvAnhgu3w _kLQecdf6Eemg9YvAnhgu3w">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_kLQecNf6Eemg9YvAnhgu3w" name="extension_isPersonalData" type="_P0ARcNf6Eemg9YvAnhgu3w" aggregation="composite" association="_kLP3YNf6Eemg9YvAnhgu3w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_k3pDUNf6Eemg9YvAnhgu3w" name="E_isPersonalData_Class19" memberEnd="_k3pqYNf6Eemg9YvAnhgu3w _k3qRcNf6Eemg9YvAnhgu3w">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_k3pqYNf6Eemg9YvAnhgu3w" name="extension_isPersonalData" type="_P0ARcNf6Eemg9YvAnhgu3w" aggregation="composite" association="_k3pDUNf6Eemg9YvAnhgu3w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_V9zPUNf8Eemg9YvAnhgu3w" client="_gFi4MNf4Eemg9YvAnhgu3w" supplier="_Jdg7YNf4Eemg9YvAnhgu3w"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_saxLoNf8Eemg9YvAnhgu3w" client="_NKwzwNf5Eemg9YvAnhgu3w" supplier="_KCC2sNf2Eemg9YvAnhgu3w"/>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_QtdjMN1DEemRdeFT-FlIPQ" name="ExternalEntity">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_B3Qugd1EEemRdeFT-FlIPQ" name="base_ActivityParameterNode" association="_B3OSQN1EEemRdeFT-FlIPQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityParameterNode"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_GFNgMN1FEemRdeFT-FlIPQ" name="entity" type="__BFWIN1EEemRdeFT-FlIPQ" association="_GFLD8N1FEemRdeFT-FlIPQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j0Jb0FTGEeq7oNgDaAroEA"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_iRy8oN1DEemRdeFT-FlIPQ" name="DataStore">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_DKnMwN1EEemRdeFT-FlIPQ" name="base_DataStoreNode" association="_DKmlsN1EEemRdeFT-FlIPQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataStoreNode"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_B3OSQN1EEemRdeFT-FlIPQ" name="E_ExternalEntity_ActivityParameterNode31" memberEnd="_B3QugN1EEemRdeFT-FlIPQ _B3Qugd1EEemRdeFT-FlIPQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_B3QugN1EEemRdeFT-FlIPQ" name="extension_ExternalEntity" type="_QtdjMN1DEemRdeFT-FlIPQ" aggregation="composite" association="_B3OSQN1EEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_DKmlsN1EEemRdeFT-FlIPQ" name="E_DataStore_DataStoreNode32" memberEnd="_DKmlsd1EEemRdeFT-FlIPQ _DKnMwN1EEemRdeFT-FlIPQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_DKmlsd1EEemRdeFT-FlIPQ" name="extension_DataStore" type="_iRy8oN1DEemRdeFT-FlIPQ" aggregation="composite" association="_DKmlsN1EEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_My4ukN1EEemRdeFT-FlIPQ" name="DataInput">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_aV3LYN1EEemRdeFT-FlIPQ" name="base_InputPin" association="_aV19QN1EEemRdeFT-FlIPQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_a2G_EDw2Eeq4CulPkgdiyw" name="base_Parameter" association="_a2DUsDw2Eeq4CulPkgdiyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_aV19QN1EEemRdeFT-FlIPQ" name="E_DataInput_InputPin36" memberEnd="_aV2kUN1EEemRdeFT-FlIPQ _aV3LYN1EEemRdeFT-FlIPQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_aV2kUN1EEemRdeFT-FlIPQ" name="extension_DataInput" type="_My4ukN1EEemRdeFT-FlIPQ" aggregation="composite" association="_aV19QN1EEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_bdLYwN1EEemRdeFT-FlIPQ" name="DataOutput">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gNYYYd1EEemRdeFT-FlIPQ" name="base_OutputPin" association="_gNXxUN1EEemRdeFT-FlIPQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_jJi04Dw2Eeq4CulPkgdiyw" name="base_Parameter" association="_jJhmwDw2Eeq4CulPkgdiyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_gNXxUN1EEemRdeFT-FlIPQ" name="E_DataOutput_OutputPin38" memberEnd="_gNYYYN1EEemRdeFT-FlIPQ _gNYYYd1EEemRdeFT-FlIPQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_gNYYYN1EEemRdeFT-FlIPQ" name="extension_DataOutput" type="_bdLYwN1EEemRdeFT-FlIPQ" aggregation="composite" association="_gNXxUN1EEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="__BFWIN1EEemRdeFT-FlIPQ" name="Entity">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_CED-8d1FEemRdeFT-FlIPQ" name="base_NamedElement" association="_CEDX4N1FEemRdeFT-FlIPQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_CEDX4N1FEemRdeFT-FlIPQ" name="E_Entity_NamedElement40" memberEnd="_CED-8N1FEemRdeFT-FlIPQ _CED-8d1FEemRdeFT-FlIPQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_CED-8N1FEemRdeFT-FlIPQ" name="extension_Entity" type="__BFWIN1EEemRdeFT-FlIPQ" aggregation="composite" association="_CEDX4N1FEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_GFLD8N1FEemRdeFT-FlIPQ" memberEnd="_GFNgMN1FEemRdeFT-FlIPQ _GFOHQN1FEemRdeFT-FlIPQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GFM5IN1FEemRdeFT-FlIPQ" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GFM5Id1FEemRdeFT-FlIPQ" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_GFOHQN1FEemRdeFT-FlIPQ" name="externalentity" type="_QtdjMN1DEemRdeFT-FlIPQ" association="_GFLD8N1FEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_tbKL0N1FEemRdeFT-FlIPQ" memberEnd="_tbKy4t1FEemRdeFT-FlIPQ _tbLZ8N1FEemRdeFT-FlIPQ" navigableOwnedEnd="_tbKy4t1FEemRdeFT-FlIPQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tbKy4N1FEemRdeFT-FlIPQ" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tbKy4d1FEemRdeFT-FlIPQ" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_tbKy4t1FEemRdeFT-FlIPQ" name="data" type="_AGAZcNf4Eemg9YvAnhgu3w" association="_tbKL0N1FEemRdeFT-FlIPQ"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_tbLZ8N1FEemRdeFT-FlIPQ" name="datastore" type="_iRy8oN1DEemRdeFT-FlIPQ" association="_tbKL0N1FEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_yWL7YN1FEemRdeFT-FlIPQ" memberEnd="_yWMict1FEemRdeFT-FlIPQ _yWMic91FEemRdeFT-FlIPQ" navigableOwnedEnd="_yWMict1FEemRdeFT-FlIPQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yWMicN1FEemRdeFT-FlIPQ" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yWMicd1FEemRdeFT-FlIPQ" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_yWMict1FEemRdeFT-FlIPQ" name="data" type="_AGAZcNf4Eemg9YvAnhgu3w" association="_yWL7YN1FEemRdeFT-FlIPQ"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_yWMic91FEemRdeFT-FlIPQ" name="datainput" type="_My4ukN1EEemRdeFT-FlIPQ" association="_yWL7YN1FEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_6x6KgN1FEemRdeFT-FlIPQ" memberEnd="_6x7Yot1FEemRdeFT-FlIPQ _6x7_sN1FEemRdeFT-FlIPQ" navigableOwnedEnd="_6x7Yot1FEemRdeFT-FlIPQ">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6x7YoN1FEemRdeFT-FlIPQ" source="org.eclipse.papyrus">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6x7Yod1FEemRdeFT-FlIPQ" key="nature" value="UML_Nature"/>
+ </eAnnotations>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_6x7Yot1FEemRdeFT-FlIPQ" name="data" type="_AGAZcNf4Eemg9YvAnhgu3w" association="_6x6KgN1FEemRdeFT-FlIPQ"/>
+ <ownedEnd xmi:type="uml:Property" xmi:id="_6x7_sN1FEemRdeFT-FlIPQ" name="dataoutput" type="_bdLYwN1EEemRdeFT-FlIPQ" association="_6x6KgN1FEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_aLL6gN1GEemRdeFT-FlIPQ" name="Process">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ejIyMd1GEemRdeFT-FlIPQ" name="base_Activity" association="_ejILIN1GEemRdeFT-FlIPQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Activity"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_ejILIN1GEemRdeFT-FlIPQ" name="E_Process_Activity47" memberEnd="_ejIyMN1GEemRdeFT-FlIPQ _ejIyMd1GEemRdeFT-FlIPQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ejIyMN1GEemRdeFT-FlIPQ" name="extension_Process" type="_aLL6gN1GEemRdeFT-FlIPQ" aggregation="composite" association="_ejILIN1GEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_93zH8N1GEemRdeFT-FlIPQ" name="CallProcess">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_Fs9GUN1HEemRdeFT-FlIPQ" name="base_CallBehaviorAction" association="_Fs8fQN1HEemRdeFT-FlIPQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#CallBehaviorAction"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_22PagFQHEeqg5faUSU0D9Q" name="base_OpaqueAction" association="_22MXMFQHEeqg5faUSU0D9Q">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueAction"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_22PagVQHEeqg5faUSU0D9Q"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Fs8fQN1HEemRdeFT-FlIPQ" name="E_CallProcess_CallBehaviorAction1" memberEnd="_Fs8fQd1HEemRdeFT-FlIPQ _Fs9GUN1HEemRdeFT-FlIPQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Fs8fQd1HEemRdeFT-FlIPQ" name="extension_CallProcess" type="_93zH8N1GEemRdeFT-FlIPQ" aggregation="composite" association="_Fs8fQN1HEemRdeFT-FlIPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_wQLtYN3jEemd764Om4vVaw" name="SmartGridFrame">
+ <generalization xmi:type="uml:Generalization" xmi:id="_Gy_ZsN3pEemd764Om4vVaw" general="_AGAZcNf4Eemg9YvAnhgu3w"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_6Qn3kN3jEemd764Om4vVaw" name="concentratorID" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IdN5IN3kEemd764Om4vVaw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IdSxoN3kEemd764Om4vVaw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_VKQzgN3kEemd764Om4vVaw" name="userName">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aWdyoN3kEemd764Om4vVaw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aWirIN3kEemd764Om4vVaw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_L1ulsN3nEemd764Om4vVaw" name="postcode">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TBkhUN3nEemd764Om4vVaw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TBoywN3nEemd764Om4vVaw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_qMP4MN3nEemd764Om4vVaw" name="date">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zIzjgN3nEemd764Om4vVaw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zI3N4N3nEemd764Om4vVaw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_-rnfYN3nEemd764Om4vVaw" name="consumption">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Dzq-UN3oEemd764Om4vVaw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DztakN3oEemd764Om4vVaw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_9IPLoN3oEemd764Om4vVaw" name="crc">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CGcyEN3pEemd764Om4vVaw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CGfOUN3pEemd764Om4vVaw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_S6R3oN4VEemd764Om4vVaw" name="id">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_drGV4N4VEemd764Om4vVaw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_drLOYN4VEemd764Om4vVaw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_a2DUsDw2Eeq4CulPkgdiyw" name="E_DataInput_Parameter56" memberEnd="_a2GYADw2Eeq4CulPkgdiyw _a2G_EDw2Eeq4CulPkgdiyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_a2GYADw2Eeq4CulPkgdiyw" name="extension_DataInput" type="_My4ukN1EEemRdeFT-FlIPQ" aggregation="composite" association="_a2DUsDw2Eeq4CulPkgdiyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_jJhmwDw2Eeq4CulPkgdiyw" name="E_DataOutput_Parameter57" memberEnd="_jJiN0Dw2Eeq4CulPkgdiyw _jJi04Dw2Eeq4CulPkgdiyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_jJiN0Dw2Eeq4CulPkgdiyw" name="extension_DataOutput" type="_bdLYwN1EEemRdeFT-FlIPQ" aggregation="composite" association="_jJhmwDw2Eeq4CulPkgdiyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_22MXMFQHEeqg5faUSU0D9Q" name="E_CallProcess_OpaqueAction1" memberEnd="_22OMYFQHEeqg5faUSU0D9Q _22PagFQHEeqg5faUSU0D9Q">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_22OMYFQHEeqg5faUSU0D9Q" name="extension_CallProcess" type="_93zH8N1GEemRdeFT-FlIPQ" aggregation="composite" association="_22MXMFQHEeqg5faUSU0D9Q"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_7WYMINf4Eemg9YvAnhgu3w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7WZaQNf4Eemg9YvAnhgu3w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_fjJsUNnmEemLZrnY-MlTrA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fjPL4NnmEemLZrnY-MlTrA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Profile>
+ <Ecore:EPackage xmi:id="_gryIUNnmEemLZrnY-MlTrA" base_Package="_KCC2sNf2Eemg9YvAnhgu3w" nsURI="http://org.eclipse.papyrus.pdp4eng.designer.profile" basePackage="org.eclipse.papyrus.pdp4eng.designer.profile"/>
+</xmi:XMI>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.properties
new file mode 100644
index 0000000..08383ba
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.properties
@@ -0,0 +1,16 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Patrick Tessier - initial API and implementation
+# Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design profile
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.xml
new file mode 100644
index 0000000..d7bf4c3
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/plugin.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <!-- @generated pdp4engDesign -->
+ <package
+ uri="http://org.eclipse.papyrus.pdp4eng.designer.profile"
+ class="org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage"
+ genModel="model/pdp4engDesign.genmodel"/>
+ </extension>
+ <extension
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="pathmap://PDP4ENG-DESIGN/"
+ target="platform:/plugin/org.eclipse.papyrus.pdp4eng.designer.profile/model/">
+ </mapping>
+ </extension>
+ <extension
+ point="org.eclipse.uml2.uml.generated_package">
+ <profile
+ location="pathmap://PDP4ENG-DESIGN/pdp4engDesign.profile.uml#_KCC2sNf2Eemg9YvAnhgu3w"
+ uri="http://org.eclipse.papyrus.pdp4eng.designer.profile">
+ </profile>
+ </extension>
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/pom.xml
new file mode 100644
index 0000000..adc9e89
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.profile</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/Activator.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/Activator.java
new file mode 100644
index 0000000..e1d1996
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/Activator.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext context;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CallProcess.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CallProcess.java
new file mode 100644
index 0000000..caba632
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CallProcess.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.OpaqueAction;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Call Process</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_CallBehaviorAction <em>Base Call Behavior Action</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_OpaqueAction <em>Base Opaque Action</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getCallProcess()
+ * @model
+ * @generated
+ */
+public interface CallProcess extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Call Behavior Action</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Call Behavior Action</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Call Behavior Action</em>' reference.
+ * @see #setBase_CallBehaviorAction(CallBehaviorAction)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getCallProcess_Base_CallBehaviorAction()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ CallBehaviorAction getBase_CallBehaviorAction();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_CallBehaviorAction <em>Base Call Behavior Action</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Call Behavior Action</em>' reference.
+ * @see #getBase_CallBehaviorAction()
+ * @generated
+ */
+ void setBase_CallBehaviorAction(CallBehaviorAction value);
+
+ /**
+ * Returns the value of the '<em><b>Base Opaque Action</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Opaque Action</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Opaque Action</em>' reference.
+ * @see #setBase_OpaqueAction(OpaqueAction)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getCallProcess_Base_OpaqueAction()
+ * @model ordered="false"
+ * @generated
+ */
+ OpaqueAction getBase_OpaqueAction();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_OpaqueAction <em>Base Opaque Action</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Opaque Action</em>' reference.
+ * @see #getBase_OpaqueAction()
+ * @generated
+ */
+ void setBase_OpaqueAction(OpaqueAction value);
+
+} // CallProcess
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CompositeData.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CompositeData.java
new file mode 100644
index 0000000..b3c35ba
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/CompositeData.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Composite Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getCompositeData()
+ * @model
+ * @generated
+ */
+public interface CompositeData extends Data {
+} // CompositeData
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Data.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Data.java
new file mode 100644
index 0000000..89e7ec2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Data.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getData()
+ * @model
+ * @generated
+ */
+public interface Data extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getData_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // Data
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataInput.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataInput.java
new file mode 100644
index 0000000..fceb556
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataInput.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.Parameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Input</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_InputPin <em>Base Input Pin</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_Parameter <em>Base Parameter</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataInput()
+ * @model
+ * @generated
+ */
+public interface DataInput extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Input Pin</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Input Pin</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Input Pin</em>' reference.
+ * @see #setBase_InputPin(InputPin)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataInput_Base_InputPin()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ InputPin getBase_InputPin();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_InputPin <em>Base Input Pin</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Input Pin</em>' reference.
+ * @see #getBase_InputPin()
+ * @generated
+ */
+ void setBase_InputPin(InputPin value);
+
+ /**
+ * Returns the value of the '<em><b>Base Parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Parameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Parameter</em>' reference.
+ * @see #setBase_Parameter(Parameter)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataInput_Base_Parameter()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Parameter getBase_Parameter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_Parameter <em>Base Parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Parameter</em>' reference.
+ * @see #getBase_Parameter()
+ * @generated
+ */
+ void setBase_Parameter(Parameter value);
+
+} // DataInput
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataLink.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataLink.java
new file mode 100644
index 0000000..17d543f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataLink.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Link</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataLink()
+ * @model
+ * @generated
+ */
+public interface DataLink extends Data {
+ /**
+ * Returns the value of the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Path</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Path</em>' attribute.
+ * @see #setPath(String)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataLink_Path()
+ * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getPath();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getPath <em>Path</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Path</em>' attribute.
+ * @see #getPath()
+ * @generated
+ */
+ void setPath(String value);
+
+ /**
+ * Returns the value of the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Type</em>' reference.
+ * @see #setType(DataType)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataLink_Type()
+ * @model ordered="false"
+ * @generated
+ */
+ DataType getType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getType <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Type</em>' reference.
+ * @see #getType()
+ * @generated
+ */
+ void setType(DataType value);
+
+} // DataLink
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataOutput.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataOutput.java
new file mode 100644
index 0000000..4e00daa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataOutput.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Parameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Output</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Input and output pins can play double role:
+ * - As ports
+ * - As parameters
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_OutputPin <em>Base Output Pin</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_Parameter <em>Base Parameter</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataOutput()
+ * @model
+ * @generated
+ */
+public interface DataOutput extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Output Pin</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Output Pin</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Output Pin</em>' reference.
+ * @see #setBase_OutputPin(OutputPin)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataOutput_Base_OutputPin()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ OutputPin getBase_OutputPin();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_OutputPin <em>Base Output Pin</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Output Pin</em>' reference.
+ * @see #getBase_OutputPin()
+ * @generated
+ */
+ void setBase_OutputPin(OutputPin value);
+
+ /**
+ * Returns the value of the '<em><b>Base Parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Parameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Parameter</em>' reference.
+ * @see #setBase_Parameter(Parameter)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataOutput_Base_Parameter()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Parameter getBase_Parameter();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_Parameter <em>Base Parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Parameter</em>' reference.
+ * @see #getBase_Parameter()
+ * @generated
+ */
+ void setBase_Parameter(Parameter value);
+
+} // DataOutput
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataStore.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataStore.java
new file mode 100644
index 0000000..97d87e2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataStore.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.DataStoreNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Store</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore#getBase_DataStoreNode <em>Base Data Store Node</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataStore()
+ * @model
+ * @generated
+ */
+public interface DataStore extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Data Store Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Data Store Node</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Data Store Node</em>' reference.
+ * @see #setBase_DataStoreNode(DataStoreNode)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataStore_Base_DataStoreNode()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ DataStoreNode getBase_DataStoreNode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore#getBase_DataStoreNode <em>Base Data Store Node</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Data Store Node</em>' reference.
+ * @see #getBase_DataStoreNode()
+ * @generated
+ */
+ void setBase_DataStoreNode(DataStoreNode value);
+
+} // DataStore
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataType.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataType.java
new file mode 100644
index 0000000..1e364ad
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/DataType.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.PrimitiveType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType#getBase_PrimitiveType <em>Base Primitive Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataType()
+ * @model
+ * @generated
+ */
+public interface DataType extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Primitive Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Primitive Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Primitive Type</em>' reference.
+ * @see #setBase_PrimitiveType(PrimitiveType)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getDataType_Base_PrimitiveType()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ PrimitiveType getBase_PrimitiveType();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType#getBase_PrimitiveType <em>Base Primitive Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Primitive Type</em>' reference.
+ * @see #getBase_PrimitiveType()
+ * @generated
+ */
+ void setBase_PrimitiveType(PrimitiveType value);
+
+} // DataType
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Entity.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Entity.java
new file mode 100644
index 0000000..7599a2c
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Entity.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity#getBase_NamedElement <em>Base Named Element</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getEntity()
+ * @model
+ * @generated
+ */
+public interface Entity extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Named Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Named Element</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Named Element</em>' reference.
+ * @see #setBase_NamedElement(NamedElement)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getEntity_Base_NamedElement()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ NamedElement getBase_NamedElement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity#getBase_NamedElement <em>Base Named Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Named Element</em>' reference.
+ * @see #getBase_NamedElement()
+ * @generated
+ */
+ void setBase_NamedElement(NamedElement value);
+
+} // Entity
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/ExternalEntity.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/ExternalEntity.java
new file mode 100644
index 0000000..6e20a42
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/ExternalEntity.java
@@ -0,0 +1,93 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.ActivityParameterNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>External Entity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getBase_ActivityParameterNode <em>Base Activity Parameter Node</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getEntity <em>Entity</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getExternalEntity()
+ * @model
+ * @generated
+ */
+public interface ExternalEntity extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Activity Parameter Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Activity Parameter Node</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Activity Parameter Node</em>' reference.
+ * @see #setBase_ActivityParameterNode(ActivityParameterNode)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getExternalEntity_Base_ActivityParameterNode()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ ActivityParameterNode getBase_ActivityParameterNode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getBase_ActivityParameterNode <em>Base Activity Parameter Node</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Activity Parameter Node</em>' reference.
+ * @see #getBase_ActivityParameterNode()
+ * @generated
+ */
+ void setBase_ActivityParameterNode(ActivityParameterNode value);
+
+ /**
+ * Returns the value of the '<em><b>Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Entity</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Entity</em>' reference.
+ * @see #setEntity(Entity)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getExternalEntity_Entity()
+ * @model ordered="false"
+ * @generated
+ */
+ Entity getEntity();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getEntity <em>Entity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Entity</em>' reference.
+ * @see #getEntity()
+ * @generated
+ */
+ void setEntity(Entity value);
+
+} // ExternalEntity
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/OpaqueData.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/OpaqueData.java
new file mode 100644
index 0000000..0ed25a2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/OpaqueData.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Opaque Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * OpaqueData are data which are not directly interpretable: further tokens are necessary to transform them into a readable form. This data type can be useful to model special data types like for instance ciphered data.
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getOpaqueData()
+ * @model
+ * @generated
+ */
+public interface OpaqueData extends DataType {
+} // OpaqueData
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Process.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Process.java
new file mode 100644
index 0000000..5dd3a59
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Process.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Activity;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Process</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process#getBase_Activity <em>Base Activity</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getProcess()
+ * @model
+ * @generated
+ */
+public interface Process extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Activity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Activity</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Activity</em>' reference.
+ * @see #setBase_Activity(Activity)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getProcess_Base_Activity()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Activity getBase_Activity();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process#getBase_Activity <em>Base Activity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Activity</em>' reference.
+ * @see #getBase_Activity()
+ * @generated
+ */
+ void setBase_Activity(Activity value);
+
+} // Process
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/SmartGridFrame.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/SmartGridFrame.java
new file mode 100644
index 0000000..f5f0014
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/SmartGridFrame.java
@@ -0,0 +1,225 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Smart Grid Frame</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConcentratorID <em>Concentrator ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getUserName <em>User Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getPostcode <em>Postcode</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getDate <em>Date</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConsumption <em>Consumption</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getCrc <em>Crc</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getId <em>Id</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame()
+ * @model
+ * @generated
+ */
+public interface SmartGridFrame extends Data {
+ /**
+ * Returns the value of the '<em><b>Concentrator ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Concentrator ID</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Concentrator ID</em>' attribute.
+ * @see #setConcentratorID(String)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_ConcentratorID()
+ * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getConcentratorID();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConcentratorID <em>Concentrator ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Concentrator ID</em>' attribute.
+ * @see #getConcentratorID()
+ * @generated
+ */
+ void setConcentratorID(String value);
+
+ /**
+ * Returns the value of the '<em><b>User Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>User Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>User Name</em>' attribute.
+ * @see #setUserName(String)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_UserName()
+ * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getUserName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getUserName <em>User Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>User Name</em>' attribute.
+ * @see #getUserName()
+ * @generated
+ */
+ void setUserName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Postcode</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Postcode</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Postcode</em>' attribute.
+ * @see #setPostcode(String)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Postcode()
+ * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getPostcode();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getPostcode <em>Postcode</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Postcode</em>' attribute.
+ * @see #getPostcode()
+ * @generated
+ */
+ void setPostcode(String value);
+
+ /**
+ * Returns the value of the '<em><b>Date</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Date</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Date</em>' attribute.
+ * @see #setDate(String)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Date()
+ * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getDate();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getDate <em>Date</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Date</em>' attribute.
+ * @see #getDate()
+ * @generated
+ */
+ void setDate(String value);
+
+ /**
+ * Returns the value of the '<em><b>Consumption</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Consumption</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Consumption</em>' attribute.
+ * @see #setConsumption(String)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Consumption()
+ * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getConsumption();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConsumption <em>Consumption</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Consumption</em>' attribute.
+ * @see #getConsumption()
+ * @generated
+ */
+ void setConsumption(String value);
+
+ /**
+ * Returns the value of the '<em><b>Crc</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Crc</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Crc</em>' attribute.
+ * @see #setCrc(String)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Crc()
+ * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getCrc();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getCrc <em>Crc</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Crc</em>' attribute.
+ * @see #getCrc()
+ * @generated
+ */
+ void setCrc(String value);
+
+ /**
+ * Returns the value of the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Id</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Id</em>' attribute.
+ * @see #setId(String)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getSmartGridFrame_Id()
+ * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getId();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#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);
+
+} // SmartGridFrame
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Table.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Table.java
new file mode 100644
index 0000000..33eb512
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/Table.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getTable()
+ * @model
+ * @generated
+ */
+public interface Table extends Data {
+} // Table
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CallProcessImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CallProcessImpl.java
new file mode 100644
index 0000000..9f43d9f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CallProcessImpl.java
@@ -0,0 +1,237 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.OpaqueAction;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Call Process</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CallProcessImpl#getBase_CallBehaviorAction <em>Base Call Behavior Action</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CallProcessImpl#getBase_OpaqueAction <em>Base Opaque Action</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CallProcessImpl extends MinimalEObjectImpl.Container implements CallProcess {
+ /**
+ * The cached value of the '{@link #getBase_CallBehaviorAction() <em>Base Call Behavior Action</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_CallBehaviorAction()
+ * @generated
+ * @ordered
+ */
+ protected CallBehaviorAction base_CallBehaviorAction;
+
+ /**
+ * The cached value of the '{@link #getBase_OpaqueAction() <em>Base Opaque Action</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_OpaqueAction()
+ * @generated
+ * @ordered
+ */
+ protected OpaqueAction base_OpaqueAction;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CallProcessImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.CALL_PROCESS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public CallBehaviorAction getBase_CallBehaviorAction() {
+ if (base_CallBehaviorAction != null && base_CallBehaviorAction.eIsProxy()) {
+ InternalEObject oldBase_CallBehaviorAction = (InternalEObject)base_CallBehaviorAction;
+ base_CallBehaviorAction = (CallBehaviorAction)eResolveProxy(oldBase_CallBehaviorAction);
+ if (base_CallBehaviorAction != oldBase_CallBehaviorAction) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION, oldBase_CallBehaviorAction, base_CallBehaviorAction));
+ }
+ }
+ return base_CallBehaviorAction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CallBehaviorAction basicGetBase_CallBehaviorAction() {
+ return base_CallBehaviorAction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_CallBehaviorAction(CallBehaviorAction newBase_CallBehaviorAction) {
+ CallBehaviorAction oldBase_CallBehaviorAction = base_CallBehaviorAction;
+ base_CallBehaviorAction = newBase_CallBehaviorAction;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION, oldBase_CallBehaviorAction, base_CallBehaviorAction));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public OpaqueAction getBase_OpaqueAction() {
+ if (base_OpaqueAction != null && base_OpaqueAction.eIsProxy()) {
+ InternalEObject oldBase_OpaqueAction = (InternalEObject)base_OpaqueAction;
+ base_OpaqueAction = (OpaqueAction)eResolveProxy(oldBase_OpaqueAction);
+ if (base_OpaqueAction != oldBase_OpaqueAction) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION, oldBase_OpaqueAction, base_OpaqueAction));
+ }
+ }
+ return base_OpaqueAction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OpaqueAction basicGetBase_OpaqueAction() {
+ return base_OpaqueAction;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_OpaqueAction(OpaqueAction newBase_OpaqueAction) {
+ OpaqueAction oldBase_OpaqueAction = base_OpaqueAction;
+ base_OpaqueAction = newBase_OpaqueAction;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION, oldBase_OpaqueAction, base_OpaqueAction));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION:
+ if (resolve) return getBase_CallBehaviorAction();
+ return basicGetBase_CallBehaviorAction();
+ case pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION:
+ if (resolve) return getBase_OpaqueAction();
+ return basicGetBase_OpaqueAction();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION:
+ setBase_CallBehaviorAction((CallBehaviorAction)newValue);
+ return;
+ case pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION:
+ setBase_OpaqueAction((OpaqueAction)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION:
+ setBase_CallBehaviorAction((CallBehaviorAction)null);
+ return;
+ case pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION:
+ setBase_OpaqueAction((OpaqueAction)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION:
+ return base_CallBehaviorAction != null;
+ case pdp4engDesignPackage.CALL_PROCESS__BASE_OPAQUE_ACTION:
+ return base_OpaqueAction != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CallProcessImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CompositeDataImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CompositeDataImpl.java
new file mode 100644
index 0000000..4e9870e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/CompositeDataImpl.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Composite Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CompositeDataImpl extends DataImpl implements CompositeData {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CompositeDataImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.COMPOSITE_DATA;
+ }
+
+} //CompositeDataImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataImpl.java
new file mode 100644
index 0000000..2b6d0be
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataImpl.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DataImpl extends MinimalEObjectImpl.Container implements Data {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.DATA;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DataImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataInputImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataInputImpl.java
new file mode 100644
index 0000000..3abd1b6
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataInputImpl.java
@@ -0,0 +1,237 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.Parameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Input</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataInputImpl#getBase_InputPin <em>Base Input Pin</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataInputImpl#getBase_Parameter <em>Base Parameter</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DataInputImpl extends MinimalEObjectImpl.Container implements DataInput {
+ /**
+ * The cached value of the '{@link #getBase_InputPin() <em>Base Input Pin</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_InputPin()
+ * @generated
+ * @ordered
+ */
+ protected InputPin base_InputPin;
+
+ /**
+ * The cached value of the '{@link #getBase_Parameter() <em>Base Parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Parameter()
+ * @generated
+ * @ordered
+ */
+ protected Parameter base_Parameter;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataInputImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.DATA_INPUT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public InputPin getBase_InputPin() {
+ if (base_InputPin != null && base_InputPin.eIsProxy()) {
+ InternalEObject oldBase_InputPin = (InternalEObject)base_InputPin;
+ base_InputPin = (InputPin)eResolveProxy(oldBase_InputPin);
+ if (base_InputPin != oldBase_InputPin) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN, oldBase_InputPin, base_InputPin));
+ }
+ }
+ return base_InputPin;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InputPin basicGetBase_InputPin() {
+ return base_InputPin;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_InputPin(InputPin newBase_InputPin) {
+ InputPin oldBase_InputPin = base_InputPin;
+ base_InputPin = newBase_InputPin;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN, oldBase_InputPin, base_InputPin));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Parameter getBase_Parameter() {
+ if (base_Parameter != null && base_Parameter.eIsProxy()) {
+ InternalEObject oldBase_Parameter = (InternalEObject)base_Parameter;
+ base_Parameter = (Parameter)eResolveProxy(oldBase_Parameter);
+ if (base_Parameter != oldBase_Parameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER, oldBase_Parameter, base_Parameter));
+ }
+ }
+ return base_Parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter basicGetBase_Parameter() {
+ return base_Parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_Parameter(Parameter newBase_Parameter) {
+ Parameter oldBase_Parameter = base_Parameter;
+ base_Parameter = newBase_Parameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER, oldBase_Parameter, base_Parameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN:
+ if (resolve) return getBase_InputPin();
+ return basicGetBase_InputPin();
+ case pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER:
+ if (resolve) return getBase_Parameter();
+ return basicGetBase_Parameter();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN:
+ setBase_InputPin((InputPin)newValue);
+ return;
+ case pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER:
+ setBase_Parameter((Parameter)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN:
+ setBase_InputPin((InputPin)null);
+ return;
+ case pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER:
+ setBase_Parameter((Parameter)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_INPUT__BASE_INPUT_PIN:
+ return base_InputPin != null;
+ case pdp4engDesignPackage.DATA_INPUT__BASE_PARAMETER:
+ return base_Parameter != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DataInputImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataLinkImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataLinkImpl.java
new file mode 100644
index 0000000..c0516b8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataLinkImpl.java
@@ -0,0 +1,242 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Link</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataLinkImpl#getPath <em>Path</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataLinkImpl#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DataLinkImpl extends DataImpl implements DataLink {
+ /**
+ * The default value of the '{@link #getPath() <em>Path</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPath()
+ * @generated
+ * @ordered
+ */
+ protected static final String PATH_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPath() <em>Path</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPath()
+ * @generated
+ * @ordered
+ */
+ protected String path = PATH_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getType()
+ * @generated
+ * @ordered
+ */
+ protected DataType type;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataLinkImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.DATA_LINK;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getPath() {
+ return path;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setPath(String newPath) {
+ String oldPath = path;
+ path = newPath;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_LINK__PATH, oldPath, path));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public DataType getType() {
+ if (type != null && type.eIsProxy()) {
+ InternalEObject oldType = (InternalEObject)type;
+ type = (DataType)eResolveProxy(oldType);
+ if (type != oldType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_LINK__TYPE, oldType, type));
+ }
+ }
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataType basicGetType() {
+ return type;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setType(DataType newType) {
+ DataType oldType = type;
+ type = newType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_LINK__TYPE, oldType, type));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_LINK__PATH:
+ return getPath();
+ case pdp4engDesignPackage.DATA_LINK__TYPE:
+ if (resolve) return getType();
+ return basicGetType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_LINK__PATH:
+ setPath((String)newValue);
+ return;
+ case pdp4engDesignPackage.DATA_LINK__TYPE:
+ setType((DataType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_LINK__PATH:
+ setPath(PATH_EDEFAULT);
+ return;
+ case pdp4engDesignPackage.DATA_LINK__TYPE:
+ setType((DataType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_LINK__PATH:
+ return PATH_EDEFAULT == null ? path != null : !PATH_EDEFAULT.equals(path);
+ case pdp4engDesignPackage.DATA_LINK__TYPE:
+ return type != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (path: ");
+ result.append(path);
+ result.append(')');
+ return result.toString();
+ }
+
+} //DataLinkImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataOutputImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataOutputImpl.java
new file mode 100644
index 0000000..11495ab
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataOutputImpl.java
@@ -0,0 +1,237 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.Parameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Output</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataOutputImpl#getBase_OutputPin <em>Base Output Pin</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataOutputImpl#getBase_Parameter <em>Base Parameter</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DataOutputImpl extends MinimalEObjectImpl.Container implements DataOutput {
+ /**
+ * The cached value of the '{@link #getBase_OutputPin() <em>Base Output Pin</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_OutputPin()
+ * @generated
+ * @ordered
+ */
+ protected OutputPin base_OutputPin;
+
+ /**
+ * The cached value of the '{@link #getBase_Parameter() <em>Base Parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Parameter()
+ * @generated
+ * @ordered
+ */
+ protected Parameter base_Parameter;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataOutputImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.DATA_OUTPUT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public OutputPin getBase_OutputPin() {
+ if (base_OutputPin != null && base_OutputPin.eIsProxy()) {
+ InternalEObject oldBase_OutputPin = (InternalEObject)base_OutputPin;
+ base_OutputPin = (OutputPin)eResolveProxy(oldBase_OutputPin);
+ if (base_OutputPin != oldBase_OutputPin) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN, oldBase_OutputPin, base_OutputPin));
+ }
+ }
+ return base_OutputPin;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OutputPin basicGetBase_OutputPin() {
+ return base_OutputPin;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_OutputPin(OutputPin newBase_OutputPin) {
+ OutputPin oldBase_OutputPin = base_OutputPin;
+ base_OutputPin = newBase_OutputPin;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN, oldBase_OutputPin, base_OutputPin));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Parameter getBase_Parameter() {
+ if (base_Parameter != null && base_Parameter.eIsProxy()) {
+ InternalEObject oldBase_Parameter = (InternalEObject)base_Parameter;
+ base_Parameter = (Parameter)eResolveProxy(oldBase_Parameter);
+ if (base_Parameter != oldBase_Parameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER, oldBase_Parameter, base_Parameter));
+ }
+ }
+ return base_Parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter basicGetBase_Parameter() {
+ return base_Parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_Parameter(Parameter newBase_Parameter) {
+ Parameter oldBase_Parameter = base_Parameter;
+ base_Parameter = newBase_Parameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER, oldBase_Parameter, base_Parameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN:
+ if (resolve) return getBase_OutputPin();
+ return basicGetBase_OutputPin();
+ case pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER:
+ if (resolve) return getBase_Parameter();
+ return basicGetBase_Parameter();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN:
+ setBase_OutputPin((OutputPin)newValue);
+ return;
+ case pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER:
+ setBase_Parameter((Parameter)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN:
+ setBase_OutputPin((OutputPin)null);
+ return;
+ case pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER:
+ setBase_Parameter((Parameter)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_OUTPUT__BASE_OUTPUT_PIN:
+ return base_OutputPin != null;
+ case pdp4engDesignPackage.DATA_OUTPUT__BASE_PARAMETER:
+ return base_Parameter != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DataOutputImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataStoreImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataStoreImpl.java
new file mode 100644
index 0000000..0f1ecca
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataStoreImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.DataStoreNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Store</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataStoreImpl#getBase_DataStoreNode <em>Base Data Store Node</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DataStoreImpl extends MinimalEObjectImpl.Container implements DataStore {
+ /**
+ * The cached value of the '{@link #getBase_DataStoreNode() <em>Base Data Store Node</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_DataStoreNode()
+ * @generated
+ * @ordered
+ */
+ protected DataStoreNode base_DataStoreNode;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataStoreImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.DATA_STORE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public DataStoreNode getBase_DataStoreNode() {
+ if (base_DataStoreNode != null && base_DataStoreNode.eIsProxy()) {
+ InternalEObject oldBase_DataStoreNode = (InternalEObject)base_DataStoreNode;
+ base_DataStoreNode = (DataStoreNode)eResolveProxy(oldBase_DataStoreNode);
+ if (base_DataStoreNode != oldBase_DataStoreNode) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE, oldBase_DataStoreNode, base_DataStoreNode));
+ }
+ }
+ return base_DataStoreNode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataStoreNode basicGetBase_DataStoreNode() {
+ return base_DataStoreNode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_DataStoreNode(DataStoreNode newBase_DataStoreNode) {
+ DataStoreNode oldBase_DataStoreNode = base_DataStoreNode;
+ base_DataStoreNode = newBase_DataStoreNode;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE, oldBase_DataStoreNode, base_DataStoreNode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE:
+ if (resolve) return getBase_DataStoreNode();
+ return basicGetBase_DataStoreNode();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE:
+ setBase_DataStoreNode((DataStoreNode)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE:
+ setBase_DataStoreNode((DataStoreNode)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_STORE__BASE_DATA_STORE_NODE:
+ return base_DataStoreNode != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DataStoreImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataTypeImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataTypeImpl.java
new file mode 100644
index 0000000..2bcd918
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/DataTypeImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.PrimitiveType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataTypeImpl#getBase_PrimitiveType <em>Base Primitive Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DataTypeImpl extends MinimalEObjectImpl.Container implements DataType {
+ /**
+ * The cached value of the '{@link #getBase_PrimitiveType() <em>Base Primitive Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_PrimitiveType()
+ * @generated
+ * @ordered
+ */
+ protected PrimitiveType base_PrimitiveType;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DataTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.DATA_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public PrimitiveType getBase_PrimitiveType() {
+ if (base_PrimitiveType != null && base_PrimitiveType.eIsProxy()) {
+ InternalEObject oldBase_PrimitiveType = (InternalEObject)base_PrimitiveType;
+ base_PrimitiveType = (PrimitiveType)eResolveProxy(oldBase_PrimitiveType);
+ if (base_PrimitiveType != oldBase_PrimitiveType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE, oldBase_PrimitiveType, base_PrimitiveType));
+ }
+ }
+ return base_PrimitiveType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimitiveType basicGetBase_PrimitiveType() {
+ return base_PrimitiveType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_PrimitiveType(PrimitiveType newBase_PrimitiveType) {
+ PrimitiveType oldBase_PrimitiveType = base_PrimitiveType;
+ base_PrimitiveType = newBase_PrimitiveType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE, oldBase_PrimitiveType, base_PrimitiveType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE:
+ if (resolve) return getBase_PrimitiveType();
+ return basicGetBase_PrimitiveType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE:
+ setBase_PrimitiveType((PrimitiveType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE:
+ setBase_PrimitiveType((PrimitiveType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.DATA_TYPE__BASE_PRIMITIVE_TYPE:
+ return base_PrimitiveType != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DataTypeImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/EntityImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/EntityImpl.java
new file mode 100644
index 0000000..dcbcbfe
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/EntityImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.EntityImpl#getBase_NamedElement <em>Base Named Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EntityImpl extends MinimalEObjectImpl.Container implements Entity {
+ /**
+ * The cached value of the '{@link #getBase_NamedElement() <em>Base Named Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_NamedElement()
+ * @generated
+ * @ordered
+ */
+ protected NamedElement base_NamedElement;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EntityImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.ENTITY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NamedElement getBase_NamedElement() {
+ if (base_NamedElement != null && base_NamedElement.eIsProxy()) {
+ InternalEObject oldBase_NamedElement = (InternalEObject)base_NamedElement;
+ base_NamedElement = (NamedElement)eResolveProxy(oldBase_NamedElement);
+ if (base_NamedElement != oldBase_NamedElement) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT, oldBase_NamedElement, base_NamedElement));
+ }
+ }
+ return base_NamedElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamedElement basicGetBase_NamedElement() {
+ return base_NamedElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_NamedElement(NamedElement newBase_NamedElement) {
+ NamedElement oldBase_NamedElement = base_NamedElement;
+ base_NamedElement = newBase_NamedElement;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT, oldBase_NamedElement, base_NamedElement));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT:
+ if (resolve) return getBase_NamedElement();
+ return basicGetBase_NamedElement();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT:
+ setBase_NamedElement((NamedElement)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT:
+ setBase_NamedElement((NamedElement)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.ENTITY__BASE_NAMED_ELEMENT:
+ return base_NamedElement != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //EntityImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ExternalEntityImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ExternalEntityImpl.java
new file mode 100644
index 0000000..e87d8e3
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ExternalEntityImpl.java
@@ -0,0 +1,237 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.ActivityParameterNode;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>External Entity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ExternalEntityImpl#getBase_ActivityParameterNode <em>Base Activity Parameter Node</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ExternalEntityImpl#getEntity <em>Entity</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ExternalEntityImpl extends MinimalEObjectImpl.Container implements ExternalEntity {
+ /**
+ * The cached value of the '{@link #getBase_ActivityParameterNode() <em>Base Activity Parameter Node</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_ActivityParameterNode()
+ * @generated
+ * @ordered
+ */
+ protected ActivityParameterNode base_ActivityParameterNode;
+
+ /**
+ * The cached value of the '{@link #getEntity() <em>Entity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEntity()
+ * @generated
+ * @ordered
+ */
+ protected Entity entity;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExternalEntityImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.EXTERNAL_ENTITY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ActivityParameterNode getBase_ActivityParameterNode() {
+ if (base_ActivityParameterNode != null && base_ActivityParameterNode.eIsProxy()) {
+ InternalEObject oldBase_ActivityParameterNode = (InternalEObject)base_ActivityParameterNode;
+ base_ActivityParameterNode = (ActivityParameterNode)eResolveProxy(oldBase_ActivityParameterNode);
+ if (base_ActivityParameterNode != oldBase_ActivityParameterNode) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE, oldBase_ActivityParameterNode, base_ActivityParameterNode));
+ }
+ }
+ return base_ActivityParameterNode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActivityParameterNode basicGetBase_ActivityParameterNode() {
+ return base_ActivityParameterNode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_ActivityParameterNode(ActivityParameterNode newBase_ActivityParameterNode) {
+ ActivityParameterNode oldBase_ActivityParameterNode = base_ActivityParameterNode;
+ base_ActivityParameterNode = newBase_ActivityParameterNode;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE, oldBase_ActivityParameterNode, base_ActivityParameterNode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Entity getEntity() {
+ if (entity != null && entity.eIsProxy()) {
+ InternalEObject oldEntity = (InternalEObject)entity;
+ entity = (Entity)eResolveProxy(oldEntity);
+ if (entity != oldEntity) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY, oldEntity, entity));
+ }
+ }
+ return entity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Entity basicGetEntity() {
+ return entity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setEntity(Entity newEntity) {
+ Entity oldEntity = entity;
+ entity = newEntity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY, oldEntity, entity));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE:
+ if (resolve) return getBase_ActivityParameterNode();
+ return basicGetBase_ActivityParameterNode();
+ case pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY:
+ if (resolve) return getEntity();
+ return basicGetEntity();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE:
+ setBase_ActivityParameterNode((ActivityParameterNode)newValue);
+ return;
+ case pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY:
+ setEntity((Entity)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE:
+ setBase_ActivityParameterNode((ActivityParameterNode)null);
+ return;
+ case pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY:
+ setEntity((Entity)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE:
+ return base_ActivityParameterNode != null;
+ case pdp4engDesignPackage.EXTERNAL_ENTITY__ENTITY:
+ return entity != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExternalEntityImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/OpaqueDataImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/OpaqueDataImpl.java
new file mode 100644
index 0000000..de77938
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/OpaqueDataImpl.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Opaque Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class OpaqueDataImpl extends DataTypeImpl implements OpaqueData {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OpaqueDataImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.OPAQUE_DATA;
+ }
+
+} //OpaqueDataImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ProcessImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ProcessImpl.java
new file mode 100644
index 0000000..2ed1d52
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/ProcessImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.Activity;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Process</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ProcessImpl#getBase_Activity <em>Base Activity</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ProcessImpl extends MinimalEObjectImpl.Container implements org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process {
+ /**
+ * The cached value of the '{@link #getBase_Activity() <em>Base Activity</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Activity()
+ * @generated
+ * @ordered
+ */
+ protected Activity base_Activity;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ProcessImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.PROCESS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Activity getBase_Activity() {
+ if (base_Activity != null && base_Activity.eIsProxy()) {
+ InternalEObject oldBase_Activity = (InternalEObject)base_Activity;
+ base_Activity = (Activity)eResolveProxy(oldBase_Activity);
+ if (base_Activity != oldBase_Activity) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.PROCESS__BASE_ACTIVITY, oldBase_Activity, base_Activity));
+ }
+ }
+ return base_Activity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Activity basicGetBase_Activity() {
+ return base_Activity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_Activity(Activity newBase_Activity) {
+ Activity oldBase_Activity = base_Activity;
+ base_Activity = newBase_Activity;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.PROCESS__BASE_ACTIVITY, oldBase_Activity, base_Activity));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.PROCESS__BASE_ACTIVITY:
+ if (resolve) return getBase_Activity();
+ return basicGetBase_Activity();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.PROCESS__BASE_ACTIVITY:
+ setBase_Activity((Activity)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.PROCESS__BASE_ACTIVITY:
+ setBase_Activity((Activity)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.PROCESS__BASE_ACTIVITY:
+ return base_Activity != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ProcessImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/SmartGridFrameImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/SmartGridFrameImpl.java
new file mode 100644
index 0000000..d9fd960
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/SmartGridFrameImpl.java
@@ -0,0 +1,514 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Smart Grid Frame</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getConcentratorID <em>Concentrator ID</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getUserName <em>User Name</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getPostcode <em>Postcode</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getDate <em>Date</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getConsumption <em>Consumption</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getCrc <em>Crc</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl#getId <em>Id</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SmartGridFrameImpl extends DataImpl implements SmartGridFrame {
+ /**
+ * The default value of the '{@link #getConcentratorID() <em>Concentrator ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConcentratorID()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONCENTRATOR_ID_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getConcentratorID() <em>Concentrator ID</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConcentratorID()
+ * @generated
+ * @ordered
+ */
+ protected String concentratorID = CONCENTRATOR_ID_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getUserName() <em>User Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUserName()
+ * @generated
+ * @ordered
+ */
+ protected static final String USER_NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getUserName() <em>User Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUserName()
+ * @generated
+ * @ordered
+ */
+ protected String userName = USER_NAME_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getPostcode() <em>Postcode</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPostcode()
+ * @generated
+ * @ordered
+ */
+ protected static final String POSTCODE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPostcode() <em>Postcode</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPostcode()
+ * @generated
+ * @ordered
+ */
+ protected String postcode = POSTCODE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getDate() <em>Date</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDate()
+ * @generated
+ * @ordered
+ */
+ protected static final String DATE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDate() <em>Date</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDate()
+ * @generated
+ * @ordered
+ */
+ protected String date = DATE_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getConsumption() <em>Consumption</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConsumption()
+ * @generated
+ * @ordered
+ */
+ protected static final String CONSUMPTION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getConsumption() <em>Consumption</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConsumption()
+ * @generated
+ * @ordered
+ */
+ protected String consumption = CONSUMPTION_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getCrc() <em>Crc</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCrc()
+ * @generated
+ * @ordered
+ */
+ protected static final String CRC_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getCrc() <em>Crc</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getCrc()
+ * @generated
+ * @ordered
+ */
+ protected String crc = CRC_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 SmartGridFrameImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.SMART_GRID_FRAME;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getConcentratorID() {
+ return concentratorID;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setConcentratorID(String newConcentratorID) {
+ String oldConcentratorID = concentratorID;
+ concentratorID = newConcentratorID;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID, oldConcentratorID, concentratorID));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getUserName() {
+ return userName;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setUserName(String newUserName) {
+ String oldUserName = userName;
+ userName = newUserName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME, oldUserName, userName));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getPostcode() {
+ return postcode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setPostcode(String newPostcode) {
+ String oldPostcode = postcode;
+ postcode = newPostcode;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE, oldPostcode, postcode));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getDate() {
+ return date;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setDate(String newDate) {
+ String oldDate = date;
+ date = newDate;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__DATE, oldDate, date));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getConsumption() {
+ return consumption;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setConsumption(String newConsumption) {
+ String oldConsumption = consumption;
+ consumption = newConsumption;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION, oldConsumption, consumption));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getCrc() {
+ return crc;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setCrc(String newCrc) {
+ String oldCrc = crc;
+ crc = newCrc;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__CRC, oldCrc, crc));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setId(String newId) {
+ String oldId = id;
+ id = newId;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.SMART_GRID_FRAME__ID, oldId, id));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID:
+ return getConcentratorID();
+ case pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME:
+ return getUserName();
+ case pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE:
+ return getPostcode();
+ case pdp4engDesignPackage.SMART_GRID_FRAME__DATE:
+ return getDate();
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION:
+ return getConsumption();
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CRC:
+ return getCrc();
+ case pdp4engDesignPackage.SMART_GRID_FRAME__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 pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID:
+ setConcentratorID((String)newValue);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME:
+ setUserName((String)newValue);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE:
+ setPostcode((String)newValue);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__DATE:
+ setDate((String)newValue);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION:
+ setConsumption((String)newValue);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CRC:
+ setCrc((String)newValue);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__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 pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID:
+ setConcentratorID(CONCENTRATOR_ID_EDEFAULT);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME:
+ setUserName(USER_NAME_EDEFAULT);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE:
+ setPostcode(POSTCODE_EDEFAULT);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__DATE:
+ setDate(DATE_EDEFAULT);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION:
+ setConsumption(CONSUMPTION_EDEFAULT);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CRC:
+ setCrc(CRC_EDEFAULT);
+ return;
+ case pdp4engDesignPackage.SMART_GRID_FRAME__ID:
+ setId(ID_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CONCENTRATOR_ID:
+ return CONCENTRATOR_ID_EDEFAULT == null ? concentratorID != null : !CONCENTRATOR_ID_EDEFAULT.equals(concentratorID);
+ case pdp4engDesignPackage.SMART_GRID_FRAME__USER_NAME:
+ return USER_NAME_EDEFAULT == null ? userName != null : !USER_NAME_EDEFAULT.equals(userName);
+ case pdp4engDesignPackage.SMART_GRID_FRAME__POSTCODE:
+ return POSTCODE_EDEFAULT == null ? postcode != null : !POSTCODE_EDEFAULT.equals(postcode);
+ case pdp4engDesignPackage.SMART_GRID_FRAME__DATE:
+ return DATE_EDEFAULT == null ? date != null : !DATE_EDEFAULT.equals(date);
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CONSUMPTION:
+ return CONSUMPTION_EDEFAULT == null ? consumption != null : !CONSUMPTION_EDEFAULT.equals(consumption);
+ case pdp4engDesignPackage.SMART_GRID_FRAME__CRC:
+ return CRC_EDEFAULT == null ? crc != null : !CRC_EDEFAULT.equals(crc);
+ case pdp4engDesignPackage.SMART_GRID_FRAME__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();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (concentratorID: ");
+ result.append(concentratorID);
+ result.append(", userName: ");
+ result.append(userName);
+ result.append(", postcode: ");
+ result.append(postcode);
+ result.append(", date: ");
+ result.append(date);
+ result.append(", consumption: ");
+ result.append(consumption);
+ result.append(", crc: ");
+ result.append(crc);
+ result.append(", id: ");
+ result.append(id);
+ result.append(')');
+ return result.toString();
+ }
+
+} //SmartGridFrameImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/TableImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/TableImpl.java
new file mode 100644
index 0000000..4b05977
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/TableImpl.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Table</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TableImpl extends DataImpl implements Table {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TableImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.TABLE;
+ }
+
+} //TableImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/isPersonalDataImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/isPersonalDataImpl.java
new file mode 100644
index 0000000..c38d084
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/isPersonalDataImpl.java
@@ -0,0 +1,306 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>is Personal Data</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl#getLikelihood <em>Likelihood</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl#getBase_NamedElement <em>Base Named Element</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class isPersonalDataImpl extends MinimalEObjectImpl.Container implements isPersonalData {
+ /**
+ * The default value of the '{@link #getLikelihood() <em>Likelihood</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLikelihood()
+ * @generated
+ * @ordered
+ */
+ protected static final double LIKELIHOOD_EDEFAULT = 0.0;
+
+ /**
+ * The cached value of the '{@link #getLikelihood() <em>Likelihood</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLikelihood()
+ * @generated
+ * @ordered
+ */
+ protected double likelihood = LIKELIHOOD_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_NamedElement() <em>Base Named Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_NamedElement()
+ * @generated
+ * @ordered
+ */
+ protected NamedElement base_NamedElement;
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected isPersonalDataImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return pdp4engDesignPackage.Literals.IS_PERSONAL_DATA;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public double getLikelihood() {
+ return likelihood;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setLikelihood(double newLikelihood) {
+ double oldLikelihood = likelihood;
+ likelihood = newLikelihood;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD, oldLikelihood, likelihood));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NamedElement getBase_NamedElement() {
+ if (base_NamedElement != null && base_NamedElement.eIsProxy()) {
+ InternalEObject oldBase_NamedElement = (InternalEObject)base_NamedElement;
+ base_NamedElement = (NamedElement)eResolveProxy(oldBase_NamedElement);
+ if (base_NamedElement != oldBase_NamedElement) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT, oldBase_NamedElement, base_NamedElement));
+ }
+ }
+ return base_NamedElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NamedElement basicGetBase_NamedElement() {
+ return base_NamedElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_NamedElement(NamedElement newBase_NamedElement) {
+ NamedElement oldBase_NamedElement = base_NamedElement;
+ base_NamedElement = newBase_NamedElement;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT, oldBase_NamedElement, base_NamedElement));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD:
+ return getLikelihood();
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT:
+ if (resolve) return getBase_NamedElement();
+ return basicGetBase_NamedElement();
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD:
+ setLikelihood((Double)newValue);
+ return;
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT:
+ setBase_NamedElement((NamedElement)newValue);
+ return;
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD:
+ setLikelihood(LIKELIHOOD_EDEFAULT);
+ return;
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT:
+ setBase_NamedElement((NamedElement)null);
+ return;
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__LIKELIHOOD:
+ return likelihood != LIKELIHOOD_EDEFAULT;
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_NAMED_ELEMENT:
+ return base_NamedElement != null;
+ case pdp4engDesignPackage.IS_PERSONAL_DATA__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (likelihood: ");
+ result.append(likelihood);
+ result.append(')');
+ return result.toString();
+ }
+
+} //isPersonalDataImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignFactoryImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignFactoryImpl.java
new file mode 100644
index 0000000..8b2f1e6
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignFactoryImpl.java
@@ -0,0 +1,294 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignFactory;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class pdp4engDesignFactoryImpl extends EFactoryImpl implements pdp4engDesignFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static pdp4engDesignFactory init() {
+ try {
+ pdp4engDesignFactory thepdp4engDesignFactory = (pdp4engDesignFactory)EPackage.Registry.INSTANCE.getEFactory(pdp4engDesignPackage.eNS_URI);
+ if (thepdp4engDesignFactory != null) {
+ return thepdp4engDesignFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new pdp4engDesignFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public pdp4engDesignFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case pdp4engDesignPackage.OPAQUE_DATA: return createOpaqueData();
+ case pdp4engDesignPackage.DATA_TYPE: return createDataType();
+ case pdp4engDesignPackage.IS_PERSONAL_DATA: return createisPersonalData();
+ case pdp4engDesignPackage.DATA_OUTPUT: return createDataOutput();
+ case pdp4engDesignPackage.DATA: return createData();
+ case pdp4engDesignPackage.DATA_LINK: return createDataLink();
+ case pdp4engDesignPackage.COMPOSITE_DATA: return createCompositeData();
+ case pdp4engDesignPackage.TABLE: return createTable();
+ case pdp4engDesignPackage.EXTERNAL_ENTITY: return createExternalEntity();
+ case pdp4engDesignPackage.ENTITY: return createEntity();
+ case pdp4engDesignPackage.DATA_STORE: return createDataStore();
+ case pdp4engDesignPackage.DATA_INPUT: return createDataInput();
+ case pdp4engDesignPackage.PROCESS: return createProcess();
+ case pdp4engDesignPackage.CALL_PROCESS: return createCallProcess();
+ case pdp4engDesignPackage.SMART_GRID_FRAME: return createSmartGridFrame();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public OpaqueData createOpaqueData() {
+ OpaqueDataImpl opaqueData = new OpaqueDataImpl();
+ return opaqueData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public DataType createDataType() {
+ DataTypeImpl dataType = new DataTypeImpl();
+ return dataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public isPersonalData createisPersonalData() {
+ isPersonalDataImpl isPersonalData = new isPersonalDataImpl();
+ return isPersonalData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public DataOutput createDataOutput() {
+ DataOutputImpl dataOutput = new DataOutputImpl();
+ return dataOutput;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Data createData() {
+ DataImpl data = new DataImpl();
+ return data;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public DataLink createDataLink() {
+ DataLinkImpl dataLink = new DataLinkImpl();
+ return dataLink;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public CompositeData createCompositeData() {
+ CompositeDataImpl compositeData = new CompositeDataImpl();
+ return compositeData;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Table createTable() {
+ TableImpl table = new TableImpl();
+ return table;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public ExternalEntity createExternalEntity() {
+ ExternalEntityImpl externalEntity = new ExternalEntityImpl();
+ return externalEntity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Entity createEntity() {
+ EntityImpl entity = new EntityImpl();
+ return entity;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public DataStore createDataStore() {
+ DataStoreImpl dataStore = new DataStoreImpl();
+ return dataStore;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public DataInput createDataInput() {
+ DataInputImpl dataInput = new DataInputImpl();
+ return dataInput;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process createProcess() {
+ ProcessImpl process = new ProcessImpl();
+ return process;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public CallProcess createCallProcess() {
+ CallProcessImpl callProcess = new CallProcessImpl();
+ return callProcess;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public SmartGridFrame createSmartGridFrame() {
+ SmartGridFrameImpl smartGridFrame = new SmartGridFrameImpl();
+ return smartGridFrame;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public pdp4engDesignPackage getpdp4engDesignPackage() {
+ return (pdp4engDesignPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static pdp4engDesignPackage getPackage() {
+ return pdp4engDesignPackage.eINSTANCE;
+ }
+
+} //pdp4engDesignFactoryImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignPackageImpl.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignPackageImpl.java
new file mode 100644
index 0000000..3489d04
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/impl/pdp4engDesignPackageImpl.java
@@ -0,0 +1,809 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignFactory;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class pdp4engDesignPackageImpl extends EPackageImpl implements pdp4engDesignPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass opaqueDataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass isPersonalDataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataOutputEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataLinkEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass compositeDataEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass tableEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass externalEntityEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass entityEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataStoreEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass dataInputEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass processEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass callProcessEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass smartGridFrameEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private pdp4engDesignPackageImpl() {
+ super(eNS_URI, pdp4engDesignFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link pdp4engDesignPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static pdp4engDesignPackage init() {
+ if (isInited) return (pdp4engDesignPackage)EPackage.Registry.INSTANCE.getEPackage(pdp4engDesignPackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object registeredpdp4engDesignPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ pdp4engDesignPackageImpl thepdp4engDesignPackage = registeredpdp4engDesignPackage instanceof pdp4engDesignPackageImpl ? (pdp4engDesignPackageImpl)registeredpdp4engDesignPackage : new pdp4engDesignPackageImpl();
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ TypesPackage.eINSTANCE.eClass();
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ thepdp4engDesignPackage.createPackageContents();
+
+ // Initialize created meta-data
+ thepdp4engDesignPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ thepdp4engDesignPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(pdp4engDesignPackage.eNS_URI, thepdp4engDesignPackage);
+ return thepdp4engDesignPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getOpaqueData() {
+ return opaqueDataEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getDataType() {
+ return dataTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getDataType_Base_PrimitiveType() {
+ return (EReference)dataTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getisPersonalData() {
+ return isPersonalDataEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getisPersonalData_Likelihood() {
+ return (EAttribute)isPersonalDataEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getisPersonalData_Base_NamedElement() {
+ return (EReference)isPersonalDataEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getisPersonalData_Base_Class() {
+ return (EReference)isPersonalDataEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getDataOutput() {
+ return dataOutputEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getDataOutput_Base_OutputPin() {
+ return (EReference)dataOutputEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getDataOutput_Base_Parameter() {
+ return (EReference)dataOutputEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getData() {
+ return dataEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getData_Base_Class() {
+ return (EReference)dataEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getDataLink() {
+ return dataLinkEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getDataLink_Path() {
+ return (EAttribute)dataLinkEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getDataLink_Type() {
+ return (EReference)dataLinkEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getCompositeData() {
+ return compositeDataEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getTable() {
+ return tableEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getExternalEntity() {
+ return externalEntityEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getExternalEntity_Base_ActivityParameterNode() {
+ return (EReference)externalEntityEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getExternalEntity_Entity() {
+ return (EReference)externalEntityEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getEntity() {
+ return entityEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getEntity_Base_NamedElement() {
+ return (EReference)entityEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getDataStore() {
+ return dataStoreEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getDataStore_Base_DataStoreNode() {
+ return (EReference)dataStoreEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getDataInput() {
+ return dataInputEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getDataInput_Base_InputPin() {
+ return (EReference)dataInputEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getDataInput_Base_Parameter() {
+ return (EReference)dataInputEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getProcess() {
+ return processEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getProcess_Base_Activity() {
+ return (EReference)processEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getCallProcess() {
+ return callProcessEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getCallProcess_Base_CallBehaviorAction() {
+ return (EReference)callProcessEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getCallProcess_Base_OpaqueAction() {
+ return (EReference)callProcessEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EClass getSmartGridFrame() {
+ return smartGridFrameEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getSmartGridFrame_ConcentratorID() {
+ return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getSmartGridFrame_UserName() {
+ return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getSmartGridFrame_Postcode() {
+ return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getSmartGridFrame_Date() {
+ return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getSmartGridFrame_Consumption() {
+ return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getSmartGridFrame_Crc() {
+ return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EAttribute getSmartGridFrame_Id() {
+ return (EAttribute)smartGridFrameEClass.getEStructuralFeatures().get(6);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public pdp4engDesignFactory getpdp4engDesignFactory() {
+ return (pdp4engDesignFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ opaqueDataEClass = createEClass(OPAQUE_DATA);
+
+ dataTypeEClass = createEClass(DATA_TYPE);
+ createEReference(dataTypeEClass, DATA_TYPE__BASE_PRIMITIVE_TYPE);
+
+ isPersonalDataEClass = createEClass(IS_PERSONAL_DATA);
+ createEAttribute(isPersonalDataEClass, IS_PERSONAL_DATA__LIKELIHOOD);
+ createEReference(isPersonalDataEClass, IS_PERSONAL_DATA__BASE_NAMED_ELEMENT);
+ createEReference(isPersonalDataEClass, IS_PERSONAL_DATA__BASE_CLASS);
+
+ dataOutputEClass = createEClass(DATA_OUTPUT);
+ createEReference(dataOutputEClass, DATA_OUTPUT__BASE_OUTPUT_PIN);
+ createEReference(dataOutputEClass, DATA_OUTPUT__BASE_PARAMETER);
+
+ dataEClass = createEClass(DATA);
+ createEReference(dataEClass, DATA__BASE_CLASS);
+
+ dataLinkEClass = createEClass(DATA_LINK);
+ createEAttribute(dataLinkEClass, DATA_LINK__PATH);
+ createEReference(dataLinkEClass, DATA_LINK__TYPE);
+
+ compositeDataEClass = createEClass(COMPOSITE_DATA);
+
+ tableEClass = createEClass(TABLE);
+
+ externalEntityEClass = createEClass(EXTERNAL_ENTITY);
+ createEReference(externalEntityEClass, EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE);
+ createEReference(externalEntityEClass, EXTERNAL_ENTITY__ENTITY);
+
+ entityEClass = createEClass(ENTITY);
+ createEReference(entityEClass, ENTITY__BASE_NAMED_ELEMENT);
+
+ dataStoreEClass = createEClass(DATA_STORE);
+ createEReference(dataStoreEClass, DATA_STORE__BASE_DATA_STORE_NODE);
+
+ dataInputEClass = createEClass(DATA_INPUT);
+ createEReference(dataInputEClass, DATA_INPUT__BASE_INPUT_PIN);
+ createEReference(dataInputEClass, DATA_INPUT__BASE_PARAMETER);
+
+ processEClass = createEClass(PROCESS);
+ createEReference(processEClass, PROCESS__BASE_ACTIVITY);
+
+ callProcessEClass = createEClass(CALL_PROCESS);
+ createEReference(callProcessEClass, CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION);
+ createEReference(callProcessEClass, CALL_PROCESS__BASE_OPAQUE_ACTION);
+
+ smartGridFrameEClass = createEClass(SMART_GRID_FRAME);
+ createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__CONCENTRATOR_ID);
+ createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__USER_NAME);
+ createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__POSTCODE);
+ createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__DATE);
+ createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__CONSUMPTION);
+ createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__CRC);
+ createEAttribute(smartGridFrameEClass, SMART_GRID_FRAME__ID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+ TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ opaqueDataEClass.getESuperTypes().add(this.getDataType());
+ dataLinkEClass.getESuperTypes().add(this.getData());
+ compositeDataEClass.getESuperTypes().add(this.getData());
+ tableEClass.getESuperTypes().add(this.getData());
+ smartGridFrameEClass.getESuperTypes().add(this.getData());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(opaqueDataEClass, OpaqueData.class, "OpaqueData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(dataTypeEClass, DataType.class, "DataType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDataType_Base_PrimitiveType(), theUMLPackage.getPrimitiveType(), null, "base_PrimitiveType", null, 1, 1, DataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(isPersonalDataEClass, isPersonalData.class, "isPersonalData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getisPersonalData_Likelihood(), theTypesPackage.getReal(), "likelihood", null, 0, 1, isPersonalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getisPersonalData_Base_NamedElement(), theUMLPackage.getNamedElement(), null, "base_NamedElement", null, 1, 1, isPersonalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getisPersonalData_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, isPersonalData.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(dataOutputEClass, DataOutput.class, "DataOutput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDataOutput_Base_OutputPin(), theUMLPackage.getOutputPin(), null, "base_OutputPin", null, 1, 1, DataOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getDataOutput_Base_Parameter(), theUMLPackage.getParameter(), null, "base_Parameter", null, 1, 1, DataOutput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(dataEClass, Data.class, "Data", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getData_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, Data.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(dataLinkEClass, DataLink.class, "DataLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getDataLink_Path(), theTypesPackage.getString(), "path", null, 0, 1, DataLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getDataLink_Type(), this.getDataType(), null, "type", null, 0, 1, DataLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(compositeDataEClass, CompositeData.class, "CompositeData", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(tableEClass, Table.class, "Table", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(externalEntityEClass, ExternalEntity.class, "ExternalEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExternalEntity_Base_ActivityParameterNode(), theUMLPackage.getActivityParameterNode(), null, "base_ActivityParameterNode", null, 1, 1, ExternalEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getExternalEntity_Entity(), this.getEntity(), null, "entity", null, 0, 1, ExternalEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(entityEClass, Entity.class, "Entity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEntity_Base_NamedElement(), theUMLPackage.getNamedElement(), null, "base_NamedElement", null, 1, 1, Entity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(dataStoreEClass, DataStore.class, "DataStore", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDataStore_Base_DataStoreNode(), theUMLPackage.getDataStoreNode(), null, "base_DataStoreNode", null, 1, 1, DataStore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(dataInputEClass, DataInput.class, "DataInput", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDataInput_Base_InputPin(), theUMLPackage.getInputPin(), null, "base_InputPin", null, 1, 1, DataInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getDataInput_Base_Parameter(), theUMLPackage.getParameter(), null, "base_Parameter", null, 1, 1, DataInput.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(processEClass, org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process.class, "Process", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getProcess_Base_Activity(), theUMLPackage.getActivity(), null, "base_Activity", null, 1, 1, org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(callProcessEClass, CallProcess.class, "CallProcess", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCallProcess_Base_CallBehaviorAction(), theUMLPackage.getCallBehaviorAction(), null, "base_CallBehaviorAction", null, 1, 1, CallProcess.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCallProcess_Base_OpaqueAction(), theUMLPackage.getOpaqueAction(), null, "base_OpaqueAction", null, 0, 1, CallProcess.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(smartGridFrameEClass, SmartGridFrame.class, "SmartGridFrame", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getSmartGridFrame_ConcentratorID(), theTypesPackage.getString(), "concentratorID", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSmartGridFrame_UserName(), theTypesPackage.getString(), "userName", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSmartGridFrame_Postcode(), theTypesPackage.getString(), "postcode", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSmartGridFrame_Date(), theTypesPackage.getString(), "date", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSmartGridFrame_Consumption(), theTypesPackage.getString(), "consumption", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSmartGridFrame_Crc(), theTypesPackage.getString(), "crc", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSmartGridFrame_Id(), theTypesPackage.getString(), "id", null, 0, 1, SmartGridFrame.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //pdp4engDesignPackageImpl
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/isPersonalData.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/isPersonalData.java
new file mode 100644
index 0000000..9005dfe
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/isPersonalData.java
@@ -0,0 +1,125 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>is Personal Data</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Likelihood interval to be
+ * written as a Java constraint
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getLikelihood <em>Likelihood</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_NamedElement <em>Base Named Element</em>}</li>
+ * <li>{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getisPersonalData()
+ * @model
+ * @generated
+ */
+public interface isPersonalData extends EObject {
+ /**
+ * Returns the value of the '<em><b>Likelihood</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Likelihood</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Likelihood</em>' attribute.
+ * @see #setLikelihood(double)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getisPersonalData_Likelihood()
+ * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+ * @generated
+ */
+ double getLikelihood();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getLikelihood <em>Likelihood</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Likelihood</em>' attribute.
+ * @see #getLikelihood()
+ * @generated
+ */
+ void setLikelihood(double value);
+
+ /**
+ * Returns the value of the '<em><b>Base Named Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Named Element</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Named Element</em>' reference.
+ * @see #setBase_NamedElement(NamedElement)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getisPersonalData_Base_NamedElement()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ NamedElement getBase_NamedElement();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_NamedElement <em>Base Named Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Named Element</em>' reference.
+ * @see #getBase_NamedElement()
+ * @generated
+ */
+ void setBase_NamedElement(NamedElement value);
+
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage#getisPersonalData_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // isPersonalData
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignFactory.java
new file mode 100644
index 0000000..9e5ba3b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignFactory.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage
+ * @generated
+ */
+public interface pdp4engDesignFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ pdp4engDesignFactory eINSTANCE = org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Opaque Data</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Opaque Data</em>'.
+ * @generated
+ */
+ OpaqueData createOpaqueData();
+
+ /**
+ * Returns a new object of class '<em>Data Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Type</em>'.
+ * @generated
+ */
+ DataType createDataType();
+
+ /**
+ * Returns a new object of class '<em>is Personal Data</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>is Personal Data</em>'.
+ * @generated
+ */
+ isPersonalData createisPersonalData();
+
+ /**
+ * Returns a new object of class '<em>Data Output</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Output</em>'.
+ * @generated
+ */
+ DataOutput createDataOutput();
+
+ /**
+ * Returns a new object of class '<em>Data</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data</em>'.
+ * @generated
+ */
+ Data createData();
+
+ /**
+ * Returns a new object of class '<em>Data Link</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Link</em>'.
+ * @generated
+ */
+ DataLink createDataLink();
+
+ /**
+ * Returns a new object of class '<em>Composite Data</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Composite Data</em>'.
+ * @generated
+ */
+ CompositeData createCompositeData();
+
+ /**
+ * Returns a new object of class '<em>Table</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Table</em>'.
+ * @generated
+ */
+ Table createTable();
+
+ /**
+ * Returns a new object of class '<em>External Entity</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>External Entity</em>'.
+ * @generated
+ */
+ ExternalEntity createExternalEntity();
+
+ /**
+ * Returns a new object of class '<em>Entity</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Entity</em>'.
+ * @generated
+ */
+ Entity createEntity();
+
+ /**
+ * Returns a new object of class '<em>Data Store</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Store</em>'.
+ * @generated
+ */
+ DataStore createDataStore();
+
+ /**
+ * Returns a new object of class '<em>Data Input</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Data Input</em>'.
+ * @generated
+ */
+ DataInput createDataInput();
+
+ /**
+ * Returns a new object of class '<em>Process</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Process</em>'.
+ * @generated
+ */
+ Process createProcess();
+
+ /**
+ * Returns a new object of class '<em>Call Process</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Call Process</em>'.
+ * @generated
+ */
+ CallProcess createCallProcess();
+
+ /**
+ * Returns a new object of class '<em>Smart Grid Frame</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Smart Grid Frame</em>'.
+ * @generated
+ */
+ SmartGridFrame createSmartGridFrame();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ pdp4engDesignPackage getpdp4engDesignPackage();
+
+} //pdp4engDesignFactory
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignPackage.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignPackage.java
new file mode 100644
index 0000000..90de251
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/pdp4engDesignPackage.java
@@ -0,0 +1,1564 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface pdp4engDesignPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "pdp4engDesign";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://org.eclipse.papyrus.pdp4eng.designer.profile";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "pdp4engDesign";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ pdp4engDesignPackage eINSTANCE = org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataTypeImpl <em>Data Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataTypeImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataType()
+ * @generated
+ */
+ int DATA_TYPE = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Primitive Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE__BASE_PRIMITIVE_TYPE = 0;
+
+ /**
+ * The number of structural features of the '<em>Data Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Data Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_TYPE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.OpaqueDataImpl <em>Opaque Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.OpaqueDataImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getOpaqueData()
+ * @generated
+ */
+ int OPAQUE_DATA = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Primitive Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPAQUE_DATA__BASE_PRIMITIVE_TYPE = DATA_TYPE__BASE_PRIMITIVE_TYPE;
+
+ /**
+ * The number of structural features of the '<em>Opaque Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPAQUE_DATA_FEATURE_COUNT = DATA_TYPE_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Opaque Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPAQUE_DATA_OPERATION_COUNT = DATA_TYPE_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl <em>is Personal Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getisPersonalData()
+ * @generated
+ */
+ int IS_PERSONAL_DATA = 2;
+
+ /**
+ * The feature id for the '<em><b>Likelihood</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_PERSONAL_DATA__LIKELIHOOD = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Named Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_PERSONAL_DATA__BASE_NAMED_ELEMENT = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_PERSONAL_DATA__BASE_CLASS = 2;
+
+ /**
+ * The number of structural features of the '<em>is Personal Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_PERSONAL_DATA_FEATURE_COUNT = 3;
+
+ /**
+ * The number of operations of the '<em>is Personal Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IS_PERSONAL_DATA_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataOutputImpl <em>Data Output</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataOutputImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataOutput()
+ * @generated
+ */
+ int DATA_OUTPUT = 3;
+
+ /**
+ * The feature id for the '<em><b>Base Output Pin</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_OUTPUT__BASE_OUTPUT_PIN = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_OUTPUT__BASE_PARAMETER = 1;
+
+ /**
+ * The number of structural features of the '<em>Data Output</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_OUTPUT_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Data Output</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_OUTPUT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataImpl <em>Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getData()
+ * @generated
+ */
+ int DATA = 4;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataLinkImpl <em>Data Link</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataLinkImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataLink()
+ * @generated
+ */
+ int DATA_LINK = 5;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_LINK__BASE_CLASS = DATA__BASE_CLASS;
+
+ /**
+ * The feature id for the '<em><b>Path</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_LINK__PATH = DATA_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_LINK__TYPE = DATA_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Data Link</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_LINK_FEATURE_COUNT = DATA_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Data Link</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_LINK_OPERATION_COUNT = DATA_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CompositeDataImpl <em>Composite Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CompositeDataImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getCompositeData()
+ * @generated
+ */
+ int COMPOSITE_DATA = 6;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_DATA__BASE_CLASS = DATA__BASE_CLASS;
+
+ /**
+ * The number of structural features of the '<em>Composite Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_DATA_FEATURE_COUNT = DATA_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Composite Data</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPOSITE_DATA_OPERATION_COUNT = DATA_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.TableImpl <em>Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.TableImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getTable()
+ * @generated
+ */
+ int TABLE = 7;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE__BASE_CLASS = DATA__BASE_CLASS;
+
+ /**
+ * The number of structural features of the '<em>Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE_FEATURE_COUNT = DATA_FEATURE_COUNT + 0;
+
+ /**
+ * The number of operations of the '<em>Table</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TABLE_OPERATION_COUNT = DATA_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ExternalEntityImpl <em>External Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ExternalEntityImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getExternalEntity()
+ * @generated
+ */
+ int EXTERNAL_ENTITY = 8;
+
+ /**
+ * The feature id for the '<em><b>Base Activity Parameter Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE = 0;
+
+ /**
+ * The feature id for the '<em><b>Entity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_ENTITY__ENTITY = 1;
+
+ /**
+ * The number of structural features of the '<em>External Entity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_ENTITY_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>External Entity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_ENTITY_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.EntityImpl <em>Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.EntityImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getEntity()
+ * @generated
+ */
+ int ENTITY = 9;
+
+ /**
+ * The feature id for the '<em><b>Base Named Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTITY__BASE_NAMED_ELEMENT = 0;
+
+ /**
+ * The number of structural features of the '<em>Entity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTITY_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Entity</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ENTITY_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataStoreImpl <em>Data Store</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataStoreImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataStore()
+ * @generated
+ */
+ int DATA_STORE = 10;
+
+ /**
+ * The feature id for the '<em><b>Base Data Store Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_STORE__BASE_DATA_STORE_NODE = 0;
+
+ /**
+ * The number of structural features of the '<em>Data Store</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_STORE_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Data Store</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_STORE_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataInputImpl <em>Data Input</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataInputImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataInput()
+ * @generated
+ */
+ int DATA_INPUT = 11;
+
+ /**
+ * The feature id for the '<em><b>Base Input Pin</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_INPUT__BASE_INPUT_PIN = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_INPUT__BASE_PARAMETER = 1;
+
+ /**
+ * The number of structural features of the '<em>Data Input</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_INPUT_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Data Input</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DATA_INPUT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ProcessImpl <em>Process</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ProcessImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getProcess()
+ * @generated
+ */
+ int PROCESS = 12;
+
+ /**
+ * The feature id for the '<em><b>Base Activity</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROCESS__BASE_ACTIVITY = 0;
+
+ /**
+ * The number of structural features of the '<em>Process</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROCESS_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Process</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PROCESS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CallProcessImpl <em>Call Process</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CallProcessImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getCallProcess()
+ * @generated
+ */
+ int CALL_PROCESS = 13;
+
+ /**
+ * The feature id for the '<em><b>Base Call Behavior Action</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Opaque Action</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CALL_PROCESS__BASE_OPAQUE_ACTION = 1;
+
+ /**
+ * The number of structural features of the '<em>Call Process</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CALL_PROCESS_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Call Process</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CALL_PROCESS_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl <em>Smart Grid Frame</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getSmartGridFrame()
+ * @generated
+ */
+ int SMART_GRID_FRAME = 14;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME__BASE_CLASS = DATA__BASE_CLASS;
+
+ /**
+ * The feature id for the '<em><b>Concentrator ID</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME__CONCENTRATOR_ID = DATA_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>User Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME__USER_NAME = DATA_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Postcode</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME__POSTCODE = DATA_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Date</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME__DATE = DATA_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Consumption</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME__CONSUMPTION = DATA_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Crc</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME__CRC = DATA_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Id</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME__ID = DATA_FEATURE_COUNT + 6;
+
+ /**
+ * The number of structural features of the '<em>Smart Grid Frame</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME_FEATURE_COUNT = DATA_FEATURE_COUNT + 7;
+
+ /**
+ * The number of operations of the '<em>Smart Grid Frame</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SMART_GRID_FRAME_OPERATION_COUNT = DATA_OPERATION_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData <em>Opaque Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Opaque Data</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData
+ * @generated
+ */
+ EClass getOpaqueData();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType <em>Data Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Type</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType
+ * @generated
+ */
+ EClass getDataType();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType#getBase_PrimitiveType <em>Base Primitive Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Primitive Type</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType#getBase_PrimitiveType()
+ * @see #getDataType()
+ * @generated
+ */
+ EReference getDataType_Base_PrimitiveType();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData <em>is Personal Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>is Personal Data</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData
+ * @generated
+ */
+ EClass getisPersonalData();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getLikelihood <em>Likelihood</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Likelihood</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getLikelihood()
+ * @see #getisPersonalData()
+ * @generated
+ */
+ EAttribute getisPersonalData_Likelihood();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_NamedElement <em>Base Named Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Named Element</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_NamedElement()
+ * @see #getisPersonalData()
+ * @generated
+ */
+ EReference getisPersonalData_Base_NamedElement();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData#getBase_Class()
+ * @see #getisPersonalData()
+ * @generated
+ */
+ EReference getisPersonalData_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput <em>Data Output</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Output</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput
+ * @generated
+ */
+ EClass getDataOutput();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_OutputPin <em>Base Output Pin</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Output Pin</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_OutputPin()
+ * @see #getDataOutput()
+ * @generated
+ */
+ EReference getDataOutput_Base_OutputPin();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_Parameter <em>Base Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Parameter</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput#getBase_Parameter()
+ * @see #getDataOutput()
+ * @generated
+ */
+ EReference getDataOutput_Base_Parameter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data <em>Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data
+ * @generated
+ */
+ EClass getData();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data#getBase_Class()
+ * @see #getData()
+ * @generated
+ */
+ EReference getData_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink <em>Data Link</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Link</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink
+ * @generated
+ */
+ EClass getDataLink();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getPath <em>Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Path</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getPath()
+ * @see #getDataLink()
+ * @generated
+ */
+ EAttribute getDataLink_Path();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Type</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink#getType()
+ * @see #getDataLink()
+ * @generated
+ */
+ EReference getDataLink_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData <em>Composite Data</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Composite Data</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData
+ * @generated
+ */
+ EClass getCompositeData();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table <em>Table</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Table</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table
+ * @generated
+ */
+ EClass getTable();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity <em>External Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>External Entity</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity
+ * @generated
+ */
+ EClass getExternalEntity();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getBase_ActivityParameterNode <em>Base Activity Parameter Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Activity Parameter Node</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getBase_ActivityParameterNode()
+ * @see #getExternalEntity()
+ * @generated
+ */
+ EReference getExternalEntity_Base_ActivityParameterNode();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getEntity <em>Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Entity</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity#getEntity()
+ * @see #getExternalEntity()
+ * @generated
+ */
+ EReference getExternalEntity_Entity();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity <em>Entity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Entity</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity
+ * @generated
+ */
+ EClass getEntity();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity#getBase_NamedElement <em>Base Named Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Named Element</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity#getBase_NamedElement()
+ * @see #getEntity()
+ * @generated
+ */
+ EReference getEntity_Base_NamedElement();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore <em>Data Store</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Store</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore
+ * @generated
+ */
+ EClass getDataStore();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore#getBase_DataStoreNode <em>Base Data Store Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Data Store Node</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore#getBase_DataStoreNode()
+ * @see #getDataStore()
+ * @generated
+ */
+ EReference getDataStore_Base_DataStoreNode();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput <em>Data Input</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Data Input</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput
+ * @generated
+ */
+ EClass getDataInput();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_InputPin <em>Base Input Pin</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Input Pin</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_InputPin()
+ * @see #getDataInput()
+ * @generated
+ */
+ EReference getDataInput_Base_InputPin();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_Parameter <em>Base Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Parameter</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput#getBase_Parameter()
+ * @see #getDataInput()
+ * @generated
+ */
+ EReference getDataInput_Base_Parameter();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process <em>Process</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Process</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process
+ * @generated
+ */
+ EClass getProcess();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process#getBase_Activity <em>Base Activity</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Activity</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process#getBase_Activity()
+ * @see #getProcess()
+ * @generated
+ */
+ EReference getProcess_Base_Activity();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess <em>Call Process</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Call Process</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess
+ * @generated
+ */
+ EClass getCallProcess();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_CallBehaviorAction <em>Base Call Behavior Action</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Call Behavior Action</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_CallBehaviorAction()
+ * @see #getCallProcess()
+ * @generated
+ */
+ EReference getCallProcess_Base_CallBehaviorAction();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_OpaqueAction <em>Base Opaque Action</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Opaque Action</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess#getBase_OpaqueAction()
+ * @see #getCallProcess()
+ * @generated
+ */
+ EReference getCallProcess_Base_OpaqueAction();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame <em>Smart Grid Frame</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Smart Grid Frame</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame
+ * @generated
+ */
+ EClass getSmartGridFrame();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConcentratorID <em>Concentrator ID</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Concentrator ID</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConcentratorID()
+ * @see #getSmartGridFrame()
+ * @generated
+ */
+ EAttribute getSmartGridFrame_ConcentratorID();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getUserName <em>User Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>User Name</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getUserName()
+ * @see #getSmartGridFrame()
+ * @generated
+ */
+ EAttribute getSmartGridFrame_UserName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getPostcode <em>Postcode</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Postcode</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getPostcode()
+ * @see #getSmartGridFrame()
+ * @generated
+ */
+ EAttribute getSmartGridFrame_Postcode();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getDate <em>Date</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Date</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getDate()
+ * @see #getSmartGridFrame()
+ * @generated
+ */
+ EAttribute getSmartGridFrame_Date();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConsumption <em>Consumption</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Consumption</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getConsumption()
+ * @see #getSmartGridFrame()
+ * @generated
+ */
+ EAttribute getSmartGridFrame_Consumption();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getCrc <em>Crc</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Crc</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getCrc()
+ * @see #getSmartGridFrame()
+ * @generated
+ */
+ EAttribute getSmartGridFrame_Crc();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getId <em>Id</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Id</em>'.
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame#getId()
+ * @see #getSmartGridFrame()
+ * @generated
+ */
+ EAttribute getSmartGridFrame_Id();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ pdp4engDesignFactory getpdp4engDesignFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.OpaqueDataImpl <em>Opaque Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.OpaqueDataImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getOpaqueData()
+ * @generated
+ */
+ EClass OPAQUE_DATA = eINSTANCE.getOpaqueData();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataTypeImpl <em>Data Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataTypeImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataType()
+ * @generated
+ */
+ EClass DATA_TYPE = eINSTANCE.getDataType();
+
+ /**
+ * The meta object literal for the '<em><b>Base Primitive Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_TYPE__BASE_PRIMITIVE_TYPE = eINSTANCE.getDataType_Base_PrimitiveType();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl <em>is Personal Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.isPersonalDataImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getisPersonalData()
+ * @generated
+ */
+ EClass IS_PERSONAL_DATA = eINSTANCE.getisPersonalData();
+
+ /**
+ * The meta object literal for the '<em><b>Likelihood</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute IS_PERSONAL_DATA__LIKELIHOOD = eINSTANCE.getisPersonalData_Likelihood();
+
+ /**
+ * The meta object literal for the '<em><b>Base Named Element</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IS_PERSONAL_DATA__BASE_NAMED_ELEMENT = eINSTANCE.getisPersonalData_Base_NamedElement();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IS_PERSONAL_DATA__BASE_CLASS = eINSTANCE.getisPersonalData_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataOutputImpl <em>Data Output</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataOutputImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataOutput()
+ * @generated
+ */
+ EClass DATA_OUTPUT = eINSTANCE.getDataOutput();
+
+ /**
+ * The meta object literal for the '<em><b>Base Output Pin</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_OUTPUT__BASE_OUTPUT_PIN = eINSTANCE.getDataOutput_Base_OutputPin();
+
+ /**
+ * The meta object literal for the '<em><b>Base Parameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_OUTPUT__BASE_PARAMETER = eINSTANCE.getDataOutput_Base_Parameter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataImpl <em>Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getData()
+ * @generated
+ */
+ EClass DATA = eINSTANCE.getData();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA__BASE_CLASS = eINSTANCE.getData_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataLinkImpl <em>Data Link</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataLinkImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataLink()
+ * @generated
+ */
+ EClass DATA_LINK = eINSTANCE.getDataLink();
+
+ /**
+ * The meta object literal for the '<em><b>Path</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DATA_LINK__PATH = eINSTANCE.getDataLink_Path();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_LINK__TYPE = eINSTANCE.getDataLink_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CompositeDataImpl <em>Composite Data</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CompositeDataImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getCompositeData()
+ * @generated
+ */
+ EClass COMPOSITE_DATA = eINSTANCE.getCompositeData();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.TableImpl <em>Table</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.TableImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getTable()
+ * @generated
+ */
+ EClass TABLE = eINSTANCE.getTable();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ExternalEntityImpl <em>External Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ExternalEntityImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getExternalEntity()
+ * @generated
+ */
+ EClass EXTERNAL_ENTITY = eINSTANCE.getExternalEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Base Activity Parameter Node</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTERNAL_ENTITY__BASE_ACTIVITY_PARAMETER_NODE = eINSTANCE.getExternalEntity_Base_ActivityParameterNode();
+
+ /**
+ * The meta object literal for the '<em><b>Entity</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTERNAL_ENTITY__ENTITY = eINSTANCE.getExternalEntity_Entity();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.EntityImpl <em>Entity</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.EntityImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getEntity()
+ * @generated
+ */
+ EClass ENTITY = eINSTANCE.getEntity();
+
+ /**
+ * The meta object literal for the '<em><b>Base Named Element</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ENTITY__BASE_NAMED_ELEMENT = eINSTANCE.getEntity_Base_NamedElement();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataStoreImpl <em>Data Store</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataStoreImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataStore()
+ * @generated
+ */
+ EClass DATA_STORE = eINSTANCE.getDataStore();
+
+ /**
+ * The meta object literal for the '<em><b>Base Data Store Node</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_STORE__BASE_DATA_STORE_NODE = eINSTANCE.getDataStore_Base_DataStoreNode();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataInputImpl <em>Data Input</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.DataInputImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getDataInput()
+ * @generated
+ */
+ EClass DATA_INPUT = eINSTANCE.getDataInput();
+
+ /**
+ * The meta object literal for the '<em><b>Base Input Pin</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_INPUT__BASE_INPUT_PIN = eINSTANCE.getDataInput_Base_InputPin();
+
+ /**
+ * The meta object literal for the '<em><b>Base Parameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DATA_INPUT__BASE_PARAMETER = eINSTANCE.getDataInput_Base_Parameter();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ProcessImpl <em>Process</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.ProcessImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getProcess()
+ * @generated
+ */
+ EClass PROCESS = eINSTANCE.getProcess();
+
+ /**
+ * The meta object literal for the '<em><b>Base Activity</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PROCESS__BASE_ACTIVITY = eINSTANCE.getProcess_Base_Activity();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CallProcessImpl <em>Call Process</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.CallProcessImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getCallProcess()
+ * @generated
+ */
+ EClass CALL_PROCESS = eINSTANCE.getCallProcess();
+
+ /**
+ * The meta object literal for the '<em><b>Base Call Behavior Action</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CALL_PROCESS__BASE_CALL_BEHAVIOR_ACTION = eINSTANCE.getCallProcess_Base_CallBehaviorAction();
+
+ /**
+ * The meta object literal for the '<em><b>Base Opaque Action</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CALL_PROCESS__BASE_OPAQUE_ACTION = eINSTANCE.getCallProcess_Base_OpaqueAction();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl <em>Smart Grid Frame</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.SmartGridFrameImpl
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.impl.pdp4engDesignPackageImpl#getSmartGridFrame()
+ * @generated
+ */
+ EClass SMART_GRID_FRAME = eINSTANCE.getSmartGridFrame();
+
+ /**
+ * The meta object literal for the '<em><b>Concentrator ID</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SMART_GRID_FRAME__CONCENTRATOR_ID = eINSTANCE.getSmartGridFrame_ConcentratorID();
+
+ /**
+ * The meta object literal for the '<em><b>User Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SMART_GRID_FRAME__USER_NAME = eINSTANCE.getSmartGridFrame_UserName();
+
+ /**
+ * The meta object literal for the '<em><b>Postcode</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SMART_GRID_FRAME__POSTCODE = eINSTANCE.getSmartGridFrame_Postcode();
+
+ /**
+ * The meta object literal for the '<em><b>Date</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SMART_GRID_FRAME__DATE = eINSTANCE.getSmartGridFrame_Date();
+
+ /**
+ * The meta object literal for the '<em><b>Consumption</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SMART_GRID_FRAME__CONSUMPTION = eINSTANCE.getSmartGridFrame_Consumption();
+
+ /**
+ * The meta object literal for the '<em><b>Crc</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SMART_GRID_FRAME__CRC = eINSTANCE.getSmartGridFrame_Crc();
+
+ /**
+ * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SMART_GRID_FRAME__ID = eINSTANCE.getSmartGridFrame_Id();
+
+ }
+
+} //pdp4engDesignPackage
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/util/pdp4engDesignAdapterFactory.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/util/pdp4engDesignAdapterFactory.java
new file mode 100644
index 0000000..05d1e63
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/util/pdp4engDesignAdapterFactory.java
@@ -0,0 +1,400 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage
+ * @generated
+ */
+public class pdp4engDesignAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static pdp4engDesignPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public pdp4engDesignAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = pdp4engDesignPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected pdp4engDesignSwitch<Adapter> modelSwitch =
+ new pdp4engDesignSwitch<Adapter>() {
+ @Override
+ public Adapter caseOpaqueData(OpaqueData object) {
+ return createOpaqueDataAdapter();
+ }
+ @Override
+ public Adapter caseDataType(DataType object) {
+ return createDataTypeAdapter();
+ }
+ @Override
+ public Adapter caseisPersonalData(isPersonalData object) {
+ return createisPersonalDataAdapter();
+ }
+ @Override
+ public Adapter caseDataOutput(DataOutput object) {
+ return createDataOutputAdapter();
+ }
+ @Override
+ public Adapter caseData(Data object) {
+ return createDataAdapter();
+ }
+ @Override
+ public Adapter caseDataLink(DataLink object) {
+ return createDataLinkAdapter();
+ }
+ @Override
+ public Adapter caseCompositeData(CompositeData object) {
+ return createCompositeDataAdapter();
+ }
+ @Override
+ public Adapter caseTable(Table object) {
+ return createTableAdapter();
+ }
+ @Override
+ public Adapter caseExternalEntity(ExternalEntity object) {
+ return createExternalEntityAdapter();
+ }
+ @Override
+ public Adapter caseEntity(Entity object) {
+ return createEntityAdapter();
+ }
+ @Override
+ public Adapter caseDataStore(DataStore object) {
+ return createDataStoreAdapter();
+ }
+ @Override
+ public Adapter caseDataInput(DataInput object) {
+ return createDataInputAdapter();
+ }
+ @Override
+ public Adapter caseProcess(org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process object) {
+ return createProcessAdapter();
+ }
+ @Override
+ public Adapter caseCallProcess(CallProcess object) {
+ return createCallProcessAdapter();
+ }
+ @Override
+ public Adapter caseSmartGridFrame(SmartGridFrame object) {
+ return createSmartGridFrameAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData <em>Opaque Data</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData
+ * @generated
+ */
+ public Adapter createOpaqueDataAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType <em>Data Type</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType
+ * @generated
+ */
+ public Adapter createDataTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData <em>is Personal Data</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData
+ * @generated
+ */
+ public Adapter createisPersonalDataAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput <em>Data Output</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput
+ * @generated
+ */
+ public Adapter createDataOutputAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data <em>Data</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data
+ * @generated
+ */
+ public Adapter createDataAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink <em>Data 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.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink
+ * @generated
+ */
+ public Adapter createDataLinkAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData <em>Composite Data</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData
+ * @generated
+ */
+ public Adapter createCompositeDataAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table <em>Table</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table
+ * @generated
+ */
+ public Adapter createTableAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity <em>External Entity</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity
+ * @generated
+ */
+ public Adapter createExternalEntityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity <em>Entity</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity
+ * @generated
+ */
+ public Adapter createEntityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore <em>Data Store</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore
+ * @generated
+ */
+ public Adapter createDataStoreAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput <em>Data Input</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput
+ * @generated
+ */
+ public Adapter createDataInputAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process <em>Process</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process
+ * @generated
+ */
+ public Adapter createProcessAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess <em>Call Process</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess
+ * @generated
+ */
+ public Adapter createCallProcessAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame <em>Smart Grid Frame</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.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame
+ * @generated
+ */
+ public Adapter createSmartGridFrameAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //pdp4engDesignAdapterFactory
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/util/pdp4engDesignSwitch.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/util/pdp4engDesignSwitch.java
new file mode 100644
index 0000000..59b581b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.profile/src/org/eclipse/papyrus/pdp4eng/designer/profile/pdp4engDesign/util/pdp4engDesignSwitch.java
@@ -0,0 +1,437 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CallProcess;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.CompositeData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Data;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataInput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataLink;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataOutput;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataStore;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.DataType;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Entity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.ExternalEntity;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.OpaqueData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.SmartGridFrame;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Table;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.isPersonalData;
+import org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.pdp4engDesignPackage
+ * @generated
+ */
+public class pdp4engDesignSwitch<T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static pdp4engDesignPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public pdp4engDesignSwitch() {
+ if (modelPackage == null) {
+ modelPackage = pdp4engDesignPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case pdp4engDesignPackage.OPAQUE_DATA: {
+ OpaqueData opaqueData = (OpaqueData)theEObject;
+ T result = caseOpaqueData(opaqueData);
+ if (result == null) result = caseDataType(opaqueData);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.DATA_TYPE: {
+ DataType dataType = (DataType)theEObject;
+ T result = caseDataType(dataType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.IS_PERSONAL_DATA: {
+ isPersonalData isPersonalData = (isPersonalData)theEObject;
+ T result = caseisPersonalData(isPersonalData);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.DATA_OUTPUT: {
+ DataOutput dataOutput = (DataOutput)theEObject;
+ T result = caseDataOutput(dataOutput);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.DATA: {
+ Data data = (Data)theEObject;
+ T result = caseData(data);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.DATA_LINK: {
+ DataLink dataLink = (DataLink)theEObject;
+ T result = caseDataLink(dataLink);
+ if (result == null) result = caseData(dataLink);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.COMPOSITE_DATA: {
+ CompositeData compositeData = (CompositeData)theEObject;
+ T result = caseCompositeData(compositeData);
+ if (result == null) result = caseData(compositeData);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.TABLE: {
+ Table table = (Table)theEObject;
+ T result = caseTable(table);
+ if (result == null) result = caseData(table);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.EXTERNAL_ENTITY: {
+ ExternalEntity externalEntity = (ExternalEntity)theEObject;
+ T result = caseExternalEntity(externalEntity);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.ENTITY: {
+ Entity entity = (Entity)theEObject;
+ T result = caseEntity(entity);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.DATA_STORE: {
+ DataStore dataStore = (DataStore)theEObject;
+ T result = caseDataStore(dataStore);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.DATA_INPUT: {
+ DataInput dataInput = (DataInput)theEObject;
+ T result = caseDataInput(dataInput);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.PROCESS: {
+ org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process process = (org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process)theEObject;
+ T result = caseProcess(process);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.CALL_PROCESS: {
+ CallProcess callProcess = (CallProcess)theEObject;
+ T result = caseCallProcess(callProcess);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case pdp4engDesignPackage.SMART_GRID_FRAME: {
+ SmartGridFrame smartGridFrame = (SmartGridFrame)theEObject;
+ T result = caseSmartGridFrame(smartGridFrame);
+ if (result == null) result = caseData(smartGridFrame);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Opaque Data</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>Opaque Data</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOpaqueData(OpaqueData object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data Type</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>Data Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDataType(DataType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>is Personal Data</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>is Personal Data</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseisPersonalData(isPersonalData object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data Output</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>Data Output</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDataOutput(DataOutput object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data</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>Data</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseData(Data object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data 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>Data Link</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDataLink(DataLink object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Composite Data</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>Composite Data</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCompositeData(CompositeData object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Table</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>Table</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTable(Table object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>External Entity</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>External Entity</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExternalEntity(ExternalEntity object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Entity</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>Entity</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEntity(Entity object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data Store</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>Data Store</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDataStore(DataStore object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Data Input</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>Data Input</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDataInput(DataInput object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Process</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>Process</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseProcess(org.eclipse.papyrus.pdp4eng.designer.profile.pdp4engDesign.Process object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Call Process</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>Call Process</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCallProcess(CallProcess object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Smart Grid Frame</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>Smart Grid Frame</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSmartGridFrame(SmartGridFrame object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //pdp4engDesignSwitch
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <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.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.project
new file mode 100644
index 0000000..f48e67e
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..eb5075b
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.ui;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: %providerName
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.papyrus.requirements.sysml14.common;bundle-version="[0.7.0,1.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.4.0,6.0.0)",
+ org.eclipse.emf.transaction;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.controller;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.core.commands;bundle-version="[3.9.0,4.0.0)",
+ org.eclipse.ui;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.pdp4eng.designer.engine;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.papyrus.infra.widgets;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.swt;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.papyrus.uml.tools;bundle-version="[4.0.0,5.0.0)"
+Bundle-Activator: org.eclipse.papyrus.pdp4eng.designer.ui.Activator
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/build.properties
new file mode 100644
index 0000000..6b4afb7
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/,\
+ plugin.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/icons/PDP4E-16x16.png b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/icons/PDP4E-16x16.png
new file mode 100644
index 0000000..3885ad5
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/icons/PDP4E-16x16.png
Binary files differ
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/icons/working.png b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/icons/working.png
new file mode 100644
index 0000000..413dfc8
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/icons/working.png
Binary files differ
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/plugin.properties
new file mode 100644
index 0000000..8d39a35
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/plugin.properties
@@ -0,0 +1,15 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design ui
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/plugin.xml
new file mode 100644
index 0000000..e33f8fd
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/plugin.xml
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+ <profile
+ description="Profile for privacy and data protection by design"
+ iconpath="icons/PDP4E-16x16.png"
+ name="Profile pdp4eng Design"
+ path="pathmap://PDP4ENG-DESIGN/pdp4engDesign.profile.uml"
+ provider="CEA LIST">
+ </profile>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu?after=filtersMenu">
+ <menu
+ icon="icons/PDP4E-16x16.png"
+ id="org.eclipse.papyrus.pdp4eng.designer.menu"
+ label="PDP4Eng Designer"
+ tooltip="PDP4Eng Designer">
+ <visibleWhen>
+ <with
+ variable="activeEditorId">
+ <equals
+ value="org.eclipse.papyrus.infra.core.papyrusEditor">
+ </equals>
+ </with>
+ </visibleWhen>
+ </menu>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.views.modelexplorer.modelexplorer.popup">
+ <menu
+ icon="icons/PDP4E-16x16.png"
+ id="org.eclipse.papyrus.pdp4eng.designer.menu"
+ label="PDP4Eng Designer"
+ tooltip="PDP4Eng Designer">
+ </menu>
+ </menuContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.designer.menu">
+ <menu
+ icon="icons/PDP4E-16x16.png"
+ id="org.eclipse.papyrus.pdp4eng.datamodel.menu"
+ label="Data-oriented model"
+ tooltip="PDP4Eng Data Model">
+ </menu>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.designer.menu">
+ <menu
+ icon="icons/PDP4E-16x16.png"
+ id="org.eclipse.papyrus.pdp4eng.processmodel.menu"
+ label="Process-oriented model"
+ tooltip="PDP4Eng Process Model">
+ </menu>
+ </menuContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.datamodel.menu">
+ <command
+ commandId="org.eclipse.papyrus.pdp4eng.designer.ui.TransformDataHandler.command"
+ icon="icons/working.png"
+ label="Generate Composite Data"
+ style="push"
+ tooltip="Generate Composite Data from a Data">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.pdp4eng.designer.ui.TransformDataHandler"
+ id="org.eclipse.papyrus.pdp4eng.designer.ui.TransformDataHandler.command"
+ name="Generate Composite Data">
+ </command>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.eclipse.papyrus.pdp4eng.designer.ui.Activator"></startup>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.processmodel.menu">
+ <command
+ commandId="org.eclipse.papyrus.pdp4eng.designer.ui.ProcessStrategyHandler.command"
+ icon="icons/working.png"
+ label="Strategy4Process"
+ style="push"
+ tooltip="Apply process-oriented strategy">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.pdp4eng.designer.ui.ProcessStrategyHandler"
+ id="org.eclipse.papyrus.pdp4eng.designer.ui.ProcessStrategyHandler.command"
+ name="Process-strategy handler">
+ </command>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.datamodel.menu">
+ <command
+ commandId="org.eclipse.papyrus.pdp4eng.designer.ui.DataStrategyHandler.command"
+ icon="icons/working.png"
+ label="Strategy4Data"
+ style="push"
+ tooltip="Apply data-oriented strategy">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.pdp4eng.designer.ui.DataStrategyHandler"
+ id="org.eclipse.papyrus.pdp4eng.designer.ui.DataStrategyHandler.command"
+ name="Data-strategy handler">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.processmodel.menu">
+ <command
+ commandId="org.eclipse.papyrus.pdp4eng.designer.ui.CreateProcessFromReqHandler.command"
+ icon="icons/working.png"
+ label="Create process model"
+ style="push"
+ tooltip="Create a prcoess DFD from Requirement DFD">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.pdp4eng.designer.ui.CreateProcessFromReqHandler"
+ id="org.eclipse.papyrus.pdp4eng.designer.ui.CreateProcessFromReqHandler.command"
+ name="Process Model creation handler">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.processmodel.menu">
+ <command
+ commandId="org.eclipse.papyrus.pdp4eng.designer.ui.TransformCallProcessToProcessHandler.command"
+ icon="icons/working.png"
+ label="Transform CallProcess to Process"
+ style="push"
+ tooltip="Transform CallProcess to Process">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.pdp4eng.designer.ui.TransformCallProcessToProcessHandler"
+ id="org.eclipse.papyrus.pdp4eng.designer.ui.TransformCallProcessToProcessHandler.command"
+ name="Transform CallProcess to Process">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.processmodel.menu">
+ <command
+ commandId="org.eclipse.papyrus.pdp4eng.designer.ui.TransformActionCallProcessToProcessHandler.command"
+ icon="icons/working.png"
+ label="Transform ActionCallProcess to Process"
+ style="push"
+ tooltip="Transform ActionCallProcess to Process">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.pdp4eng.designer.ui.TransformActionCallProcessToProcessHandler"
+ id="org.eclipse.papyrus.pdp4eng.designer.ui.TransformActionCallProcessToProcessHandler.command"
+ name="Transform ActionCallProcess to Process">
+ </command>
+ </extension>
+
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.processmodel.menu">
+ <command
+ commandId="org.eclipse.papyrus.pdp4eng.designer.ui.TransformAllCallProcessToProcessHandler.command"
+ icon="icons/working.png"
+ label="Transform All CallProcess"
+ style="push"
+ tooltip="Transform All CallProcess">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.pdp4eng.designer.ui.TransformAllCallProcessToProcessHandler"
+ id="org.eclipse.papyrus.pdp4eng.designer.ui.TransformAllCallProcessToProcessHandler.command"
+ name="Transform All CallProcess">
+ </command>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.pdp4eng.processmodel.menu">
+ <command
+ commandId="org.eclipse.papyrus.pdp4eng.designer.ui.ApplyPDPbDProfileToActivityDFDHandler.command"
+ icon="icons/working.png"
+ label="Apply Privacy-by-Design Profile"
+ style="push"
+ tooltip="Apply Privacy-by-Design Profile">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.pdp4eng.designer.ui.ApplyPDPbDProfileToActivityDFDHandler"
+ id="org.eclipse.papyrus.pdp4eng.designer.ui.ApplyPDPbDProfileToActivityDFDHandler.command"
+ name="Apply Privacy-by-Design Profile">
+ </command>
+ </extension>
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/pom.xml
new file mode 100644
index 0000000..f1d5ba4
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.ui</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/Activator.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/Activator.java
new file mode 100644
index 0000000..4c3f149
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/Activator.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+
+
+
+public class Activator extends AbstractUIPlugin implements IStartup{
+ // The plug-in ID
+ public static final String pluginId = "org.eclipse.papyrus.pdp4eng.designer.ui";
+ // The shared instance
+ private static Activator plugin;
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ Activator.plugin = this;
+
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ Activator.plugin = null;
+ super.stop(context);
+
+ }
+
+ @Override
+ public void earlyStartup() {
+ // TODO Auto-generated method stub
+
+ }
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return Activator.plugin;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/ApplyPDPbDProfileToActivityDFDHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/ApplyPDPbDProfileToActivityDFDHandler.java
new file mode 100644
index 0000000..7bc261a
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/ApplyPDPbDProfileToActivityDFDHandler.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+/**
+ * Executes the creation of a new Data based on the Papyrus
+ * preferences page.
+ *
+ */
+public class ApplyPDPbDProfileToActivityDFDHandler extends PapyrusAbstractHandler {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ Element selectedElement = getSelection();
+ ModelTransfoFactory factory= new ModelTransfoFactory();
+ if (selectedElement != null) {
+ transactionalEditingDomain.getCommandStack().execute(factory.getApplyPDPbDProfileToActivityDFDCommand(transactionalEditingDomain,(Activity) selectedElement));
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return true if the handler is possible
+ */
+ @Override
+ public boolean isEnabled() {
+ Element selectedElement = getSelection();
+ if (selectedElement instanceof org.eclipse.uml2.uml.Activity) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/CreateProcessFromReqHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/CreateProcessFromReqHandler.java
new file mode 100644
index 0000000..84b00cc
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/CreateProcessFromReqHandler.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.papyrus.uml.tools.providers.UMLContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.UMLPackage;
+/**
+ * execute the creation of process model form Req DFD
+ *
+ */
+public class CreateProcessFromReqHandler extends PapyrusAbstractHandler {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ Element selectedElement = getSelection();
+ ModelTransfoFactory factory= new ModelTransfoFactory();
+ if (selectedElement != null) {
+ TreeSelectorDialog dialog = new TreeSelectorDialog(Display.getDefault().getActiveShell());
+ dialog.setContentProvider(new UMLContentProvider(selectedElement.getNearestPackage(), UMLPackage.eINSTANCE.getPackage_PackagedElement()));
+ dialog.setLabelProvider(new UMLLabelProvider());
+ dialog.setMessage("Choose Requirement DFD" );
+ dialog.setTitle("Choose DFD "+((NamedElement)selectedElement).getName());
+ dialog.create();
+ dialog.setDescription("Choose Satisfy Link for "+((NamedElement)selectedElement).getQualifiedName());
+ if(dialog.open() == org.eclipse.jface.window.Window.OK) {
+ Object[] result = dialog.getResult();
+ if (result.length>0) {
+ Activity ReqDFDSource=(Activity)result[0];
+ transactionalEditingDomain.getCommandStack().execute(factory.getCreateProcessModelFromReq(transactionalEditingDomain, (Package) selectedElement, ReqDFDSource));
+ }
+ }
+ }
+ return null;
+
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return true if the handler is possible
+ */
+ @Override
+ public boolean isEnabled() {
+ Element selectedElement = getSelection();
+ if (selectedElement instanceof org.eclipse.uml2.uml.Package) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/DataStrategyHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/DataStrategyHandler.java
new file mode 100644
index 0000000..75ca87d
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/DataStrategyHandler.java
@@ -0,0 +1,83 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.StrategyEngineFactory;
+import org.eclipse.papyrus.pdp4eng.designer.ui.internal.StrategyDialog;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.uml2.uml.Element;
+
+
+
+public class DataStrategyHandler extends PapyrusAbstractHandler {
+
+ protected org.eclipse.uml2.uml.Element selectedElement=null;
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ selectedElement=getSelection();
+ if(selectedElement!=null){
+ callEngine(transactionalEditingDomain,selectedElement);
+ }
+
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return
+ */
+ @Override
+ public boolean isEnabled() {
+ return super.isEnabled();
+ }
+
+ public void callEngine(TransactionalEditingDomain transactionalEditingDomain,Element element){
+ StrategyEngineFactory strategyEngineFactory = StrategyEngineFactory.getInstance();
+ if( strategyEngineFactory.getCurrentEngine().isReadyToRun()) {
+ strategyEngineFactory.getCurrentEngine().clearExecutableStrategy();
+ IStrategyCatalog dataStrategyCatalog = strategyEngineFactory.getCurrentEngine().getCatalog("Data-oriented Strategies");
+ StrategyDialog dialog= new StrategyDialog(element,
+ strategyEngineFactory.getCurrentEngine(),
+ dataStrategyCatalog);
+ dialog.open();
+ if(dialog.canExecute()){
+ if (strategyEngineFactory.getCurrentEngine().getStrategyToExecute() !=null) {
+ IStrategy selectedStrategy=strategyEngineFactory.getCurrentEngine().getStrategyToExecute();
+ transactionalEditingDomain.getCommandStack().execute(selectedStrategy.getCommand(element,transactionalEditingDomain));
+ } else {
+ System.out.printf("Data-oriented strategy not selected!\n");
+ }
+ } else {
+ System.out.printf("Can not execute data-oriented choice!\n");
+ }
+ }
+ else {
+ System.err.println("Engine not ready!");
+ }
+
+ }
+
+}
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/InstantiateGDPRConsentPatternHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/InstantiateGDPRConsentPatternHandler.java
new file mode 100644
index 0000000..18e9562
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/InstantiateGDPRConsentPatternHandler.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+/**
+ * Executes the creation of a new GDPR Consent Pattern on the Process (Activity) model
+ *
+ */
+public class InstantiateGDPRConsentPatternHandler extends PapyrusAbstractHandler {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ Element selectedElement = getSelection();
+ ModelTransfoFactory factory= new ModelTransfoFactory();
+ if (selectedElement != null) {
+ transactionalEditingDomain.getCommandStack().execute(factory.getInstantiateGDPRConsentPatternCommand(transactionalEditingDomain, (Activity) selectedElement));
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return true if the handler is possible
+ */
+ @Override
+ public boolean isEnabled() {
+ Element selectedElement = getSelection();
+ if (selectedElement instanceof org.eclipse.uml2.uml.Activity) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
+
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/ProcessStrategyHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/ProcessStrategyHandler.java
new file mode 100644
index 0000000..e26fa17
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/ProcessStrategyHandler.java
@@ -0,0 +1,83 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.StrategyEngineFactory;
+import org.eclipse.papyrus.pdp4eng.designer.ui.internal.StrategyDialog;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * this class launch the command to remove propagation
+ * Req004.004: the system shall provide menus to execute Strategy
+ */
+
+public class ProcessStrategyHandler extends PapyrusAbstractHandler {
+
+ protected org.eclipse.uml2.uml.Element selectedElement=null;
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ selectedElement=getSelection();
+ if(selectedElement!=null){
+ callEngine(transactionalEditingDomain,selectedElement);
+ }
+
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return
+ */
+ @Override
+ public boolean isEnabled() {
+ return super.isEnabled();
+ }
+
+ public void callEngine(TransactionalEditingDomain transactionalEditingDomain,Element element){
+ StrategyEngineFactory strategyEngineFactory = StrategyEngineFactory.getInstance();
+ if( strategyEngineFactory.getCurrentEngine().isReadyToRun()) {
+ strategyEngineFactory.getCurrentEngine().clearExecutableStrategy();
+ IStrategyCatalog processStrategyCatalog = strategyEngineFactory.getCurrentEngine().getCatalog("Process-oriented Strategies");
+ StrategyDialog dialog= new StrategyDialog(element,
+ strategyEngineFactory.getCurrentEngine(),
+ processStrategyCatalog);
+ dialog.open();
+ if(dialog.canExecute()){
+ IStrategy selectedStrategy=strategyEngineFactory.getCurrentEngine().getStrategyToExecute();
+ transactionalEditingDomain.getCommandStack().execute(selectedStrategy.getCommand(element,transactionalEditingDomain));
+ } else {
+ System.out.printf("Can not execute process-oriented choice!\n");
+ }
+ }
+ else {
+ System.err.println("Engine not ready!");
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformActionCallProcessToProcessHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformActionCallProcessToProcessHandler.java
new file mode 100644
index 0000000..ba13951
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformActionCallProcessToProcessHandler.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Element;
+/**
+ * Executes the creation of a new Data based on the Papyrus
+ * preferences page.
+ *
+ */
+public class TransformActionCallProcessToProcessHandler extends PapyrusAbstractHandler {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ Element selectedElement = getSelection();
+ ModelTransfoFactory factory= new ModelTransfoFactory();
+ if (selectedElement != null) {
+ transactionalEditingDomain.getCommandStack().execute(factory.getActionCallProcessToProcessCommand(transactionalEditingDomain,(Action) selectedElement));
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return true if the handler is possible
+ */
+ @Override
+ public boolean isEnabled() {
+ Element selectedElement = getSelection();
+ if (selectedElement instanceof org.eclipse.uml2.uml.Action) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformAllCallProcessToProcessHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformAllCallProcessToProcessHandler.java
new file mode 100644
index 0000000..b0c0d56
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformAllCallProcessToProcessHandler.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Element;
+/**
+ * Executes the creation of a new Data based on the Papyrus
+ * preferences page.
+ *
+ */
+public class TransformAllCallProcessToProcessHandler extends PapyrusAbstractHandler {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ Element selectedElement = getSelection();
+ ModelTransfoFactory factory= new ModelTransfoFactory();
+ if (selectedElement != null) {
+ transactionalEditingDomain.getCommandStack().execute(factory.getAllCallProcessToProcessCommand(transactionalEditingDomain,(Activity) selectedElement));
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return true if the handler is possible
+ */
+ @Override
+ public boolean isEnabled() {
+ Element selectedElement = getSelection();
+ if (selectedElement instanceof org.eclipse.uml2.uml.Activity) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformCallProcessToProcessHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformCallProcessToProcessHandler.java
new file mode 100644
index 0000000..87067d7
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformCallProcessToProcessHandler.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.OpaqueAction;
+/**
+ * Executes the creation of a new Data based on the Papyrus
+ * preferences page.
+ *
+ */
+public class TransformCallProcessToProcessHandler extends PapyrusAbstractHandler {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ Element selectedElement = getSelection();
+ ModelTransfoFactory factory= new ModelTransfoFactory();
+ if (selectedElement != null) {
+ transactionalEditingDomain.getCommandStack().execute(factory.getCallProcessToProcessCommand(transactionalEditingDomain,(OpaqueAction) selectedElement));
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return true if the handler is possible
+ */
+ @Override
+ public boolean isEnabled() {
+ Element selectedElement = getSelection();
+ if (selectedElement instanceof org.eclipse.uml2.uml.OpaqueAction) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformDataHandler.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformDataHandler.java
new file mode 100644
index 0000000..e2f6957
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/TransformDataHandler.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.pdp4eng.designer.controller.api.ModelTransfoFactory;
+import org.eclipse.papyrus.requirements.sysml14.common.PapyrusAbstractHandler;
+import org.eclipse.uml2.uml.Element;
+/**
+ * Executes the creation of a new Data based on the Papyrus
+ * preferences page.
+ *
+ */
+public class TransformDataHandler extends PapyrusAbstractHandler {
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ Element selectedElement = getSelection();
+ ModelTransfoFactory factory= new ModelTransfoFactory();
+ if (selectedElement != null) {
+ transactionalEditingDomain.getCommandStack().execute(factory.getAbstractionDataCommand(transactionalEditingDomain, selectedElement));
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#isEnabled()
+ *
+ * @return true if the handler is possible
+ */
+ @Override
+ public boolean isEnabled() {
+ Element selectedElement = getSelection();
+ if (selectedElement instanceof org.eclipse.uml2.uml.Class) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyContentProvider.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyContentProvider.java
new file mode 100644
index 0000000..4bfdd97
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyContentProvider.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui.internal;
+
+import java.util.List;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+
+
+/**
+ * Req004.005: The system shall show all possible strategy of the collection
+ */
+
+public class StrategyContentProvider implements IStructuredContentProvider {
+
+
+
+ /**
+ * @{inheritDoc
+ */
+ public Object[] getElements(Object inputElement) {
+ if(inputElement instanceof List){
+ return ((List<?>)inputElement).toArray();
+ }
+
+ return null;
+ }
+
+ /**
+ * @{inheritDoc
+ */
+ public void dispose() {
+
+ }
+
+ /**
+ * @{inheritDoc
+ */
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+
+}
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyDialog.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyDialog.java
new file mode 100644
index 0000000..04626f0
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyDialog.java
@@ -0,0 +1,210 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui.internal;
+
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyCatalog;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategyEngine;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableItem;
+
+/**
+ * Req004.002: the system shall provide for Model User to show name and goal of strategy
+ * Req004.003: the system shall provide for Model User to execute the selected strategy
+ * Req004.004: the system shall provide menus to execute Strategy
+ * @author PT202707
+ *
+ */
+public class StrategyDialog {
+ protected Object result=null;
+
+
+ protected Display display;
+ protected Shell shell;
+ protected Button okbt;
+ protected Button cancelbt;
+
+
+ protected IStrategyEngine engine=null;
+
+ protected boolean canExecute=false;
+ protected ArrayList<Table> tableList= new ArrayList<Table>();
+ protected org.eclipse.uml2.uml.Package targetpackage=null;
+ protected org.eclipse.uml2.uml.Element context=null;
+
+ public StrategyDialog(org.eclipse.uml2.uml.Element context, IStrategyEngine engine, IStrategyCatalog strategyCatalog) {
+
+ this.engine=engine;
+ this.context=context;
+
+
+ display = Display.getDefault();
+ shell = new Shell(display);
+
+ shell.setSize(250, 200);
+ shell.setText("Data-oriented Strategies Dialog");
+ GridLayout gl = new GridLayout();
+ gl.numColumns = 2;
+ shell.setLayout(gl);
+
+ final Table table = new Table(shell, SWT.BORDER | SWT.CHECK | SWT.MULTI
+ | SWT.FULL_SELECTION);
+
+ TableViewer viewer= new TableViewer(table);
+
+
+ viewer.getTable().addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ if ((event.detail == SWT.CHECK) && (event.item instanceof TableItem)) {
+ TableItem selectedTableItem=(TableItem)event.item;
+ TableItem[] itemSet=table.getItems();
+ for (int i=0; i<itemSet.length;i++){
+ if(itemSet[i]==selectedTableItem){
+ System.err.println(" checked "+itemSet[i].getData());
+ itemSet[i].setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_DARK_GREEN));
+ itemSet[i].setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
+ engine.setStrategyToExecute((IStrategy)itemSet[i].getData());
+ }
+ else {
+ System.err.println("not checked "+itemSet[i].getData());
+ itemSet[i].setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));
+ itemSet[i].setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
+ itemSet[i].setChecked(false);
+ }
+
+ }
+ }
+ }
+ }
+
+ );
+
+ //TableViewer
+ createColumn(viewer);
+ viewer.setContentProvider(new StrategyContentProvider());
+ StrategyLabelProvider L=new StrategyLabelProvider();
+ viewer.setLabelProvider(L);
+
+ viewer.setInput(strategyCatalog.getPossibleStrategies());
+ final GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = 2;
+ table.setLayoutData(gd);
+ table.setHeaderVisible(true);
+
+
+ okbt = new Button(shell, SWT.NONE);
+ //okbt.setBounds(294, 7, 59, 23);
+ okbt.setText("Execute");
+
+ cancelbt = new Button(shell, SWT.NONE);
+ //cancelbt.setBounds(213, 7, 59, 23);
+ cancelbt.setText("Cancel");
+
+ //packagebutton= new Button(shell, SWT.NONE);
+ // packagebutton.setBounds(0, 7, 150, 23);
+ //packagebutton.setText("Choose package");
+ addButtonListener();
+
+ shell.pack();
+
+
+ }
+
+
+ private void createColumn(TableViewer viewer) {
+ // name column
+ TableViewerColumn nameColumn = new TableViewerColumn(viewer, SWT.RESIZE);
+ nameColumn.getColumn().setText("Strategy Name");
+ nameColumn.getColumn().setWidth(200);
+ nameColumn.getColumn().setResizable(true);
+ nameColumn.getColumn().setMoveable(false);
+
+
+ TableViewerColumn descColumn = new TableViewerColumn(viewer, SWT.RESIZE);
+ descColumn.getColumn().setText("Strategy Description");
+ descColumn.getColumn().setWidth(500);
+ descColumn.getColumn().setResizable(true);
+ descColumn.getColumn().setMoveable(false);
+
+ // TableViewerColumn pluginColumn = new TableViewerColumn(viewer, SWT.RESIZE);
+ // pluginColumn.getColumn().setText("Plugin source");
+ // pluginColumn.getColumn().setWidth(200);
+ // pluginColumn.getColumn().setResizable(true);
+ // pluginColumn.getColumn().setMoveable(false);
+ }
+
+ public void addButtonListener(){
+ //Execute button selection
+ okbt.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ canExecute=true;
+ shell.close();
+ }
+ });
+
+ //Cancel button selection
+ cancelbt.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent event) {
+ canExecute=false;
+ shell.close();
+ }
+ });
+
+ }
+
+
+ /**
+ * Open the dialog.
+ * @return the result
+ */
+ public Object open() {
+ shell.open();
+ while(!shell.isDisposed()) {
+ if(!display.readAndDispatch()) {
+ display.sleep();
+ }
+ }
+ return result;
+ }
+
+ public boolean canExecute() {
+ return canExecute;
+ }
+ /**
+ public static void main(String[] argv) {
+ StrategyEngineFactory engineFactory= StrategyEngineFactory.getInstance();
+ CatalogFactory catalogFactory= new CatalogFactory();
+ engineFactory.getCurrentEngine().connectACatalog(catalogFactory.createCatalog("toto"));
+ StrategyDialog propagationToolShell= new StrategyDialog(null,engineFactory.getCurrentEngine(), engineFactory.getCurrentEngine().getCatalog(0));
+ propagationToolShell.open();
+ }**/
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyLabelProvider.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyLabelProvider.java
new file mode 100644
index 0000000..435860f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.ui/src/org/eclipse/papyrus/pdp4eng/designer/ui/internal/StrategyLabelProvider.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.ui.internal;
+
+
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.papyrus.pdp4eng.designer.engine.api.IStrategy;
+import org.eclipse.swt.graphics.Image;
+
+
+/**
+* Req004.002: the system shall provide for Model User to show name and goal of strategy
+*
+*/
+
+
+public class StrategyLabelProvider implements ITableLabelProvider {
+
+
+ /**
+ * @{inheritDoc
+ */
+ public String getColumnText(Object element, int columnIndex) {
+
+ switch(columnIndex) {
+ case 0:
+
+ return ((IStrategy)element).getName();
+
+
+ case 1:
+ return ((IStrategy)element).getGoal();
+
+ default:
+ return "";
+
+ }
+
+
+ }
+
+ /**
+ * @{inheritDoc
+ */
+ public void addListener(ILabelProviderListener listener) {
+
+ }
+
+ /**
+ * @{inheritDoc
+ */
+ public void dispose() {
+
+ }
+
+ /**
+ * @{inheritDoc
+ */
+ public boolean isLabelProperty(Object element, String property) {
+ return false;
+ }
+
+ /**
+ * @{inheritDoc
+ */
+ public void removeListener(ILabelProviderListener listener) {
+
+ }
+
+
+ public String getText(Object element) {
+ return ((IStrategy)element).getName();
+ }
+
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.classpath b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.classpath
new file mode 100644
index 0000000..16d067f
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.project b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.project
new file mode 100644
index 0000000..9935c13
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.pdp4eng.designer.utils</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.settings/org.eclipse.jdt.core.prefs b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/META-INF/MANIFEST.MF b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1c26ecd
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.pdp4eng.designer.utils;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.pdp4eng.designer.utils.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.18.0,4.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Automatic-Module-Name: org.eclipse.papyrus.pdp4eng.designer.utils
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.pdp4eng.designer.utils
+Bundle-Localization: plugin
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/about.html b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/about.html
new file mode 100644
index 0000000..3e183aa
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 ("EPL"). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, "Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/build.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/build.properties
new file mode 100644
index 0000000..0dc34f7
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/plugin.properties b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/plugin.properties
new file mode 100644
index 0000000..08383ba
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/plugin.properties
@@ -0,0 +1,16 @@
+#################################################################################
+# Copyright (c) 2020 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Patrick Tessier - initial API and implementation
+# Gabriel Pedroza - initial API and implementation
+##################################################################################
+
+pluginName = pdp4eng Design profile
+providerName = Eclipse Modeling Project
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/plugin.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/plugin.xml
new file mode 100644
index 0000000..5535690
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/plugin.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+</plugin>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/pom.xml b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/pom.xml
new file mode 100644
index 0000000..a0303e2
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/pom.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.designer.utils</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/Activator.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/Activator.java
new file mode 100644
index 0000000..d3624ad
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/Activator.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.utils;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ private static BundleContext context;
+
+ static BundleContext getContext() {
+ return context;
+ }
+
+ public void start(BundleContext bundleContext) throws Exception {
+ Activator.context = bundleContext;
+ }
+
+ public void stop(BundleContext bundleContext) throws Exception {
+ Activator.context = null;
+ }
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/ModelPackageNames.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/ModelPackageNames.java
new file mode 100644
index 0000000..ef59062
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/ModelPackageNames.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.utils;
+
+public class ModelPackageNames {
+
+ public static String DFD_L0_PackageName = "DFD_L0";
+
+ public static String DFD_L1_PackageName = "DFD_L1";
+
+ public static String DFD_L2_PackageName = "DFD_L2";
+
+ public static String DFD_L3_PackageName = "DFD_L3";
+
+ public static String DFD_L4_PackageName = "DFD_L4";
+
+ public static String Stakeholder_PackageName = "Stakeholders";
+
+ public static String Data_PackageName = "Data";
+
+}
diff --git a/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/ModelProfileNames.java b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/ModelProfileNames.java
new file mode 100644
index 0000000..2e7be81
--- /dev/null
+++ b/plugins/design/org.eclipse.papyrus.pdp4eng.designer.utils/src/org/eclipse/papyrus/pdp4eng/designer/utils/ModelProfileNames.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c)2020 CEA LIST, Committer Name, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Gabriel Pedroza (CEA LIST) gabriel.pedroza@cea.fr
+ *
+ */
+package org.eclipse.papyrus.pdp4eng.designer.utils;
+
+public class ModelProfileNames {
+
+ public static String PDPbDProfileName = "pdp4engDesign";
+
+ public static String commonGDPRProfileName = "pdp4engCommonGDPR";
+
+ public static String PDPbD_Process = "Process";
+
+ public static String PDPbD_CallProcess = "CallProcess";
+
+ public static String PDPbD_DataStore = "DataStore";
+
+ public static String PDPbD_ExternalEntity = "ExternalEntity";
+
+ public static String PDPbD_Entity = "Entity";
+
+ public static String PDPbD_DataInput = "DataInput";
+
+ public static String PDPbD_DataOutput = "DataOutput";
+
+ public static String commonGDPR_Purpose = "Purpose";
+
+ public static String commonGDPR_Controller = "Controller";
+
+ public static String commonGDPR_Processor = "Processor";
+
+ public static String commonGDPR_DataSubject = "DataSubject";
+
+ public static String commonGDPR_Process = "Process";
+
+ public static String commonGDPR_PersonalData = "PersonalData";
+
+ public static String commonGDPR_Consent = "Consent";
+}
diff --git a/plugins/design/pom.xml b/plugins/design/pom.xml
new file mode 100644
index 0000000..b4166a7
--- /dev/null
+++ b/plugins/design/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.eclipse.papyrus.pdp4eng</groupId>
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.artifact</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>org.eclipse.papyrus.pdp4eng.plugins.design.artifact</artifactId>
+ <packaging>pom</packaging>
+
+
+ <name>pdp4eng design directory</name>
+ <description>pdp4eng design directory</description>
+
+ <modules>
+ <module>org.eclipse.papyrus.pdp4eng.designer.profile</module>
+ <module>org.eclipse.papyrus.pdp4eng.designer.ui</module>
+ <module>org.eclipse.papyrus.pdp4eng.designer.engine</module>
+ <module>org.eclipse.papyrus.pdp4eng.designer.utils</module>
+ <module>org.eclipse.papyrus.pdp4eng.designer.controller</module>
+ <module>org.eclipse.papyrus.pdp4eng.designer.datastrategies</module>
+ <module>org.eclipse.papyrus.pdp4eng.designer.processstrategies</module>
+ <module>org.eclipse.papyrus.pdp4eng.designer.libraries-patterns</module>
+
+ </modules>
+
+</project>
diff --git a/plugins/pom.xml b/plugins/pom.xml
index bdff513..7567027 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -19,7 +19,7 @@
<modules>
<module>common</module>
<module>req</module>
- <!--module>design</module-->
+ <module>design</module>
</modules>
</project>
diff --git a/plugins/req/org.eclipse.papyrus.pdp4eng.req.metareq/xtend-gen/org/eclipse/papyrus/pdp4eng/req/metareq/.gitignore b/plugins/req/org.eclipse.papyrus.pdp4eng.req.metareq/xtend-gen/org/eclipse/papyrus/pdp4eng/req/metareq/.gitignore
new file mode 100644
index 0000000..526a83d
--- /dev/null
+++ b/plugins/req/org.eclipse.papyrus.pdp4eng.req.metareq/xtend-gen/org/eclipse/papyrus/pdp4eng/req/metareq/.gitignore
@@ -0,0 +1 @@
+/GDPRRequirements.java
diff --git a/plugins/req/org.eclipse.papyrus.pdp4eng.req.metareq/xtend-gen/org/eclipse/papyrus/pdp4eng/req/metareq/GDPRRequirements.java b/plugins/req/org.eclipse.papyrus.pdp4eng.req.metareq/xtend-gen/org/eclipse/papyrus/pdp4eng/req/metareq/GDPRRequirements.java
index 407d548..f4ec838 100644
--- a/plugins/req/org.eclipse.papyrus.pdp4eng.req.metareq/xtend-gen/org/eclipse/papyrus/pdp4eng/req/metareq/GDPRRequirements.java
+++ b/plugins/req/org.eclipse.papyrus.pdp4eng.req.metareq/xtend-gen/org/eclipse/papyrus/pdp4eng/req/metareq/GDPRRequirements.java
@@ -36,39 +36,13 @@
*/
public CharSequence getDescriptionForLawfulRequirement(final Lawful lawful) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("IF process \"");
- String _name = lawful.getProcess().getBase_NamedElement().getName();
- _builder.append(_name);
- _builder.append("\" processes \"");
- String _personalDataFromProcess = this.getPersonalDataFromProcess(lawful);
- _builder.append(_personalDataFromProcess);
- _builder.append("\" of \"");
- String _name_1 = lawful.getDataSubject().getBase_NamedElement().getName();
- _builder.append(_name_1);
- _builder.append("\" THEN the Process \"");
- String _name_2 = lawful.getProcess().getBase_NamedElement().getName();
- _builder.append(_name_2);
- _builder.append("\" shall be lawfull.");
+ _builder.append("IF process \"�lawful.process.base_NamedElement.name�\" processes \"�getPersonalDataFromProcess(lawful)�\" of \"�lawful.dataSubject.base_NamedElement.name�\" THEN the Process \"�lawful.process.base_NamedElement.name�\" shall be lawfull.");
return _builder;
}
public CharSequence getDescriptionForLawfulByConsent(final LawfulByConsent lawfulByConsent) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("Processing \"");
- String _name = lawfulByConsent.getProcess().getBase_NamedElement().getName();
- _builder.append(_name);
- _builder.append("\" shall be lawful if the data subject \"");
- String _name_1 = lawfulByConsent.getDataSubject().getBase_NamedElement().getName();
- _builder.append(_name_1);
- _builder.append("\" has given consent \"");
- String _name_2 = lawfulByConsent.getConsent().getBase_NamedElement().getName();
- _builder.append(_name_2);
- _builder.append("\" to the processing of his or her personal data \"");
- String _personalDataFromProcess = this.getPersonalDataFromProcess(lawfulByConsent);
- _builder.append(_personalDataFromProcess);
- _builder.append("\" for one or more specific purposes ");
- String _name_3 = lawfulByConsent.getProcess().getContributedTo().getBase_NamedElement().getName();
- _builder.append(_name_3);
+ _builder.append("Processing \"�lawfulByConsent.process.base_NamedElement.name�\" shall be lawful if the data subject \"�lawfulByConsent.dataSubject.base_NamedElement.name�\" has given consent \"�lawfulByConsent.consent.base_NamedElement.name�\" to the processing of his or her personal data \"�getPersonalDataFromProcess(lawfulByConsent)�\" for one or more specific purposes �lawfulByConsent.process.contributedTo.base_NamedElement.name�");
return _builder;
}
@@ -77,19 +51,7 @@
*/
public CharSequence getDescriptionForFairlyRequirement(final Fairly fairly) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("IF process \"");
- String _name = fairly.getProcess().getBase_NamedElement().getName();
- _builder.append(_name);
- _builder.append("\" processes \"");
- String _personalDataFromProcess = this.getPersonalDataFromProcess(fairly);
- _builder.append(_personalDataFromProcess);
- _builder.append("\" of \"");
- String _name_1 = fairly.getDataSubject().getBase_NamedElement().getName();
- _builder.append(_name_1);
- _builder.append("\" THEN the Process \"");
- String _name_2 = fairly.getProcess().getBase_NamedElement().getName();
- _builder.append(_name_2);
- _builder.append("\" shall be fairly.");
+ _builder.append("IF process \"�fairly.process.base_NamedElement.name�\" processes \"�getPersonalDataFromProcess(fairly)�\" of \"�fairly.dataSubject.base_NamedElement.name�\" THEN the Process \"�fairly.process.base_NamedElement.name�\" shall be fairly.");
return _builder;
}
@@ -98,19 +60,7 @@
*/
public CharSequence getDescriptionForTransparentRequirement(final Transparency transparency) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("IF process \"");
- String _name = transparency.getProcess().getBase_NamedElement().getName();
- _builder.append(_name);
- _builder.append("\" processes \"");
- String _personalDataFromProcess = this.getPersonalDataFromProcess(transparency);
- _builder.append(_personalDataFromProcess);
- _builder.append("\" of \"");
- String _name_1 = transparency.getDataSubject().getBase_NamedElement().getName();
- _builder.append(_name_1);
- _builder.append("\" THEN the Process \"");
- String _name_2 = transparency.getProcess().getBase_NamedElement().getName();
- _builder.append(_name_2);
- _builder.append("\" shall be transparent.");
+ _builder.append("IF process \"�transparency.process.base_NamedElement.name�\" processes \"�getPersonalDataFromProcess(transparency)�\" of \"�transparency.dataSubject.base_NamedElement.name�\" THEN the Process \"�transparency.process.base_NamedElement.name�\" shall be transparent.");
return _builder;
}
@@ -119,13 +69,7 @@
*/
public CharSequence getDescriptionForPurposeLimitation(final PurposeLimitation purposeLimitation) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("The purpose \"");
- String _name = purposeLimitation.getPurpose().getBase_NamedElement().getName();
- _builder.append(_name);
- _builder.append("\" of the PersonalData \"");
- String _name_1 = purposeLimitation.getPersonalData().getBase_NamedElement().getName();
- _builder.append(_name_1);
- _builder.append("\" shall be specified, explicit, legimate, and compatible.");
+ _builder.append("The purpose \"�purposeLimitation.purpose.base_NamedElement.name�\" of the PersonalData \"�purposeLimitation.personalData.base_NamedElement.name�\" shall be specified, explicit, legimate, and compatible.");
return _builder;
}
@@ -134,13 +78,7 @@
*/
public CharSequence getDescriptionForDataMinimisation(final DataMinimisation dataMinimisation) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("Personal Data \"");
- String _name = dataMinimisation.getPersonalData().getBase_NamedElement().getName();
- _builder.append(_name);
- _builder.append("\" shall be adequate, relevant and limited to what is necessary in relation to the purpose \"");
- String _name_1 = dataMinimisation.getPurpose().getBase_NamedElement().getName();
- _builder.append(_name_1);
- _builder.append("\" for which they are processed");
+ _builder.append("Personal Data \"�dataMinimisation.personalData.base_NamedElement.name�\" shall be adequate, relevant and limited to what is necessary in relation to the purpose \"�dataMinimisation.purpose.base_NamedElement.name�\" for which they are processed");
return _builder;
}
@@ -149,16 +87,7 @@
*/
public CharSequence getDescriptionForAccurate(final Accuracy accuracy) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("Personal Data \"");
- String _name = accuracy.getPersonalData().getBase_NamedElement().getName();
- _builder.append(_name);
- _builder.append("\" shall be accurate and, where necessary, kept up to date. If personal data \"");
- String _name_1 = accuracy.getPersonalData().getBase_NamedElement().getName();
- _builder.append(_name_1);
- _builder.append("\" are inaccurate, having regard to the purposes \"");
- String _name_2 = accuracy.getPurpose().getBase_NamedElement().getName();
- _builder.append(_name_2);
- _builder.append("\" for which they are processed, it shall erased or rectified without delay.");
+ _builder.append("Personal Data \"�accuracy.personalData.base_NamedElement.name�\" shall be accurate and, where necessary, kept up to date. If personal data \"�accuracy.personalData.base_NamedElement.name�\" are inaccurate, having regard to the purposes \"�accuracy.purpose.base_NamedElement.name�\" for which they are processed, it shall erased or rectified without delay.");
return _builder;
}
@@ -167,16 +96,7 @@
*/
public CharSequence getDescriptionForStorageLimitation(final StorageLimitation storageLimitation) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("Personal Data \"");
- String _name = storageLimitation.getPersonalData().getBase_NamedElement().getName();
- _builder.append(_name);
- _builder.append("\" shall be kept in a form which permits identification of data subject \"");
- String _name_1 = storageLimitation.getPersonalData().getRelatedTo().get(0).getBase_NamedElement().getName();
- _builder.append(_name_1);
- _builder.append("\" for no longer than is necessary for the purpose \"");
- String _name_2 = storageLimitation.getPurpose().getBase_NamedElement().getName();
- _builder.append(_name_2);
- _builder.append("\" for which the personal data are processed");
+ _builder.append("Personal Data \"�storageLimitation.personalData.base_NamedElement.name�\" shall be kept in a form which permits identification of data subject \"�storageLimitation.personalData.relatedTo.get(0).base_NamedElement.name�\" for no longer than is necessary for the purpose \"�storageLimitation.purpose.base_NamedElement.name�\" for which the personal data are processed");
return _builder;
}
@@ -185,10 +105,7 @@
*/
public CharSequence getDescriptionForSecuritySafety(final SecuritySafety securitySafety) {
StringConcatenation _builder = new StringConcatenation();
- _builder.append("Personal Data ");
- String _personalDataFromProcess = this.getPersonalDataFromProcess(securitySafety);
- _builder.append(_personalDataFromProcess);
- _builder.append(" shall be processed in a manner that ensures appropriate security. ");
+ _builder.append("Personal Data �getPersonalDataFromProcess(securitySafety)� shall be processed in a manner that ensures appropriate security. ");
return _builder;
}
diff --git a/releng/.project b/releng/.project
new file mode 100644
index 0000000..43a73bf
--- /dev/null
+++ b/releng/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>releng</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ </natures>
+</projectDescription>
diff --git a/releng/org.eclipse.papyrus.pdp4eng.p2/category.xml b/releng/org.eclipse.papyrus.pdp4eng.p2/category.xml
index 144cf86..4e71d8a 100644
--- a/releng/org.eclipse.papyrus.pdp4eng.p2/category.xml
+++ b/releng/org.eclipse.papyrus.pdp4eng.p2/category.xml
@@ -7,9 +7,9 @@
<feature id="org.eclipse.papyrus.pdp4eng.req.feature">
<category name="org.eclipse.papyrus.pdp4eng.requirements.category"/>
</feature>
- <!--feature id="org.eclipse.papyrus.pdp4eng.designer.feature">
+ <feature id="org.eclipse.papyrus.pdp4eng.designer.feature">
<category name="org.eclipse.papyrus.pdp4eng.designer.category"/>
- </feature-->
+ </feature>
<category-def name="org.eclipse.papyrus.pdp4eng.category" label="papyrus-privacydesigner">
<description>
papyrus-privacydesigner
@@ -18,13 +18,13 @@
<category-def name="org.eclipse.papyrus.pdp4eng.requirements.category" label="Privacy Requirements">
<category name="org.eclipse.papyrus.pdp4eng.category"/>
<description>
- Privacy and Data Drotection for requirements
+ Requirements for Privacy and Data Drotection
</description>
</category-def>
- <!--category-def name="org.eclipse.papyrus.pdp4eng.designer.category" label="Privacy Design">
+ <category-def name="org.eclipse.papyrus.pdp4eng.designer.category" label="Privacy Designer">
<category name="org.eclipse.papyrus.pdp4eng.category"/>
<description>
- Privacy and Data Protection for Design
+ Privacy and Data Protection by Design
</description>
- </category-def-->
+ </category-def>
</site>