Work on *.core.profile.esfsafetyconcepts plug-in.
- Add new methods in ESFSafetyConceptsUtil class
Change-Id: Ia0467d56ccf10790b75abf53e313bbd31568a0d7
diff --git a/core/profile/org.polarsys.esf.core.profile.esfsafetyconcepts/META-INF/MANIFEST.MF b/core/profile/org.polarsys.esf.core.profile.esfsafetyconcepts/META-INF/MANIFEST.MF
index 8eed312..840048d 100644
--- a/core/profile/org.polarsys.esf.core.profile.esfsafetyconcepts/META-INF/MANIFEST.MF
+++ b/core/profile/org.polarsys.esf.core.profile.esfsafetyconcepts/META-INF/MANIFEST.MF
@@ -15,7 +15,9 @@
org.polarsys.esf.core.profile.esfcore;visibility:=reexport,
org.polarsys.esf.core.profile.esfproperties;visibility:=reexport,
org.eclipse.uml2.types;visibility:=reexport,
- org.eclipse.emf.ecore.xmi;bundle-version="2.11.1";visibility:=reexport
+ org.eclipse.emf.ecore.xmi;bundle-version="2.11.1";visibility:=reexport,
+ org.eclipse.emf.transaction,
+ org.polarsys.esf.core.utils
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Export-Package: org.polarsys.esf.core.profile.esfsafetyconcepts.set,
org.polarsys.esf.core.profile.esfsafetyconcepts.util,
diff --git a/core/profile/org.polarsys.esf.core.profile.esfsafetyconcepts/src/main/java/org/polarsys/esf/core/profile/esfsafetyconcepts/util/ESFSafetyConceptsUtil.java b/core/profile/org.polarsys.esf.core.profile.esfsafetyconcepts/src/main/java/org/polarsys/esf/core/profile/esfsafetyconcepts/util/ESFSafetyConceptsUtil.java
index e0ad539..a61887e 100644
--- a/core/profile/org.polarsys.esf.core.profile.esfsafetyconcepts/src/main/java/org/polarsys/esf/core/profile/esfsafetyconcepts/util/ESFSafetyConceptsUtil.java
+++ b/core/profile/org.polarsys.esf.core.profile.esfsafetyconcepts/src/main/java/org/polarsys/esf/core/profile/esfsafetyconcepts/util/ESFSafetyConceptsUtil.java
@@ -14,10 +14,14 @@
import java.util.List;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.uml2.uml.Model;
import org.eclipse.uml2.uml.Package;
import org.eclipse.uml2.uml.util.UMLUtil;
+import org.polarsys.esf.core.utils.ModelUtil;
import org.polarsys.esf.esfsafetyconcepts.ISSafetyArtifacts;
+import org.polarsys.esf.esfsafetyconcepts.impl.ESFSafetyConceptsPackage;
/**
* The utility class for dealing with SafetyArtifacts package.
@@ -26,6 +30,11 @@
* @version $Revision: 168 $
*/
public final class ESFSafetyConceptsUtil {
+ /** SSafetyArtifacts package name. */
+ public static final String SSAFETYARTIFACTS_PACKAGE_NAME = "SafetyArtifacts"; //$NON-NLS-1$
+
+ /** Create SSafetyArtifacts package label. */
+ public static final String CREATE_SSAFETYARTIFACTS_LABEL = "Create SSafetyArtifacts"; //$NON-NLS-1$
/**
* Default constructor, private as it's a utility class.
@@ -35,15 +44,32 @@
}
/**
- * Retrieve SafetyArtifacts.
+ * Get SSafetyArtifacts.
*
- * @param pESFModel ESFModel root
- * @return The SafetyArtifacts
+ * @param pModelRoot The UML Model root
+ * @return The SSafetyArtifacts
*/
- public static ISSafetyArtifacts retrieveSafetyArtifacts(final Model pESFModel) {
+ public static ISSafetyArtifacts getSSafetyArtifacts(final Model pModelRoot) {
+ ISSafetyArtifacts vSSafetyArtifacts = retrieveSSafetyArtifacts(pModelRoot);
+
+ if (vSSafetyArtifacts == null) {
+ createSSafetyArtifacts(pModelRoot);
+ vSSafetyArtifacts = retrieveSSafetyArtifacts(pModelRoot);
+ }
+
+ return vSSafetyArtifacts;
+ }
+
+ /**
+ * Retrieve SSafetyArtifacts.
+ *
+ * @param pModelRoot The UML Model root
+ * @return The SSafetyArtifacts
+ */
+ private static ISSafetyArtifacts retrieveSSafetyArtifacts(final Model pModelRoot) {
ISSafetyArtifacts vSafetyArtifacts = null;
Boolean vFound = false;
- List<Package> vPackagesList = pESFModel.getNestedPackages();
+ List<Package> vPackagesList = pModelRoot.getNestedPackages();
Iterator<Package> vIterator = vPackagesList.iterator();
while (!vFound && vIterator.hasNext()) {
@@ -57,4 +83,32 @@
return vSafetyArtifacts;
}
+ /**
+ * Create SSafetyArtifacts.
+ *
+ * @param pModelRoot The UML Model root
+ */
+ public static void createSSafetyArtifacts(final Model pModelRoot) {
+ TransactionalEditingDomain vDomain = ModelUtil.getTransactionalEditingDomain(pModelRoot);
+
+ RecordingCommand vCreateSSafetyArtifacts =
+ new RecordingCommand(vDomain, CREATE_SSAFETYARTIFACTS_LABEL) {
+
+ @Override
+ protected void doExecute() {
+ // Create the object 'SafetyArtifacts' package
+ Package vLocalAnalysis = pModelRoot.createNestedPackage(SSAFETYARTIFACTS_PACKAGE_NAME);
+ // Apply 'SSafetyArtifacts' stereotype on 'SafetyArtifacts' package
+ UMLUtil.StereotypeApplicationHelper.getInstance(vLocalAnalysis)
+ .applyStereotype(vLocalAnalysis, ESFSafetyConceptsPackage.eINSTANCE.getSSafetyArtifacts());
+ }
+ };
+
+ // Verify if command can be executed
+ if (vCreateSSafetyArtifacts.canExecute()) {
+ // Execute command
+ vDomain.getCommandStack().execute(vCreateSSafetyArtifacts);
+ }
+ }
+
}