Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorptessier2018-10-24 09:16:26 +0000
committerptessier2018-10-25 15:05:05 +0000
commit28c1ab4b37e80f561ed3226d724f68f28b77b69a (patch)
tree852dbd109a9ae2692ec2fdcc6a634f885f20c832
parentb72e247143d302252eb45fe526904a7bfc08606e (diff)
downloadorg.eclipse.papyrus-requirements-28c1ab4b37e80f561ed3226d724f68f28b77b69a.tar.gz
org.eclipse.papyrus-requirements-28c1ab4b37e80f561ed3226d724f68f28b77b69a.tar.xz
org.eclipse.papyrus-requirements-28c1ab4b37e80f561ed3226d724f68f28b77b69a.zip
Bug 540421 - [PapyrusReq] The tool shall display Upward and downward
traceability wihout links Change-Id: I869683101176e5951567b1e962b0555798c25f32
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF2
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml6
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml2
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom4
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracabilityClasses.custom11
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom4
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracabilityClasses.custom11
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardClassesQuery.java85
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java16
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java2
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardClassesQuery.java84
-rw-r--r--plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java18
12 files changed, 225 insertions, 20 deletions
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF
index 652af3d..3b69d3e 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-SymbolicName: org.eclipse.papyrus.requirements.sysml14.common.u
i;singleton:=true
Export-Package: org.eclipse.papyrus.requirements.sysml14.common.ui
Bundle-Name: %Bundle-Name
-Bundle-Version: 0.8.0.qualifier
+Bundle-Version: 0.9.0.qualifier
Bundle-Localization: plugin
Require-Bundle: org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.6.0",
org.eclipse.papyrus.emf.facet.efacet.core,
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml
index 31d68e9..6cc35d0 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/plugin.xml
@@ -67,6 +67,12 @@
<modeldeclaration
file="resources/DisplaySatisfiedReq.custom">
</modeldeclaration>
+ <modeldeclaration
+ file="resources/DownwardTracabilityClasses.custom">
+ </modeldeclaration>
+ <modeldeclaration
+ file="resources/UpwardTracabilityClasses.custom">
+ </modeldeclaration>
</extension>
</plugin>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml
index 7c53a4b..7374cbb 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/pom.xml
@@ -30,5 +30,5 @@
<!-- POM Description -->
<artifactId>org.eclipse.papyrus.requirements.sysml14.common.ui</artifactId>
<packaging>eclipse-plugin</packaging>
- <version>0.8.0-SNAPSHOT</version>
+ <version>0.9.0-SNAPSHOT</version>
</project> \ No newline at end of file
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom
index 7ad46b9..53ddbdd 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracability.custom
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="DownwardTracability" documentation="Used to find element that trace from the current object" mustBeLoadedByDefault="true" rank="2">
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="DownwardTraceability" documentation="Used to find element that trace from the current object" rank="2">
<eClassifiers xsi:type="custom:EClassCustomization" name="NamedElement">
<extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement"/>
- <facetElements xsi:type="efacet:FacetReference" name="downwardTracability" upperBound="-1" volatile="true" transient="true" derived="true">
+ <facetElements xsi:type="efacet:FacetReference" name="DownwardTraceability" upperBound="-1" volatile="true" transient="true" derived="true">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
<query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.requirements.sysml14.common.ui.queries.DownwardTracabilityQuery"/>
</facetElements>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracabilityClasses.custom b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracabilityClasses.custom
new file mode 100644
index 0000000..05def85
--- /dev/null
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/DownwardTracabilityClasses.custom
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="DownwardTraceabilityClasses" documentation="Used to find element that trace from the current object" rank="2">
+ <eClassifiers xsi:type="custom:EClassCustomization" name="NamedElement">
+ <extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement"/>
+ <facetElements xsi:type="efacet:FacetReference" name="DownwardTraceabilityClasses" upperBound="-1" volatile="true" transient="true" derived="true">
+ <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.requirements.sysml14.common.ui.queries.DownwardClassesQuery"/>
+ </facetElements>
+ <extendedFacets href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject"/>
+ </eClassifiers>
+</custom:Customization>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom
index de11c04..7f9699d 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracability.custom
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="UpwardTracability" documentation="Used to find element that trace from the current object" mustBeLoadedByDefault="true" rank="2">
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="UpwardTraceability" documentation="Used to find element that trace from the current object" rank="2">
<eClassifiers xsi:type="custom:EClassCustomization" name="NamedElement">
<extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement"/>
- <facetElements xsi:type="efacet:FacetReference" name="upwardTracability" upperBound="-1" volatile="true" transient="true" derived="true">
+ <facetElements xsi:type="efacet:FacetReference" name="UpwardTraceability" upperBound="-1" volatile="true" transient="true" derived="true">
<eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
<query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.requirements.sysml14.common.ui.queries.UpwardTracabilityQuery"/>
</facetElements>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracabilityClasses.custom b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracabilityClasses.custom
new file mode 100644
index 0000000..72cfb7b
--- /dev/null
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/resources/UpwardTracabilityClasses.custom
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<custom:Customization xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:custom="http://www.eclipse.org/papyrus/emf/facet/custom/0.2.incubation/custom" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:efacet="http://www.eclipse.org/papyrus/emf/facet/efacet/0.2.incubation/efacet" xmlns:javaQuery="http://www.eclipse.org/papyrus/emf/facet/query/java/0.2.incubation/javaquery" name="UpwardTraceabilityClasses" documentation="Used to find element that trace from the current object" rank="2">
+ <eClassifiers xsi:type="custom:EClassCustomization" name="NamedElement">
+ <extendedMetaclass href="http://www.eclipse.org/uml2/5.0.0/UML#//NamedElement"/>
+ <facetElements xsi:type="efacet:FacetReference" name="UpwardTraceabilityClasses" upperBound="-1" volatile="true" transient="true" derived="true">
+ <eType xsi:type="ecore:EClass" href="http://www.eclipse.org/emf/2002/Ecore#//EObject"/>
+ <query xsi:type="javaQuery:JavaQuery" implementationClassName="org.eclipse.papyrus.requirements.sysml14.common.ui.queries.UpwardClassesQuery"/>
+ </facetElements>
+ <extendedFacets href="platform:/plugin/org.eclipse.papyrus.emf.facet.custom.ui/resources/customproperties.efacet#//CustomizedEObject"/>
+ </eClassifiers>
+</custom:Customization>
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardClassesQuery.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardClassesQuery.java
new file mode 100644
index 0000000..df4b442
--- /dev/null
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardClassesQuery.java
@@ -0,0 +1,85 @@
+/*****************************************************************************
+ * Copyright (c) 2016,2018 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
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml14.common.ui.queries;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.resource.UMLResource;
+
+/**
+ * Req03: Papyrus Req shall provides a means to display downward traceability in the model explorer
+ *
+ */
+public class DownwardClassesQuery implements IJavaQuery2<NamedElement, Collection<EObject>> {
+ public Collection<EObject> evaluate(final NamedElement context,
+ final IParameterValueList2 parameterValues,
+ final IFacetManager facetManager)
+ throws DerivedTypedElementException {
+
+
+ ArrayList<EObject> result= new ArrayList<EObject>();
+ if( context instanceof DirectedRelationship) {
+ result.addAll(((DirectedRelationship)context).getSources());
+ }
+ else {
+ ResourceSet resourceSet=context.eResource().getResourceSet();
+ for(int i=0; i< resourceSet.getResources().size();i++) {
+ Resource resource = (Resource) resourceSet.getResources().get(i);
+ if( resource instanceof UMLResource) {
+
+ for (Iterator<EObject> iteratorObject = resource.getAllContents(); iteratorObject.hasNext();) {
+ EObject ownedElement = (EObject) iteratorObject.next();
+ if( ownedElement instanceof Abstraction) {
+ if(((DirectedRelationship)ownedElement).getTargets().contains(context)) {
+ DirectedRelationship directedRelationship=(DirectedRelationship) ownedElement;
+ result.addAll(directedRelationship.getSources());
+ }
+ }
+ }
+ }
+ }
+ }
+ return result;
+
+ }
+
+ /**
+ * @param elem
+ * UML model element
+ * @return the highest level Package of the element
+ */
+ public static Package getToPackage(Element elememt) {
+ Package tmp = elememt.getNearestPackage();
+ while (tmp.getOwner() != null && (tmp.getOwner() instanceof Package)) {
+ tmp = (Package) tmp.getOwner();
+ }
+ return tmp;
+ }
+}
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java
index 3709011..75bebb1 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/DownwardTracabilityQuery.java
@@ -25,6 +25,8 @@ import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Dependency;
import org.eclipse.uml2.uml.DirectedRelationship;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.NamedElement;
@@ -47,18 +49,20 @@ public class DownwardTracabilityQuery implements IJavaQuery2<NamedElement, Coll
result.addAll(((DirectedRelationship)context).getSources());
}
else {
-
ResourceSet resourceSet=context.eResource().getResourceSet();
- for (Iterator<Resource> iteratorResource = resourceSet.getResources().iterator(); iteratorResource.hasNext();) {
- Resource resource = (Resource) iteratorResource.next();
+
+ for(int i=0; i< resourceSet.getResources().size();i++) {
+ Resource resource = (Resource) resourceSet.getResources().get(i);
if( resource instanceof UMLResource) {
-
for (Iterator<EObject> iteratorObject = resource.getAllContents(); iteratorObject.hasNext();) {
EObject ownedElement = (EObject) iteratorObject.next();
if(ownedElement instanceof DirectedRelationship) {
- if(((DirectedRelationship)ownedElement).getTargets().contains(context)) {
- result.add(ownedElement);
+ if( ownedElement instanceof Abstraction) {
+ if(((DirectedRelationship)ownedElement).getTargets().contains(context)) {
+ result.add(ownedElement);
+ }
}
+
}
}
}
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java
index 0e81660..70d720c 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/GetComplexName.java
@@ -63,7 +63,7 @@ public class GetComplexName implements IJavaQuery2<NamedElement, String> {
}
if ((source instanceof org.eclipse.uml2.uml.Class) && (appStereotype != null) && (isRequirementStereotype(appStereotype))) {
- return "" + source.getValue(appStereotype, I_SysMLStereotype.REQUIREMENT_ID_ATT) + ": " + source.getName();
+ return "" + source.getValue(appStereotype, I_SysMLStereotype.REQUIREMENT_ID_ATT) + ": " + source.getValue(appStereotype, I_SysMLStereotype.REQUIREMENT_TEXT_ATT);
}
// Delegate to UML2 Edit providers to get localized and inferred names where applicable
return labelProvider.getText(source);
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardClassesQuery.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardClassesQuery.java
new file mode 100644
index 0000000..6ce6600
--- /dev/null
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardClassesQuery.java
@@ -0,0 +1,84 @@
+/*****************************************************************************
+ * Copyright (c) 2016,2018 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
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.requirements.sysml14.common.ui.queries;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
+import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
+import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
+import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.resource.UMLResource;
+
+/**
+ * Req02:Papyrus Req shall provides a means to display upward traceability in the model explorer
+ *
+ */
+public class UpwardClassesQuery implements IJavaQuery2<NamedElement, Collection<EObject>> {
+
+
+
+ public Collection<EObject> evaluate(final NamedElement context,
+ final IParameterValueList2 parameterValues,
+ final IFacetManager facetManager)
+ throws DerivedTypedElementException {
+
+
+ ArrayList<EObject> result= new ArrayList<EObject>();
+ ResourceSet resourceSet=context.eResource().getResourceSet();
+ for(int i=0; i< resourceSet.getResources().size();i++) {
+ Resource resource = (Resource) resourceSet.getResources().get(i);
+ if( resource instanceof UMLResource) {
+
+ for (Iterator<EObject> iteratorObject = resource.getAllContents(); iteratorObject.hasNext();) {
+ EObject ownedElement = (EObject) iteratorObject.next();
+ if(ownedElement instanceof DirectedRelationship) {
+ if( ownedElement instanceof Abstraction) {
+ if(((DirectedRelationship)ownedElement).getSources().contains(context)) {
+ result.addAll(((DirectedRelationship)ownedElement).getTargets());
+ }
+ }
+ }
+ }
+ }
+ }
+ return result;
+
+ }
+
+ /**
+ * @param elem
+ * UML model element
+ * @return the highest level Package of the element
+ */
+ public static Package getToPackage(Element elememt) {
+ Package tmp = elememt.getNearestPackage();
+ while (tmp.getOwner() != null && (tmp.getOwner() instanceof Package)) {
+ tmp = (Package) tmp.getOwner();
+ }
+ return tmp;
+ }
+}
diff --git a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java
index ab7f2ae..a4e19c9 100644
--- a/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java
+++ b/plugins/sysml14/gui/org.eclipse.papyrus.requirements.sysml14.common.ui/src/org/eclipse/papyrus/requirements/sysml14/common/ui/queries/UpwardTracabilityQuery.java
@@ -25,6 +25,8 @@ import org.eclipse.papyrus.emf.facet.efacet.core.IFacetManager;
import org.eclipse.papyrus.emf.facet.efacet.core.exception.DerivedTypedElementException;
import org.eclipse.papyrus.emf.facet.query.java.core.IJavaQuery2;
import org.eclipse.papyrus.emf.facet.query.java.core.IParameterValueList2;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Dependency;
import org.eclipse.uml2.uml.DirectedRelationship;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.NamedElement;
@@ -36,9 +38,9 @@ import org.eclipse.uml2.uml.resource.UMLResource;
*
*/
public class UpwardTracabilityQuery implements IJavaQuery2<NamedElement, Collection<EObject>> {
-
-
-
+
+
+
public Collection<EObject> evaluate(final NamedElement context,
final IParameterValueList2 parameterValues,
final IFacetManager facetManager)
@@ -52,15 +54,17 @@ public class UpwardTracabilityQuery implements IJavaQuery2<NamedElement, Collec
else {
ResourceSet resourceSet=context.eResource().getResourceSet();
- for (Iterator<Resource> iteratorResource = resourceSet.getResources().iterator(); iteratorResource.hasNext();) {
- Resource resource = (Resource) iteratorResource.next();
+ for(int i=0; i< resourceSet.getResources().size();i++) {
+ Resource resource = (Resource) resourceSet.getResources().get(i);
if( resource instanceof UMLResource) {
for (Iterator<EObject> iteratorObject = resource.getAllContents(); iteratorObject.hasNext();) {
EObject ownedElement = (EObject) iteratorObject.next();
if(ownedElement instanceof DirectedRelationship) {
- if(((DirectedRelationship)ownedElement).getSources().contains(context)) {
- result.add(ownedElement);
+ if( ownedElement instanceof Abstraction) {
+ if(((DirectedRelationship)ownedElement).getSources().contains(context)) {
+ result.add(ownedElement);
+ }
}
}
}

Back to the top