Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Tessier2016-04-01 08:22:33 +0000
committerPatrick Tessier2016-04-01 08:24:20 +0000
commit79a072569c057da44ba5f20ffd50737cb40217de (patch)
tree947b0ff43099b4727e6e10ee1bda6c99499836b1 /extraplugins/requirements
parentfa722c48bf546860332ba7f4ddc6bb017b56284b (diff)
downloadorg.eclipse.papyrus-79a072569c057da44ba5f20ffd50737cb40217de.tar.gz
org.eclipse.papyrus-79a072569c057da44ba5f20ffd50737cb40217de.tar.xz
org.eclipse.papyrus-79a072569c057da44ba5f20ffd50737cb40217de.zip
Bug 489570 - [Extra plugins][Requirements] The system shall allow to the
users to automatically verify SysML requirements models Change-Id: Ie7e7b867dc65e3748751bdf1618e06dae1728db2
Diffstat (limited to 'extraplugins/requirements')
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/.settings/org.eclipse.core.resources.prefs1
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/plugin.xml7
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/src/org/eclipse/papyrus/requirements/sysml/testers/NamedElementTester.java52
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.commands/src/org/eclipse/papyrus/requirements/sysml/traceability/commands/AddAbstractionByCommand.java79
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.commands/src/org/eclipse/papyrus/requirements/sysml/traceability/commands/AddAbstractionLinkCommand.java65
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/plugin.xml8
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/src/org/eclipse/papyrus/requirements/sysml/traceability/handlers/AddAbstractionByLinkHandler.java68
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/src/org/eclipse/papyrus/requirements/sysml/traceability/handlers/AddAbstractionLinkHandler.java68
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/images/Abstraction.gifbin0 -> 96 bytes
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.properties5
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.xml36
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/plugin.xml19
-rw-r--r--extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/src/org/eclipse/papyrus/requirements/sysml/verfication/rules/AllRequirementsMustBeVerified.java49
13 files changed, 457 insertions, 0 deletions
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/.settings/org.eclipse.core.resources.prefs b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/.settings/org.eclipse.core.resources.prefs
index cf6feb8cb1e..bd9dc0e727e 100644
--- a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/.settings/org.eclipse.core.resources.prefs
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/.settings/org.eclipse.core.resources.prefs
@@ -1,2 +1,3 @@
eclipse.preferences.version=1
+encoding//src/org/eclipse/papyrus/requirements/sysml/testers/NamedElementTester.java=UTF-8
encoding//src/org/eclipse/papyrus/requirements/sysml/testers/PackageTester.java=UTF-8
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/plugin.xml b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/plugin.xml
index 1eb5df9fb76..520dce76ee1 100644
--- a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/plugin.xml
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/plugin.xml
@@ -38,6 +38,13 @@
properties="isModel"
type="org.eclipse.jface.viewers.IStructuredSelection">
</propertyTester>
+ <propertyTester
+ class="org.eclipse.papyrus.requirements.sysml.testers.NamedElementTester"
+ id="org.eclipse.papyrus.requirements.sysml.testers.NamedElementTester"
+ namespace="org.eclipse.papyrus.requirements.sysml.testers"
+ properties="isNamedElement"
+ type="org.eclipse.jface.viewers.IStructuredSelection">
+ </propertyTester>
</extension>
</plugin>
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/src/org/eclipse/papyrus/requirements/sysml/testers/NamedElementTester.java b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/src/org/eclipse/papyrus/requirements/sysml/testers/NamedElementTester.java
new file mode 100644
index 00000000000..01225f5e9d9
--- /dev/null
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.testers/src/org/eclipse/papyrus/requirements/sysml/testers/NamedElementTester.java
@@ -0,0 +1,52 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Mauricio Alf�rez (mauricio.alferez@cea.fr) CEA LIST. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.requirements.sysml.testers;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ * This class helps to test if the selected element is a UML Package or not
+ */
+public class NamedElementTester extends PropertyTester {
+
+ public static final String isNamedElement = "isNamedElement";// NLS
+
+ @Override
+ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+ if (isNamedElement.equals(property)) {
+ boolean testResult = isExpected((IStructuredSelection) receiver);
+
+ return expectedValue.equals(testResult);
+ }
+ return false;
+ }
+
+ private boolean isExpected(IStructuredSelection receiver) {
+ for (Object current : receiver.toArray()) {
+ // Adapt current selection to EObject
+ if (current instanceof IAdaptable) {
+ EObject eObj = ((IAdaptable) current)
+ .getAdapter(EObject.class);
+ if (eObj instanceof NamedElement)
+ return true;
+ }
+ return false;
+ }
+ return false;
+ }
+
+}
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.commands/src/org/eclipse/papyrus/requirements/sysml/traceability/commands/AddAbstractionByCommand.java b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.commands/src/org/eclipse/papyrus/requirements/sysml/traceability/commands/AddAbstractionByCommand.java
new file mode 100644
index 00000000000..ec73851b07a
--- /dev/null
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.commands/src/org/eclipse/papyrus/requirements/sysml/traceability/commands/AddAbstractionByCommand.java
@@ -0,0 +1,79 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml.traceability.commands;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.infra.widgets.editors.MultipleValueSelectionDialog;
+import org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider;
+import org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector;
+import org.eclipse.papyrus.requirements.common.Utils;
+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.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ *
+ * Creates a set of Abstraction links based on a element that is refined by the
+ * model element(s) selected in a MultipleValueSelectionDialog
+ *
+ */
+public class AddAbstractionByCommand extends RecordingCommand {
+ protected Element selectedElement;
+ TransactionalEditingDomain domain;
+
+ public AddAbstractionByCommand(TransactionalEditingDomain domain, Element selectedElement) {
+ super(domain, "AddAbstractionByCommand");
+ this.selectedElement = selectedElement;
+ this.domain = domain;
+ }
+
+ @Override
+ protected void doExecute() {
+ if (selectedElement instanceof NamedElement) {
+ final IStaticContentProvider provider = new UMLContentProvider(Utils.getToPackage(selectedElement),
+ UMLPackage.eINSTANCE.getPackage_PackagedElement());
+ ReferenceSelector selector = new ReferenceSelector();
+ selector.setLabelProvider(new UMLLabelProvider());
+ selector.setContentProvider(provider);
+ MultipleValueSelectionDialog dialog = new MultipleValueSelectionDialog(
+ Display.getDefault().getActiveShell(), selector,
+ "Choose the named element(s) (for example, blocks ) that realize "
+ + ((NamedElement) selectedElement).getName());
+ dialog.setLabelProvider(new UMLLabelProvider());
+
+ dialog.create();
+
+ if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+ Object[] result = dialog.getResult();
+
+ for (int i = 0; i < result.length; i++) {
+ Element currentElement = (Element) result[i];
+ // chosen elements cannot be requirements
+ if (currentElement instanceof NamedElement) {
+ AbstractionCreateCommand abstractionCreateCommand = new AbstractionCreateCommand(domain,
+ (NamedElement) currentElement, (NamedElement) selectedElement);
+ abstractionCreateCommand.execute();
+ }
+ }
+
+ }
+ }
+ }
+
+} \ No newline at end of file
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.commands/src/org/eclipse/papyrus/requirements/sysml/traceability/commands/AddAbstractionLinkCommand.java b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.commands/src/org/eclipse/papyrus/requirements/sysml/traceability/commands/AddAbstractionLinkCommand.java
new file mode 100644
index 00000000000..304d4c4b463
--- /dev/null
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.commands/src/org/eclipse/papyrus/requirements/sysml/traceability/commands/AddAbstractionLinkCommand.java
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Patrick.Tessier (patrick.tessier@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml.traceability.commands;
+
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.infra.widgets.editors.MultipleValueSelectionDialog;
+import org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider;
+import org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector;
+import org.eclipse.papyrus.requirements.common.Utils;
+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.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ *
+ * Creates a set of Verify links base on a selected model element
+ */
+public class AddAbstractionLinkCommand extends RecordingCommand {
+ protected Element selectedElement;
+ TransactionalEditingDomain domain;
+
+ public AddAbstractionLinkCommand(TransactionalEditingDomain domain, Element selectedElement) {
+ super(domain, "Add Abstraction Link Command");
+ this.selectedElement = selectedElement;
+ this.domain = domain;
+ }
+
+ @Override
+ protected void doExecute() {
+ // open Tree selection dialog
+ final IStaticContentProvider provider = new UMLContentProvider(Utils.getToPackage(selectedElement), UMLPackage.eINSTANCE.getPackage_PackagedElement());
+ ReferenceSelector selector = new ReferenceSelector();
+ selector.setLabelProvider(new UMLLabelProvider());
+ selector.setContentProvider(provider);
+ MultipleValueSelectionDialog dialog = new MultipleValueSelectionDialog(Display.getDefault().getActiveShell(), selector, "Choose the NamedElement that this model element realize");
+
+ dialog.setLabelProvider(new UMLLabelProvider());
+ dialog.create();
+ if (dialog.open() == org.eclipse.jface.window.Window.OK) {
+ Object[] result = dialog.getResult();
+
+ for (int i = 0; i < result.length; i++) {
+ Element currentElement = (Element) result[i];
+ AbstractionCreateCommand verifyCreateCommand = new AbstractionCreateCommand(domain, (NamedElement) selectedElement, (NamedElement) currentElement);
+ verifyCreateCommand.execute();
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/plugin.xml b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/plugin.xml
index 6b2602894d8..400f36653b9 100644
--- a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/plugin.xml
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/plugin.xml
@@ -34,6 +34,10 @@
class="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddSatisfiedByLinkHandler"
commandId="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddSatisfiedByLinkHandler">
</handler>
+ <handler
+ class="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddAbstractionByLinkHandler"
+ commandId="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddAbstractionByLinkHandler">
+ </handler>
</extension>
<extension
point="org.eclipse.ui.handlers">
@@ -49,5 +53,9 @@
class="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddRefinesLinkHandler"
commandId="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddRefinesLinkHandler">
</handler>
+ <handler
+ class="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddAbstractionLinkHandler"
+ commandId="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddAbstractionLinkHandler">
+ </handler>
</extension>
</plugin>
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/src/org/eclipse/papyrus/requirements/sysml/traceability/handlers/AddAbstractionByLinkHandler.java b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/src/org/eclipse/papyrus/requirements/sysml/traceability/handlers/AddAbstractionByLinkHandler.java
new file mode 100644
index 00000000000..e920383013b
--- /dev/null
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/src/org/eclipse/papyrus/requirements/sysml/traceability/handlers/AddAbstractionByLinkHandler.java
@@ -0,0 +1,68 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Patrick Tessier CEA LIST. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.requirements.sysml.traceability.handlers;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.requirements.common.PapyrusAbstractHandler;
+import org.eclipse.papyrus.requirements.sysml.traceability.commands.AbstractionCreateCommand;
+import org.eclipse.papyrus.requirements.sysml.traceability.commands.AddAbstractionByCommand;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ * Executes the addition of Abstraction links based on a selected NamedElement
+ *
+ */
+public class AddAbstractionByLinkHandler extends PapyrusAbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ ArrayList<Element> selectedElements = getSelectionSet();
+ if (selectedElements.size() == 2) {
+ AbstractionCreateCommand addDerivedLinkReqCommand = new AbstractionCreateCommand(
+ transactionalEditingDomain, (NamedElement) selectedElements.get(0),
+ (NamedElement) selectedElements.get(1));
+ transactionalEditingDomain.getCommandStack().execute(addDerivedLinkReqCommand);
+ } else {
+
+ Element selectedElement = getSelection();
+ if (selectedElement != null) {
+ AddAbstractionByCommand addDerivedLinkReqCommand = new AddAbstractionByCommand(
+ transactionalEditingDomain, selectedElement);
+ transactionalEditingDomain.getCommandStack().execute(addDerivedLinkReqCommand);
+ }
+ }
+ 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 != null) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/src/org/eclipse/papyrus/requirements/sysml/traceability/handlers/AddAbstractionLinkHandler.java b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/src/org/eclipse/papyrus/requirements/sysml/traceability/handlers/AddAbstractionLinkHandler.java
new file mode 100644
index 00000000000..24d8477c766
--- /dev/null
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.handlers/src/org/eclipse/papyrus/requirements/sysml/traceability/handlers/AddAbstractionLinkHandler.java
@@ -0,0 +1,68 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Patrick Tessier (Patrick.Tessier@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml.traceability.handlers;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.papyrus.requirements.common.PapyrusAbstractHandler;
+import org.eclipse.papyrus.requirements.sysml.traceability.commands.AbstractionCreateCommand;
+import org.eclipse.papyrus.requirements.sysml.traceability.commands.AddAbstractionLinkCommand;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+
+/**
+ * Executes the addition of abstraction links based on a selected model element
+ *
+ */
+public class AddAbstractionLinkHandler extends PapyrusAbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ super.execute(event);
+ ArrayList<Element> selectedElements = getSelectionSet();
+ if (selectedElements.size() == 2) {
+ AbstractionCreateCommand addVerifyCreateCommand = new AbstractionCreateCommand(transactionalEditingDomain,
+ (NamedElement) selectedElements.get(0), (NamedElement) selectedElements.get(1));
+ transactionalEditingDomain.getCommandStack().execute(addVerifyCreateCommand);
+ } else {
+ Element selectedElement = getSelection();
+ if (selectedElement != null) {
+ AddAbstractionLinkCommand addVerifiesLinkCommand = new AddAbstractionLinkCommand(transactionalEditingDomain,
+ selectedElement);
+ transactionalEditingDomain.getCommandStack().execute(addVerifiesLinkCommand);
+ }
+ }
+ 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 != null) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+} \ No newline at end of file
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/images/Abstraction.gif b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/images/Abstraction.gif
new file mode 100644
index 00000000000..38df3e62097
--- /dev/null
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/images/Abstraction.gif
Binary files differ
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.properties b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.properties
index 27d3c6962c1..2e7290024ad 100644
--- a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.properties
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.properties
@@ -36,6 +36,9 @@ addSatisfiedbyLink.command.tooltip = Add "Satisfy" links from model elements to
addVerifiedByLink.command.label = Verified by
addVerifiedByLink.command.tooltip = Add "Verify" links from model element to the selected requirement
+addAbstractionByLink.command.label = Realizes
+addAbstractionByLink.command.tooltip = Add "Abstraction" links from model element to the selected NamedElement
+
#--------------------------------------------------------------------------
#Commands to be executed from model elements
#--------------------------------------------------------------------------
@@ -48,6 +51,8 @@ addVerifiesLink.command.tooltip = Add "Verify" links from the selected element t
addRefinesLink.command.label = Refines
addRefinesLink.command.tooltip = Add "Refine" links from the selected element to requirements
+addAbstractionLink.command.label = Abstracts
+addAbstractionLink.command.tooltip = Add "Abstraction" links from the selected element to NamedElement
#--------------------------------------------------------------------------
Bundle-Vendor = Eclipse Modeling Project
Bundle-Name = Papyrus Req SysML Traceability UI (Incubation) \ No newline at end of file
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.xml b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.xml
index 355b2aa7722..45118472089 100644
--- a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.xml
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.traceability.ui/plugin.xml
@@ -145,6 +145,24 @@
</with>
</visibleWhen>
</command>
+ <command
+ commandId="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddAbstractionByLinkHandler"
+ icon="images/Abstraction.gif"
+ label="%addAbstractionByLink.command.label"
+ style="push"
+ tooltip="%addAbstractionByLink.command.tooltip">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="selection">
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.papyrus.requirements.sysml.testers.isNamedElement"
+ value="true">
+ </test>
+ </with>
+ </visibleWhen>
+ </command>
</menuContribution>
</extension>
<extension
@@ -206,6 +224,24 @@
</with>
</visibleWhen>
</command>
+ <command
+ commandId="org.eclipse.papyrus.requirements.sysml.traceability.handlers.AddAbstractionLinkHandler"
+ icon="images/Abstraction.gif"
+ label="%addAbstractionLink.command.label"
+ style="push"
+ tooltip="%addAbstractionLink.command.tooltip">
+ <visibleWhen
+ checkEnabled="false">
+ <with
+ variable="selection">
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.papyrus.requirements.sysml.testers.isNamedElement"
+ value="true">
+ </test>
+ </with>
+ </visibleWhen>
+ </command>
</menuContribution>
</extension>
<extension
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/plugin.xml b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/plugin.xml
index 15a86df577c..2d26d3f9aa8 100644
--- a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/plugin.xml
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/plugin.xml
@@ -34,6 +34,25 @@
class="Class">
</target>
</constraint>
+ <constraint
+ class="org.eclipse.papyrus.requirements.sysml.verfication.rules.AllRequirementsMustBeVerified"
+ id="org.eclipse.papyrus.requirements.sysml.verfication.rules.AllRequirementsMustBeVerified"
+ isEnabledByDefault="true"
+ lang="Java"
+ mode="Batch"
+ name="Papyrus 4 Requirements - Rule 2: Are all the requirements verified"
+ severity="WARNING"
+ statusCode="2">
+ <message>
+ Papyrus 4 Requirements - Rule 1: {0}.
+ </message>
+ <description>
+ The requirement is not liked by any Element
+ </description>
+ <target
+ class="Class">
+ </target>
+ </constraint>
</constraints>
</constraintProvider>
</extension>
diff --git a/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/src/org/eclipse/papyrus/requirements/sysml/verfication/rules/AllRequirementsMustBeVerified.java b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/src/org/eclipse/papyrus/requirements/sysml/verfication/rules/AllRequirementsMustBeVerified.java
new file mode 100644
index 00000000000..c2f75986526
--- /dev/null
+++ b/extraplugins/requirements/org.eclipse.papyrus.requirements.sysml.verification/src/org/eclipse/papyrus/requirements/sysml/verfication/rules/AllRequirementsMustBeVerified.java
@@ -0,0 +1,49 @@
+/*****************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *
+ * Mauricio Alferez (mauricio.alferez@cea.fr) CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml.verfication.rules;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.EMFEventType;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.papyrus.requirements.sysml.common.I_SysMLStereotype;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Stereotype;
+
+public class AllRequirementsMustBeVerified extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate(IValidationContext context) {
+ Class clazz = (Class)context.getTarget();
+ EMFEventType eType = context.getEventType();
+ // In the case of batch mode
+ if(eType == EMFEventType.NULL) {
+ if(clazz.getAppliedStereotype(I_SysMLStereotype.REQUIREMENT_STEREOTYPE) != null) {
+ Stereotype reqStereotype = clazz.getAppliedStereotype(I_SysMLStereotype.REQUIREMENT_STEREOTYPE);
+ Object listOfObjectsThatSatisfyRequirement = clazz.getValue(reqStereotype, "verifiedBy");
+ if(listOfObjectsThatSatisfyRequirement instanceof EList<?>) {
+ @SuppressWarnings("unchecked")
+ EList<EObject> list = (EList<EObject>)listOfObjectsThatSatisfyRequirement;
+ if(list.isEmpty()) {
+ return context.createFailureStatus(clazz.getName() + " must by verified.");
+ }
+ }
+ }
+ }
+ return context.createSuccessStatus();
+ }
+}

Back to the top