diff options
author | ptessier | 2018-10-24 09:16:26 +0000 |
---|---|---|
committer | ptessier | 2018-10-25 15:05:05 +0000 |
commit | 28c1ab4b37e80f561ed3226d724f68f28b77b69a (patch) | |
tree | 852dbd109a9ae2692ec2fdcc6a634f885f20c832 | |
parent | b72e247143d302252eb45fe526904a7bfc08606e (diff) | |
download | org.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
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); + } } } } |