diff options
author | Arthur Daussy | 2014-06-05 09:28:29 +0000 |
---|---|---|
committer | Laurent Goubet | 2014-07-01 09:38:23 +0000 |
commit | e735ec0cbcd22d12e979027255e4bb26c3c424f1 (patch) | |
tree | fcd5cc8dda32ee82d1d9b78a3791d3e110ea248c | |
parent | 9cc9c7c75100533fa8bc0025588547581b725fc6 (diff) | |
download | org.eclipse.emf.compare-e735ec0cbcd22d12e979027255e4bb26c3c424f1.tar.gz org.eclipse.emf.compare-e735ec0cbcd22d12e979027255e4bb26c3c424f1.tar.xz org.eclipse.emf.compare-e735ec0cbcd22d12e979027255e4bb26c3c424f1.zip |
Unit test for MDT Papyrus differences order.
Refators the UMLDifferencesOrderTest.
Create a new test for MDT Papyrus differences order.
Change-Id: I81e21a2da0ee7945a7ddae1a7b3c31c0d4e61c3c
Signed-off-by: Arthur Daussy <arthur.daussy@obeo.fr>
27 files changed, 2057 insertions, 256 deletions
diff --git a/plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF index 1e2d1be18..6ca4b68c3 100644 --- a/plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.diagram.edit/META-INF/MANIFEST.MF @@ -20,3 +20,5 @@ Require-Bundle: org.eclipse.core.runtime, Bundle-ActivationPolicy: lazy Import-Package: com.google.common.base;version="[11.0.0,16.0.0)", com.google.common.collect;version="[11.0.0,16.0.0)" +Export-Package: org.eclipse.emf.compare.diagram.internal.extensions.provider.spec;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests", + org.eclipse.emf.compare.diagram.internal.matchs.provider.spec;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests" diff --git a/plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF index 4b7654880..052e4ca88 100644 --- a/plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.diagram.ide.ui/META-INF/MANIFEST.MF @@ -23,7 +23,7 @@ Export-Package: org.eclipse.emf.compare.diagram.ide.ui.internal;x-internal:=true org.eclipse.emf.compare.diagram.ide.ui.internal.accessor.factory;x-internal:=true, org.eclipse.emf.compare.diagram.ide.ui.internal.contentmergeviewer.diagram;x-internal:=true, org.eclipse.emf.compare.diagram.ide.ui.internal.preferences;x-internal:=true, - org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters;x-internal:=true, + org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests", org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters.groups.extenders Bundle-Vendor: %providerName Import-Package: com.google.common.base;version="[11.0.0,16.0.0)", diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF index d294d06bb..8230fd712 100644 --- a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/META-INF/MANIFEST.MF @@ -13,8 +13,19 @@ Require-Bundle: org.eclipse.core.runtime, org.eclipse.emf.compare.uml2;bundle-version="2.1.0", org.eclipse.uml2.uml, org.eclipse.uml2.uml.resources, - org.eclipse.papyrus.infra.core + org.eclipse.papyrus.infra.core, + org.eclipse.emf.compare.diagram.ide.ui;bundle-version="3.1.0", + org.eclipse.emf.compare.uml2.rcp.ui;bundle-version="2.2.0", + org.eclipse.emf.compare.rcp.ui;bundle-version="4.0.0", + org.eclipse.emf.compare.uml2.rcp.ui.tests;bundle-version="2.2.0", + org.eclipse.jface, + org.eclipse.uml2.uml.edit;bundle-version="5.0.0", + org.eclipse.emf.compare.uml2.edit;bundle-version="2.2.0", + org.eclipse.emf.compare.edit;bundle-version="4.0.0", + org.eclipse.emf.compare.diagram.edit;bundle-version="2.3.0", + org.eclipse.gmf.runtime.notation.edit;bundle-version="1.7.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-Vendor: %providerName Import-Package: com.google.common.base;version="[11.0.0,16.0.0)", - com.google.common.collect;version="[11.0.0,16.0.0)" + com.google.common.collect;version="[11.0.0,16.0.0)", + com.google.common.eventbus;version="[11.0.0,16.0.0)" diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/expectedResultWithUMLRefineElement.nodes b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/expectedResultWithUMLRefineElement.nodes new file mode 100644 index 000000000..38c95d97b --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/expectedResultWithUMLRefineElement.nodes @@ -0,0 +1,248 @@ +<?xml version="1.0" encoding="ASCII"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes"> + <nodes:Node xmi:id="_HmnacOv3EeOJ757b_KHwtA" name="Diagram MovingNodeDiagram"> + <containmentRef1 xmi:id="_HmxygOv3EeOJ757b_KHwtA" name="Shape 2007"> + <containmentRef1 xmi:id="_Hmxygev3EeOJ757b_KHwtA" name="Decoration Node 5026"/> + <containmentRef1 xmi:id="_Hmxyguv3EeOJ757b_KHwtA" name="Decoration Node 7016"> + <containmentRef1 xmi:id="_Hmxyg-v3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HmxyhOv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hmxyhev3EeOJ757b_KHwtA" name="Bounds 28"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hmxyhuv3EeOJ757b_KHwtA" name="Shape 2007"> + <containmentRef1 xmi:id="_Hmxyh-v3EeOJ757b_KHwtA" name="Decoration Node 5026"/> + <containmentRef1 xmi:id="_HmxyiOv3EeOJ757b_KHwtA" name="Decoration Node 7016"> + <containmentRef1 xmi:id="_Hmxyiev3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_Hmxyiuv3EeOJ757b_KHwtA" name="Bounds 0"/> + <containmentRef1 xmi:id="_Hmxyi-v3EeOJ757b_KHwtA" name="Shape 3010 [children move]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmxyjOv3EeOJ757b_KHwtA" name="Bounds 289"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hmxyjev3EeOJ757b_KHwtA" name="Shape 2008"> + <containmentRef1 xmi:id="_Hmxyjuv3EeOJ757b_KHwtA" name="Decoration Node 5029"/> + <containmentRef1 xmi:id="_Hmxyj-v3EeOJ757b_KHwtA" name="Basic Compartment 7017"> + <containmentRef1 xmi:id="_HmxykOv3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_Hmxykev3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_Hmxykuv3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_Hmxyk-v3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmxylOv3EeOJ757b_KHwtA" name="Basic Compartment 7018"> + <containmentRef1 xmi:id="_Hmxylev3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_Hmxyluv3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_Hmxyl-v3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HmxymOv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hmxymev3EeOJ757b_KHwtA" name="Basic Compartment 7019"> + <containmentRef1 xmi:id="_Hmxymuv3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_Hmxym-v3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HmxynOv3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_Hmxynev3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hmxynuv3EeOJ757b_KHwtA" name="Bounds 537"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hmxyn-v3EeOJ757b_KHwtA" name="Shape 2008"> + <containmentRef1 xmi:id="_HmxyoOv3EeOJ757b_KHwtA" name="Decoration Node 5029"/> + <containmentRef1 xmi:id="_Hmxyoev3EeOJ757b_KHwtA" name="Basic Compartment 7017"> + <containmentRef1 xmi:id="_Hmxyouv3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_Hmxyo-v3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HmxypOv3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HmyZkOv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZkev3EeOJ757b_KHwtA" name="Basic Compartment 7018"> + <containmentRef1 xmi:id="_HmyZkuv3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HmyZk-v3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HmyZlOv3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HmyZlev3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZluv3EeOJ757b_KHwtA" name="Basic Compartment 7019"> + <containmentRef1 xmi:id="_HmyZl-v3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HmyZmOv3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HmyZmev3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HmyZmuv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZm-v3EeOJ757b_KHwtA" name="Bounds 772"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZnOv3EeOJ757b_KHwtA" name="Shape 2008"> + <containmentRef1 xmi:id="_HmyZnev3EeOJ757b_KHwtA" name="Decoration Node 5029"/> + <containmentRef1 xmi:id="_HmyZnuv3EeOJ757b_KHwtA" name="Basic Compartment 7017"> + <containmentRef1 xmi:id="_HmyZn-v3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HmyZoOv3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HmyZoev3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HmyZouv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZo-v3EeOJ757b_KHwtA" name="Basic Compartment 7018"> + <containmentRef1 xmi:id="_HmyZpOv3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HmyZpev3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HmyZpuv3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HmyZp-v3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZqOv3EeOJ757b_KHwtA" name="Basic Compartment 7019"> + <containmentRef1 xmi:id="_HmyZqev3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HmyZquv3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HmyZq-v3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HmyZrOv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZrev3EeOJ757b_KHwtA" name="Bounds 772"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZruv3EeOJ757b_KHwtA" name="Diagram Style "/> + <containmentRef1 xmi:id="_HmyZr-v3EeOJ757b_KHwtA" name="Papyrus View Style"/> + <containmentRef1 xmi:id="_HmyZsOv3EeOJ757b_KHwtA" name="Connector 4001 [edges delete]"> + <containmentRef1 xmi:id="_HmyZsev3EeOJ757b_KHwtA" name="Decoration Node 6001 [children delete]"> + <containmentRef1 xmi:id="_HmyZsuv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZs-v3EeOJ757b_KHwtA" name="Decoration Node 6002 [children delete]"> + <containmentRef1 xmi:id="_HmyZtOv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZtev3EeOJ757b_KHwtA" name="Decoration Node 6003 [children delete]"> + <containmentRef1 xmi:id="_HmyZtuv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZt-v3EeOJ757b_KHwtA" name="Decoration Node 6005 [children delete]"> + <containmentRef1 xmi:id="_HmyZuOv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmyZuev3EeOJ757b_KHwtA" name="Decoration Node 6033 [children delete]"> + <containmentRef1 xmi:id="_HmzAoOv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmzAoev3EeOJ757b_KHwtA" name="Decoration Node 6034 [children delete]"> + <containmentRef1 xmi:id="_HmzAouv3EeOJ757b_KHwtA" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HmzAo-v3EeOJ757b_KHwtA" name="Font Style Tahoma [styles delete]"/> + <containmentRef1 xmi:id="_HmzApOv3EeOJ757b_KHwtA" name="<Association> A_associationSource_associationOl... [element unset]"/> + <containmentRef1 xmi:id="_HmzApev3EeOJ757b_KHwtA" name="Shape 2008 [source unset]"/> + <containmentRef1 xmi:id="_HmzApuv3EeOJ757b_KHwtA" name="Shape 2008 [target unset]"/> + <containmentRef1 xmi:id="_HmzAp-v3EeOJ757b_KHwtA" name="Relative Bendpoints [org.eclipse.gmf.runtime.no... [bendpoints delete]"/> + <containmentRef1 xmi:id="_HmzAqOv3EeOJ757b_KHwtA" name="Identity Anchor (0.872,0.046875) [sourceAnchor delete]"/> + <containmentRef1 xmi:id="_HmzAqev3EeOJ757b_KHwtA" name="Identity Anchor (0.4405594405594406,0.09) [targetAnchor delete]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_HmzAquv3EeOJ757b_KHwtA" name="Model Style Sheets"/> + <nodes:Node xmi:id="_Hm5HQOv3EeOJ757b_KHwtA" name="Diagram ChangingDiagram"> + <containmentRef1 xmi:id="_Hm5HQev3EeOJ757b_KHwtA" name="Shape 2008"> + <containmentRef1 xmi:id="_Hm5HQuv3EeOJ757b_KHwtA" name="Decoration Node 5029"/> + <containmentRef1 xmi:id="_Hm5HQ-v3EeOJ757b_KHwtA" name="Basic Compartment 7017"> + <containmentRef1 xmi:id="_Hm5HROv3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_Hm5HRev3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_Hm5HRuv3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_Hm5HR-v3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hm5HSOv3EeOJ757b_KHwtA" name="Basic Compartment 7018"> + <containmentRef1 xmi:id="_Hm5HSev3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_Hm5HSuv3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_Hm5HS-v3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_Hm5HTOv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hm5HTev3EeOJ757b_KHwtA" name="Basic Compartment 7019"> + <containmentRef1 xmi:id="_Hm5HTuv3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_Hm5HT-v3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_Hm5HUOv3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_Hm5HUev3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hm5HUuv3EeOJ757b_KHwtA" name="Bounds 63"/> + </containmentRef1> + <containmentRef1 xmi:id="_Hm5HU-v3EeOJ757b_KHwtA" name="Diagram Style "/> + <containmentRef1 xmi:id="_Hm5HVOv3EeOJ757b_KHwtA" name="Papyrus View Style"/> + </nodes:Node> + <nodes:Node xmi:id="_HnHJsOv3EeOJ757b_KHwtA" name="Diagram DeletingDiagram"> + <containmentRef1 xmi:id="_HnHJsev3EeOJ757b_KHwtA" name="Diagram Style "/> + <containmentRef1 xmi:id="_HnHJsuv3EeOJ757b_KHwtA" name="Papyrus View Style"/> + <containmentRef1 xmi:id="_HnHJs-v3EeOJ757b_KHwtA" name="Shape 2008 [children delete]"> + <containmentRef1 xmi:id="_HnHJtOv3EeOJ757b_KHwtA" name="Decoration Node 5029 [children delete]"/> + <containmentRef1 xmi:id="_HnHJtev3EeOJ757b_KHwtA" name="Basic Compartment 7017 [children delete]"> + <containmentRef1 xmi:id="_HnHJtuv3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/> + <containmentRef1 xmi:id="_HnHJt-v3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/> + <containmentRef1 xmi:id="_HnHJuOv3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/> + <containmentRef1 xmi:id="_HnHJuev3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HnHJuuv3EeOJ757b_KHwtA" name="Basic Compartment 7018 [children delete]"> + <containmentRef1 xmi:id="_HnHJu-v3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/> + <containmentRef1 xmi:id="_HnHJvOv3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/> + <containmentRef1 xmi:id="_HnHJvev3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/> + <containmentRef1 xmi:id="_HnHJvuv3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HnHJv-v3EeOJ757b_KHwtA" name="Basic Compartment 7019 [children delete]"> + <containmentRef1 xmi:id="_HnHJwOv3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/> + <containmentRef1 xmi:id="_HnHJwev3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/> + <containmentRef1 xmi:id="_HnHwwOv3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/> + <containmentRef1 xmi:id="_HnHwwev3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HnHwwuv3EeOJ757b_KHwtA" name="<Class> NodeToDelete [element unset]"/> + <containmentRef1 xmi:id="_HnHww-v3EeOJ757b_KHwtA" name="Bounds 370 [layoutConstraint delete]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_HnQToOv3EeOJ757b_KHwtA" name="Diagram AddingDiagram"> + <containmentRef1 xmi:id="_HnQToev3EeOJ757b_KHwtA" name="Diagram Style "/> + <containmentRef1 xmi:id="_HnQTouv3EeOJ757b_KHwtA" name="Papyrus View Style"/> + <containmentRef1 xmi:id="_HnQTo-v3EeOJ757b_KHwtA" name="Shape 2008 [children add]"> + <containmentRef1 xmi:id="_HnQTpOv3EeOJ757b_KHwtA" name="Decoration Node 5029 [children add]"/> + <containmentRef1 xmi:id="_HnQTpev3EeOJ757b_KHwtA" name="Basic Compartment 7017 [children add]"> + <containmentRef1 xmi:id="_HnQ6sOv3EeOJ757b_KHwtA" name="Title Style false [styles add]"/> + <containmentRef1 xmi:id="_HnQ6sev3EeOJ757b_KHwtA" name="Sorting Style None [styles add]"/> + <containmentRef1 xmi:id="_HnQ6suv3EeOJ757b_KHwtA" name="Filtering Style None [styles add]"/> + <containmentRef1 xmi:id="_HnQ6s-v3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint add]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HnQ6tOv3EeOJ757b_KHwtA" name="Basic Compartment 7018 [children add]"> + <containmentRef1 xmi:id="_HnQ6tev3EeOJ757b_KHwtA" name="Title Style false [styles add]"/> + <containmentRef1 xmi:id="_HnQ6tuv3EeOJ757b_KHwtA" name="Sorting Style None [styles add]"/> + <containmentRef1 xmi:id="_HnQ6t-v3EeOJ757b_KHwtA" name="Filtering Style None [styles add]"/> + <containmentRef1 xmi:id="_HnQ6uOv3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint add]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HnQ6uev3EeOJ757b_KHwtA" name="Basic Compartment 7019 [children add]"> + <containmentRef1 xmi:id="_HnQ6uuv3EeOJ757b_KHwtA" name="Title Style false [styles add]"/> + <containmentRef1 xmi:id="_HnQ6u-v3EeOJ757b_KHwtA" name="Sorting Style None [styles add]"/> + <containmentRef1 xmi:id="_HnQ6vOv3EeOJ757b_KHwtA" name="Filtering Style None [styles add]"/> + <containmentRef1 xmi:id="_HnQ6vev3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint add]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HnQ6vuv3EeOJ757b_KHwtA" name="<Class> NewNode [element set]"/> + <containmentRef1 xmi:id="_HnQ6v-v3EeOJ757b_KHwtA" name="Bounds 271 [layoutConstraint add]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_Hncg4Ov3EeOJ757b_KHwtA" name="Diagram ConflictingDiagram"> + <containmentRef1 xmi:id="_HndH8Ov3EeOJ757b_KHwtA" name="Shape 2008"> + <containmentRef1 xmi:id="_HndH8ev3EeOJ757b_KHwtA" name="Decoration Node 5029"/> + <containmentRef1 xmi:id="_HndH8uv3EeOJ757b_KHwtA" name="Basic Compartment 7017"> + <containmentRef1 xmi:id="_HndH8-v3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HndH9Ov3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HndH9ev3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HndH9uv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HndH9-v3EeOJ757b_KHwtA" name="Basic Compartment 7018"> + <containmentRef1 xmi:id="_HndH-Ov3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HndH-ev3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HndH-uv3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HndH--v3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HndH_Ov3EeOJ757b_KHwtA" name="Basic Compartment 7019"> + <containmentRef1 xmi:id="_HndH_ev3EeOJ757b_KHwtA" name="Title Style false"/> + <containmentRef1 xmi:id="_HndH_uv3EeOJ757b_KHwtA" name="Sorting Style None"/> + <containmentRef1 xmi:id="_HndH_-v3EeOJ757b_KHwtA" name="Filtering Style None"/> + <containmentRef1 xmi:id="_HndIAOv3EeOJ757b_KHwtA" name="Bounds 0"/> + </containmentRef1> + <containmentRef1 xmi:id="_HndIAev3EeOJ757b_KHwtA" name="Bounds 305"/> + </containmentRef1> + <containmentRef1 xmi:id="_HndIAuv3EeOJ757b_KHwtA" name="Diagram Style "/> + <containmentRef1 xmi:id="_HndIA-v3EeOJ757b_KHwtA" name="Papyrus View Style"/> + <containmentRef1 xmi:id="_HndIBOv3EeOJ757b_KHwtA" name="Shape 2008 [children delete]"> + <containmentRef1 xmi:id="_HndIBev3EeOJ757b_KHwtA" name="Decoration Node 5029 [children delete]"/> + <containmentRef1 xmi:id="_HndIBuv3EeOJ757b_KHwtA" name="Basic Compartment 7017 [children delete]"> + <containmentRef1 xmi:id="_HndIB-v3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/> + <containmentRef1 xmi:id="_HndICOv3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/> + <containmentRef1 xmi:id="_HndICev3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/> + <containmentRef1 xmi:id="_HndICuv3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HndIC-v3EeOJ757b_KHwtA" name="Basic Compartment 7018 [children delete]"> + <containmentRef1 xmi:id="_HndIDOv3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/> + <containmentRef1 xmi:id="_HndIDev3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/> + <containmentRef1 xmi:id="_HndIDuv3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/> + <containmentRef1 xmi:id="_HndID-v3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HndIEOv3EeOJ757b_KHwtA" name="Basic Compartment 7019 [children delete]"> + <containmentRef1 xmi:id="_HndIEev3EeOJ757b_KHwtA" name="Title Style false [styles delete]"/> + <containmentRef1 xmi:id="_HndIEuv3EeOJ757b_KHwtA" name="Sorting Style None [styles delete]"/> + <containmentRef1 xmi:id="_HndIE-v3EeOJ757b_KHwtA" name="Filtering Style None [styles delete]"/> + <containmentRef1 xmi:id="_HndIFOv3EeOJ757b_KHwtA" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_HndIFev3EeOJ757b_KHwtA" name="<Class> ConflictingNode [element unset]"/> + <containmentRef1 xmi:id="_HndvAOv3EeOJ757b_KHwtA" name="Bounds 68 [layoutConstraint delete]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_HngyUOv3EeOJ757b_KHwtA" name="left.notation <-> right.notation (origin.notation)"/> +</xmi:XMI> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java new file mode 100644 index 000000000..c0acf5262 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/PapyrusDifferencesOrderTest.java @@ -0,0 +1,219 @@ +/******************************************************************************* + * Copyright (c) 2014 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.diagram.papyrus.tests.groups; + +import static com.google.common.base.Predicates.alwaysTrue; + +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.util.Collections; +import java.util.List; +import java.util.regex.Pattern; + +import org.eclipse.emf.common.EMFPlugin; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters.GMFRefinedElementsFilter; +import org.eclipse.emf.compare.diagram.internal.CompareDiagramPostProcessor; +import org.eclipse.emf.compare.diagram.internal.extensions.provider.spec.ExtensionsItemProviderAdapterFactorySpec; +import org.eclipse.emf.compare.diagram.internal.matchs.provider.spec.DiagramCompareItemProviderAdapterFactorySpec; +import org.eclipse.emf.compare.diagram.papyrus.tests.DiagramInputData; +import org.eclipse.emf.compare.postprocessor.BasicPostProcessorDescriptorImpl; +import org.eclipse.emf.compare.postprocessor.IPostProcessor.Descriptor.Registry; +import org.eclipse.emf.compare.postprocessor.PostProcessorDescriptorRegistryImpl; +import org.eclipse.emf.compare.provider.spec.CompareItemProviderAdapterFactorySpec; +import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.CascadingDifferencesFilter; +import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.EmptyMatchedResourcesFilter; +import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.IdenticalElementsFilter; +import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.PseudoConflictsFilter; +import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.BasicDifferenceGroupImpl; +import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeItemProviderAdapterFactorySpec; +import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.IDifferenceGroup; +import org.eclipse.emf.compare.tests.framework.AbstractInputData; +import org.eclipse.emf.compare.uml2.internal.postprocessor.UMLPostProcessor; +import org.eclipse.emf.compare.uml2.internal.provider.custom.UMLCompareCustomItemProviderAdapterFactory; +import org.eclipse.emf.compare.uml2.internal.provider.decorator.UMLCompareItemProviderDecoratorAdapterFactory; +import org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters.UMLRefinedElementsFilter; +import org.eclipse.emf.compare.uml2.rcp.ui.tests.groups.AbstractDifferenceOrderTest; +import org.eclipse.emf.compare.uml2.rcp.ui.tests.groups.NotifierScopeProvider; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; +import org.eclipse.emf.edit.tree.TreeNode; +import org.eclipse.gmf.runtime.emf.core.resources.GMFResourceFactory; +import org.eclipse.gmf.runtime.notation.NotationPackage; +import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory; +import org.eclipse.gmf.runtime.notation.util.NotationAdapterFactory; +import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory; +import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl; +import org.junit.Before; +import org.junit.Test; + +import com.google.common.collect.Lists; + +/** + * Tests the order of the differences they would be displayed in the structure merge viewer for MDT Papyrus + * model. + * + * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> + */ +public class PapyrusDifferencesOrderTest extends AbstractDifferenceOrderTest { + + /** + * Data holding expecting result. + */ + private ExpectedResultData expectedResultData; + + @Before + @Override + public void before() throws IOException { + super.before(); + getFilter().removeFilter(new CascadingDifferencesFilter()); + getFilter().removeFilter(new PseudoConflictsFilter()); + getFilter().removeFilter(new EmptyMatchedResourcesFilter()); + // Adds this filter for clarity + getFilter().addFilter(new IdenticalElementsFilter()); + getFilter().addFilter(new UMLRefinedElementsFilter()); + expectedResultData = new ExpectedResultData(); + } + + @Override + protected Registry<?> getPostProcessorRegistry() { + PostProcessorDescriptorRegistryImpl<Object> postProcessorRegistry = new PostProcessorDescriptorRegistryImpl<Object>(); + //Adds UML post processor + BasicPostProcessorDescriptorImpl descriptor = new BasicPostProcessorDescriptorImpl( + new UMLPostProcessor(), Pattern.compile("http://www.eclipse.org/uml2/\\d.0.0/UML"), null); //$NON-NLS-1$ + postProcessorRegistry.put(UMLPostProcessor.class.getName(), descriptor); + //Adds Diagram post processor + BasicPostProcessorDescriptorImpl descriptor2 = new BasicPostProcessorDescriptorImpl( + new CompareDiagramPostProcessor(), Pattern + .compile("http://www.eclipse.org/gmf/runtime/\\d.\\d.\\d/notation"), null); //$NON-NLS-1$ + postProcessorRegistry.put(CompareDiagramPostProcessor.class.getName(), descriptor2); + return postProcessorRegistry; + } + + @Override + protected NotifierScopeProvider getInput() { + return new InputData(); + } + + @Override + protected List<AdapterFactory> getAdaptersFactory() { + return Lists.<AdapterFactory> newArrayList(new CompareItemProviderAdapterFactorySpec(), + new TreeItemProviderAdapterFactorySpec(), new UMLCompareCustomItemProviderAdapterFactory(), + new UMLItemProviderAdapterFactory(), new UMLCompareItemProviderDecoratorAdapterFactory(), + new ReflectiveItemProviderAdapterFactory(), new NotationAdapterFactory(), + new ExtensionsItemProviderAdapterFactorySpec(), + new DiagramCompareItemProviderAdapterFactorySpec(), new NotationItemProviderAdapterFactory()); + } + + @Test + public void testPapyrusDiffWithoutDiagRefineFilter() throws IOException { + GMFRefinedElementsFilter diagramFilter = new GMFRefinedElementsFilter(); + getFilter().removeFilter(diagramFilter); + + IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(), + getCrossReferenceAdapter()); + List<? extends TreeNode> roots = group.getChildren(); + + // Uncomment the following lines to reserialize the expected model + // TestWriterHelper writerHelper = createTestHelper(); + // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOff.nodes", roots); + + compareTree(expectedResultData.getExpectedReseultWithFilterOff(), roots); + } + + @Test + public void testPapyrusDiffWithDiagRefineFilter() throws IOException { + GMFRefinedElementsFilter diagramFilter = new GMFRefinedElementsFilter(); + getFilter().addFilter(diagramFilter); + + IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(), + getCrossReferenceAdapter()); + List<? extends TreeNode> roots = group.getChildren(); + + // Uncomment the following lines to reserialize the expected model + // TestWriterHelper writerHelper = createTestHelper(); + // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOn.nodes", roots); + + compareTree(expectedResultData.getExpectedReseultWithFilterOn(), roots); + } + + /** + * Expected result data. + * + * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> + */ + private static final class ExpectedResultData extends AbstractInputData { + + public Resource getExpectedReseultWithFilterOn() throws IOException { + return loadFromClassLoader("data/a1/expectedResult_DiagRefineOn.nodes"); + } + + public Resource getExpectedReseultWithFilterOff() throws IOException { + return loadFromClassLoader("data/a1/expectedResult_DiagRefineOff.nodes"); + } + } + + /** + * Input data for this test. + * + * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> + */ + private static final class InputData extends DiagramInputData implements NotifierScopeProvider { + + public ResourceSet getLeft() throws IOException { + return loadFromClassLoader("data/a1/left.notation").getResourceSet(); + } + + public ResourceSet getRight() throws IOException { + return loadFromClassLoader("data/a1/right.notation").getResourceSet(); + } + + public ResourceSet getOrigin() throws IOException { + return loadFromClassLoader("data/a1/origin.notation").getResourceSet(); + } + + @Override + protected Resource loadFromClassLoader(String string) throws IOException { + final URL fileURL = getClass().getResource(string); + final InputStream str = fileURL.openStream(); + final URI uri = URI.createURI(fileURL.toString()); + + ResourceSet resourceSet = new ResourceSetImpl(); + getSets().add(resourceSet); + + if (!EMFPlugin.IS_RESOURCES_BUNDLE_AVAILABLE) { + resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("uml", + new UMLResourceFactoryImpl()); + resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("notation", + new GMFResourceFactory()); + EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE); + EPackage.Registry.INSTANCE.put(NotationPackage.eNS_URI, NotationPackage.eINSTANCE); + } + + Resource resource = resourceSet.createResource(uri); + + resource.load(str, Collections.emptyMap()); + str.close(); + + EcoreUtil.resolveAll(resourceSet); + + return resource; + } + } + +} diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOff.nodes b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOff.nodes new file mode 100644 index 000000000..6de28e133 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOff.nodes @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="ASCII"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes"> + <nodes:Node xmi:id="_1uWuQOyMEeO1JodpgTFWvw" name="Diagram MovingNodeDiagram <Model> model"> + <containmentRef1 xmi:id="_1ueDAOyMEeO1JodpgTFWvw" name="Shape <Package> NewHoldingPackage"> + <containmentRef1 xmi:id="_1ueDAeyMEeO1JodpgTFWvw" name="DecorationNode <Package> NewHoldingPackage"> + <containmentRef1 xmi:id="_1ueDAuyMEeO1JodpgTFWvw" name="Shape <Class> MovingNode [children move]"/> + </containmentRef1> + </containmentRef1> + <containmentRef1 xmi:id="_1ueDA-yMEeO1JodpgTFWvw" name="Connector <Association> A_associationSource_ass... [edges delete]"> + <containmentRef1 xmi:id="_1ueDBOyMEeO1JodpgTFWvw" name="DecorationNode <Association> A_associationSourc... [children delete]"> + <containmentRef1 xmi:id="_1ueDBeyMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ueDBuyMEeO1JodpgTFWvw" name="DecorationNode <Association> A_associationSourc... [children delete]"> + <containmentRef1 xmi:id="_1ueDB-yMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ueDCOyMEeO1JodpgTFWvw" name="DecorationNode <Association> A_associationSourc... [children delete]"> + <containmentRef1 xmi:id="_1ueDCeyMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ueDCuyMEeO1JodpgTFWvw" name="DecorationNode <Association> A_associationSourc... [children delete]"> + <containmentRef1 xmi:id="_1ueDC-yMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ueqEOyMEeO1JodpgTFWvw" name="DecorationNode <Association> A_associationSourc... [children delete]"> + <containmentRef1 xmi:id="_1ueqEeyMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ueqEuyMEeO1JodpgTFWvw" name="DecorationNode <Association> A_associationSourc... [children delete]"> + <containmentRef1 xmi:id="_1ueqE-yMEeO1JodpgTFWvw" name="Location 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ueqFOyMEeO1JodpgTFWvw" name="FontStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ueqFeyMEeO1JodpgTFWvw" name="<Association> A_associationSource_associationOl... [element unset]"/> + <containmentRef1 xmi:id="_1ueqFuyMEeO1JodpgTFWvw" name="Shape <Class> AssociationSource [source unset]"/> + <containmentRef1 xmi:id="_1ueqF-yMEeO1JodpgTFWvw" name="Shape <Class> AssociationOldTarget [target unset]"/> + <containmentRef1 xmi:id="_1ueqGOyMEeO1JodpgTFWvw" name="Relative Bendpoints [org.eclipse.gmf.runtime.no... [bendpoints delete]"/> + <containmentRef1 xmi:id="_1ueqGeyMEeO1JodpgTFWvw" name="Identity Anchor (0.872,0.046875) [sourceAnchor delete]"/> + <containmentRef1 xmi:id="_1ueqGuyMEeO1JodpgTFWvw" name="Identity Anchor (0.4405594405594406,0.09) [targetAnchor delete]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_1ukJoOyMEeO1JodpgTFWvw" name="Diagram DeletingDiagram <Model> model"> + <containmentRef1 xmi:id="_1ukJoeyMEeO1JodpgTFWvw" name="Shape <Class> NodeToDelete [children delete]"> + <containmentRef1 xmi:id="_1ukJouyMEeO1JodpgTFWvw" name="DecorationNode <Class> NodeToDelete [children delete]"/> + <containmentRef1 xmi:id="_1ukJo-yMEeO1JodpgTFWvw" name="BasicCompartment <Class> NodeToDelete [children delete]"> + <containmentRef1 xmi:id="_1ukJpOyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukJpeyMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukJpuyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukwsOyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ukwseyMEeO1JodpgTFWvw" name="BasicCompartment <Class> NodeToDelete [children delete]"> + <containmentRef1 xmi:id="_1ukwsuyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukws-yMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukwtOyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukwteyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ukwtuyMEeO1JodpgTFWvw" name="BasicCompartment <Class> NodeToDelete [children delete]"> + <containmentRef1 xmi:id="_1ukwt-yMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukwuOyMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukwueyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/> + <containmentRef1 xmi:id="_1ukwuuyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1ukwu-yMEeO1JodpgTFWvw" name="<Class> NodeToDelete [element unset]"/> + <containmentRef1 xmi:id="_1ukwvOyMEeO1JodpgTFWvw" name="Bounds 370 [layoutConstraint delete]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_1uqQQOyMEeO1JodpgTFWvw" name="Diagram AddingDiagram <Model> model"> + <containmentRef1 xmi:id="_1uqQQeyMEeO1JodpgTFWvw" name="Shape <Class> NewNode [children add]"> + <containmentRef1 xmi:id="_1uqQQuyMEeO1JodpgTFWvw" name="DecorationNode <Class> NewNode [children add]"/> + <containmentRef1 xmi:id="_1uqQQ-yMEeO1JodpgTFWvw" name="BasicCompartment <Class> NewNode [children add]"> + <containmentRef1 xmi:id="_1uqQROyMEeO1JodpgTFWvw" name="TitleStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQReyMEeO1JodpgTFWvw" name="SortingStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQRuyMEeO1JodpgTFWvw" name="FilteringStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQR-yMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint add]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1uqQSOyMEeO1JodpgTFWvw" name="BasicCompartment <Class> NewNode [children add]"> + <containmentRef1 xmi:id="_1uqQSeyMEeO1JodpgTFWvw" name="TitleStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQSuyMEeO1JodpgTFWvw" name="SortingStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQS-yMEeO1JodpgTFWvw" name="FilteringStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQTOyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint add]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1uqQTeyMEeO1JodpgTFWvw" name="BasicCompartment <Class> NewNode [children add]"> + <containmentRef1 xmi:id="_1uqQTuyMEeO1JodpgTFWvw" name="TitleStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQT-yMEeO1JodpgTFWvw" name="SortingStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQUOyMEeO1JodpgTFWvw" name="FilteringStyle [styles add]"/> + <containmentRef1 xmi:id="_1uqQUeyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint add]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1uqQUuyMEeO1JodpgTFWvw" name="<Class> NewNode [element set]"/> + <containmentRef1 xmi:id="_1uqQU-yMEeO1JodpgTFWvw" name="Bounds 271 [layoutConstraint add]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_1uvIwOyMEeO1JodpgTFWvw" name="Diagram ConflictingDiagram <Model> model"> + <containmentRef1 xmi:id="_1uvIweyMEeO1JodpgTFWvw" name="Shape <Class> ConflictingNode [children delete]"> + <containmentRef1 xmi:id="_1uvIwuyMEeO1JodpgTFWvw" name="DecorationNode <Class> ConflictingNode [children delete]"/> + <containmentRef1 xmi:id="_1uvIw-yMEeO1JodpgTFWvw" name="BasicCompartment <Class> ConflictingNode [children delete]"> + <containmentRef1 xmi:id="_1uvIxOyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvIxeyMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvIxuyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvIx-yMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1uvIyOyMEeO1JodpgTFWvw" name="BasicCompartment <Class> ConflictingNode [children delete]"> + <containmentRef1 xmi:id="_1uvIyeyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvIyuyMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvIy-yMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvIzOyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1uvIzeyMEeO1JodpgTFWvw" name="BasicCompartment <Class> ConflictingNode [children delete]"> + <containmentRef1 xmi:id="_1uvIzuyMEeO1JodpgTFWvw" name="TitleStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvIz-yMEeO1JodpgTFWvw" name="SortingStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvI0OyMEeO1JodpgTFWvw" name="FilteringStyle [styles delete]"/> + <containmentRef1 xmi:id="_1uvI0eyMEeO1JodpgTFWvw" name="Bounds 0 [layoutConstraint delete]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1uvI0uyMEeO1JodpgTFWvw" name="<Class> ConflictingNode [element unset]"/> + <containmentRef1 xmi:id="_1uvI0-yMEeO1JodpgTFWvw" name="Bounds 68 [layoutConstraint delete]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_1u79EOyMEeO1JodpgTFWvw" name="<Model> model"> + <containmentRef1 xmi:id="_1u79EeyMEeO1JodpgTFWvw" name="<Package> NewHoldingPackage"> + <containmentRef1 xmi:id="_1u79EuyMEeO1JodpgTFWvw" name="<Class> MovingNode [packagedElement move]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1u79E-yMEeO1JodpgTFWvw" name="<Class> ChangingNameNode_NewName"> + <containmentRef1 xmi:id="_1u79FOyMEeO1JodpgTFWvw" name="ChangingNameNode_NewName [name changed]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1u8kIOyMEeO1JodpgTFWvw" name="<Class> PseudoConflictingNode_NewName"> + <containmentRef1 xmi:id="_1u8kIeyMEeO1JodpgTFWvw" name="PseudoConflictingNode [name changed]"/> + <containmentRef1 xmi:id="_1u8kIuyMEeO1JodpgTFWvw" name="PseudoConflictingNode [name changed]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1u8kI-yMEeO1JodpgTFWvw" name="<Class> NewNode [packagedElement add]"/> + <containmentRef1 xmi:id="_1u8kJOyMEeO1JodpgTFWvw" name="<Association> A_associationSource_associationOl... [packagedElement delete]"/> + <containmentRef1 xmi:id="_1u8kJeyMEeO1JodpgTFWvw" name="<Class> NodeToDelete [packagedElement delete]"/> + <containmentRef1 xmi:id="_1u8kJuyMEeO1JodpgTFWvw" name="<Class> ConflictingNode [packagedElement delete]"> + <containmentRef1 xmi:id="_1u8kJ-yMEeO1JodpgTFWvw" name="ConflictingNode_ConflictingName [name set]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_1u_AYOyMEeO1JodpgTFWvw" name="left.notation <-> right.notation (origin.notation)"/> + <nodes:Node xmi:id="_1u_AYeyMEeO1JodpgTFWvw" name="left.uml <-> right.uml (origin.uml)"/> +</xmi:XMI> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOn.nodes b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOn.nodes new file mode 100644 index 000000000..7155d2f7b --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/expectedResult_DiagRefineOn.nodes @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="ASCII"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes"> + <nodes:Node xmi:id="_150-cOyMEeO1JodpgTFWvw" name="Diagram MovingNodeDiagram <Model> model"> + <containmentRef1 xmi:id="_150-ceyMEeO1JodpgTFWvw" name="Shape <Package> NewHoldingPackage"> + <containmentRef1 xmi:id="_150-cuyMEeO1JodpgTFWvw" name="DecorationNode <Package> NewHoldingPackage"> + <containmentRef1 xmi:id="_151lgOyMEeO1JodpgTFWvw" name="Shape <Class> MovingNode [children move]"/> + </containmentRef1> + </containmentRef1> + <containmentRef1 xmi:id="_151lgeyMEeO1JodpgTFWvw" name="Connector <Association> A_associationSource_ass... [edges delete]"/> + </nodes:Node> + <nodes:Node xmi:id="_152zoOyMEeO1JodpgTFWvw" name="Diagram DeletingDiagram <Model> model"> + <containmentRef1 xmi:id="_152zoeyMEeO1JodpgTFWvw" name="Shape <Class> NodeToDelete [children delete]"/> + </nodes:Node> + <nodes:Node xmi:id="_154o0OyMEeO1JodpgTFWvw" name="Diagram AddingDiagram <Model> model"> + <containmentRef1 xmi:id="_154o0eyMEeO1JodpgTFWvw" name="Shape <Class> NewNode [children add]"/> + </nodes:Node> + <nodes:Node xmi:id="_15528OyMEeO1JodpgTFWvw" name="Diagram ConflictingDiagram <Model> model"> + <containmentRef1 xmi:id="_15528eyMEeO1JodpgTFWvw" name="Shape <Class> ConflictingNode [children delete]"/> + </nodes:Node> + <nodes:Node xmi:id="_1586QOyMEeO1JodpgTFWvw" name="<Model> model"> + <containmentRef1 xmi:id="_1586QeyMEeO1JodpgTFWvw" name="<Package> NewHoldingPackage"> + <containmentRef1 xmi:id="_1586QuyMEeO1JodpgTFWvw" name="<Class> MovingNode [packagedElement move]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1586Q-yMEeO1JodpgTFWvw" name="<Class> ChangingNameNode_NewName"> + <containmentRef1 xmi:id="_1586ROyMEeO1JodpgTFWvw" name="ChangingNameNode_NewName [name changed]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1586ReyMEeO1JodpgTFWvw" name="<Class> PseudoConflictingNode_NewName"> + <containmentRef1 xmi:id="_1586RuyMEeO1JodpgTFWvw" name="PseudoConflictingNode [name changed]"/> + <containmentRef1 xmi:id="_1586R-yMEeO1JodpgTFWvw" name="PseudoConflictingNode [name changed]"/> + </containmentRef1> + <containmentRef1 xmi:id="_1586SOyMEeO1JodpgTFWvw" name="<Class> NewNode [packagedElement add]"/> + <containmentRef1 xmi:id="_1586SeyMEeO1JodpgTFWvw" name="<Association> A_associationSource_associationOl... [packagedElement delete]"/> + <containmentRef1 xmi:id="_1586SuyMEeO1JodpgTFWvw" name="<Class> NodeToDelete [packagedElement delete]"/> + <containmentRef1 xmi:id="_1586S-yMEeO1JodpgTFWvw" name="<Class> ConflictingNode [packagedElement delete]"> + <containmentRef1 xmi:id="_1586TOyMEeO1JodpgTFWvw" name="ConflictingNode_ConflictingName [name set]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_1586TeyMEeO1JodpgTFWvw" name="left.notation <-> right.notation (origin.notation)"/> + <nodes:Node xmi:id="_159hUOyMEeO1JodpgTFWvw" name="left.uml <-> right.uml (origin.uml)"/> +</xmi:XMI> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.di new file mode 100644 index 000000000..bf9abab34 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.notation new file mode 100644 index 000000000..c47d160b5 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.notation @@ -0,0 +1,220 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <notation:Diagram xmi:id="_EgGyQOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="MovingNodeDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_LTZrAOWxEeOBKf64hQ5SMA" type="2007"> + <children xmi:type="notation:DecorationNode" xmi:id="_LTkDEOWxEeOBKf64hQ5SMA" type="5026"/> + <children xmi:type="notation:DecorationNode" xmi:id="_LTmfUOWxEeOBKf64hQ5SMA" type="7016"> + <styles xmi:type="notation:TitleStyle" xmi:id="_LTmfUeWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTmfUuWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Package" href="left.uml#_LRkfAOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTZrAeWxEeOBKf64hQ5SMA" x="28" y="41" width="226" height="220"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_P3jLoOWxEeOBKf64hQ5SMA" type="2007"> + <children xmi:type="notation:DecorationNode" xmi:id="_P3jysOWxEeOBKf64hQ5SMA" type="5026"/> + <children xmi:type="notation:DecorationNode" xmi:id="_P3kZwOWxEeOBKf64hQ5SMA" type="7016"> + <children xmi:type="notation:Shape" xmi:id="_MzOfAOWxEeOBKf64hQ5SMA" type="3010"> + <children xmi:type="notation:DecorationNode" xmi:id="_MzPtIOWxEeOBKf64hQ5SMA" type="5014"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzUloOWxEeOBKf64hQ5SMA" type="7011"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzUloeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzUlouWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzUlo-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzUlpOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzVMsOWxEeOBKf64hQ5SMA" type="7012"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzVMseWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzVMsuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVMs-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVMtOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzVzwOWxEeOBKf64hQ5SMA" type="7013"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzVzweWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzVzwuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVzw-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVzxOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="left.uml#_MyvW0OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzOfAeWxEeOBKf64hQ5SMA" x="20" y="58" width="142" height="101"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_P3kZweWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3kZwuWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Package" href="left.uml#_P3e6MOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3jLoeWxEeOBKf64hQ5SMA" x="289" y="40" width="215" height="221"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ngGKQOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_ngHYYOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngHYYeWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngHYYuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngHYY-WxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngHYZOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngHYZeWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngImgOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngImgeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngImguWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngImg-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngImhOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngJNkOWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngJNkeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngJNkuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngJNk-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngJNlOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="left.uml#_ngB40OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngGKQeWxEeOBKf64hQ5SMA" x="537" y="127" width="125" height="128"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_pOFWEOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_pOGkMOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOHLQOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOHLQeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOHLQuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOHLQ-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOHLROWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOHyUOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOHyUeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOHyUuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOIZYOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOIZYeWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOJAcOWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOJAceWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOJAcuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOJAc-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOJAdOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="left.uml#_pOBrsOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOFWEeWxEeOBKf64hQ5SMA" x="772" y="44"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_rJ5igOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_rJ6JkOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ6woOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ6woeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ6wouWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ6wo-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ6wpOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ7XsOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ7XseWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ7XsuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ7Xs-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ7XtOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ8l0OWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ8l0eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ8l0uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ8l0-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ8l1OWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="left.uml#_rJ1REOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ5igeWxEeOBKf64hQ5SMA" x="772" y="161" width="146" height="126"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_EgGyQeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_EgGyQuWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + <edges xmi:type="notation:Connector" xmi:id="_tJO9AOWxEeOBKf64hQ5SMA" type="4001" source="_ngGKQOWxEeOBKf64hQ5SMA" target="_pOFWEOWxEeOBKf64hQ5SMA"> + <children xmi:type="notation:DecorationNode" xmi:id="_tJQyMOWxEeOBKf64hQ5SMA" type="6001"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJQyMeWxEeOBKf64hQ5SMA" y="-20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJSAUOWxEeOBKf64hQ5SMA" type="6002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJSAUeWxEeOBKf64hQ5SMA" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJSnYOWxEeOBKf64hQ5SMA" type="6003"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJTOcOWxEeOBKf64hQ5SMA" y="-20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJT1gOWxEeOBKf64hQ5SMA" type="6005"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJUckOWxEeOBKf64hQ5SMA" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJVDoOWxEeOBKf64hQ5SMA" type="6033"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJVqsOWxEeOBKf64hQ5SMA" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJWRwOWxEeOBKf64hQ5SMA" type="6034"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJWRweWxEeOBKf64hQ5SMA" y="-20"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_tJO9AeWxEeOBKf64hQ5SMA"/> + <element xmi:type="uml:Association" href="left.uml#_tI4-wOWxEeOBKf64hQ5SMA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tJO9AuWxEeOBKf64hQ5SMA" points="[14, -6, -175, 74]$[187, -89, -2, -9]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tL0W8OWxEeOBKf64hQ5SMA" id="(0.872,0.046875)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tL0-AOWxEeOBKf64hQ5SMA" id="(0.4405594405594406,0.09)"/> + </edges> + </notation:Diagram> + <css:ModelStyleSheets xmi:id="_JKTQgOWxEeOBKf64hQ5SMA"/> + <notation:Diagram xmi:id="_5on14OWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ChangingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_6K6qoOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_6K7RsOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K74wOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K74weWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K74wuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K74w-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K74xOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f0OWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f0eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f0uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f0-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f1OWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f1eWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f1uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f1-WxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f2OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f2eWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="left.uml#_6K2ZMOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K6qoeWxEeOBKf64hQ5SMA" x="63" y="64" width="344" height="236"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_5on14eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_5on14uWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_-8jNoOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="DeletingDiagram" measurementUnit="Pixel"> + <styles xmi:type="notation:DiagramStyle" xmi:id="_-8jNoeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_-8jNouWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_E-ErMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="AddingDiagram" measurementUnit="Pixel"> + <styles xmi:type="notation:DiagramStyle" xmi:id="_E-ErMeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E-ErMuWyEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_KWxOMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ConflictingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_NlLq8OWyEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_NlMSAOWyEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlMSAeWyEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlMSAuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlMSA-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlMSBOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlMSBeWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5EOWyEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5EeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5EuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5E-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5FOWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5FeWyEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5FuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5F-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5GOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5GeWyEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="left.uml#_NlHZgOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlLq8eWyEeOBKf64hQ5SMA" x="305" y="92" width="162" height="180"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_KWxOMeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_KWxOMuWyEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="left.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> +</xmi:XMI> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.uml new file mode 100644 index 000000000..72a57fd01 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/left.uml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_EbOSQOWxEeOBKf64hQ5SMA" name="model"> + <packagedElement xmi:type="uml:Package" xmi:id="_LRkfAOWxEeOBKf64hQ5SMA" name="OldHoldingPackage"/> + <packagedElement xmi:type="uml:Package" xmi:id="_P3e6MOWxEeOBKf64hQ5SMA" name="NewHoldingPackage"> + <packagedElement xmi:type="uml:Class" xmi:id="_MyvW0OWxEeOBKf64hQ5SMA" name="MovingNode"/> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_ngB40OWxEeOBKf64hQ5SMA" name="AssociationSource"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_tI17cOWxEeOBKf64hQ5SMA" name="associationOldTarget" type="_pOBrsOWxEeOBKf64hQ5SMA" association="_tI4-wOWxEeOBKf64hQ5SMA"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tI17ceWxEeOBKf64hQ5SMA" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tI17cuWxEeOBKf64hQ5SMA" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_pOBrsOWxEeOBKf64hQ5SMA" name="AssociationOldTarget"/> + <packagedElement xmi:type="uml:Class" xmi:id="_rJ1REOWxEeOBKf64hQ5SMA" name="AssociationNewTarget"/> + <packagedElement xmi:type="uml:Association" xmi:id="_tI4-wOWxEeOBKf64hQ5SMA" name="A_associationSource_associationOldTarget_1" memberEnd="_tI4-weWxEeOBKf64hQ5SMA _tI17cOWxEeOBKf64hQ5SMA" navigableOwnedEnd="_tI4-weWxEeOBKf64hQ5SMA"> + <ownedEnd xmi:type="uml:Property" xmi:id="_tI4-weWxEeOBKf64hQ5SMA" name="associationSource" type="_ngB40OWxEeOBKf64hQ5SMA" association="_tI4-wOWxEeOBKf64hQ5SMA"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tI4-wuWxEeOBKf64hQ5SMA" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tI4-w-WxEeOBKf64hQ5SMA" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_6K2ZMOWxEeOBKf64hQ5SMA" name="ChangingNameNode_NewName"/> + <packagedElement xmi:type="uml:Class" xmi:id="_NlHZgOWyEeOBKf64hQ5SMA" name="PseudoConflictingNode_NewName"/> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.di new file mode 100644 index 000000000..bf9abab34 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.notation new file mode 100644 index 000000000..6f1c610c5 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.notation @@ -0,0 +1,266 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <notation:Diagram xmi:id="_EgGyQOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="MovingNodeDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_LTZrAOWxEeOBKf64hQ5SMA" type="2007"> + <children xmi:type="notation:DecorationNode" xmi:id="_LTkDEOWxEeOBKf64hQ5SMA" type="5026"/> + <children xmi:type="notation:DecorationNode" xmi:id="_LTmfUOWxEeOBKf64hQ5SMA" type="7016"> + <children xmi:type="notation:Shape" xmi:id="_MzOfAOWxEeOBKf64hQ5SMA" type="3010"> + <children xmi:type="notation:DecorationNode" xmi:id="_MzPtIOWxEeOBKf64hQ5SMA" type="5014"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzUloOWxEeOBKf64hQ5SMA" type="7011"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzUloeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzUlouWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzUlo-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzUlpOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzVMsOWxEeOBKf64hQ5SMA" type="7012"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzVMseWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzVMsuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVMs-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVMtOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzVzwOWxEeOBKf64hQ5SMA" type="7013"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzVzweWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzVzwuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVzw-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVzxOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="origin.uml#_MyvW0OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzOfAeWxEeOBKf64hQ5SMA" x="16" y="22" width="142" height="101"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_LTmfUeWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTmfUuWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Package" href="origin.uml#_LRkfAOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTZrAeWxEeOBKf64hQ5SMA" x="28" y="41" width="226" height="220"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_P3jLoOWxEeOBKf64hQ5SMA" type="2007"> + <children xmi:type="notation:DecorationNode" xmi:id="_P3jysOWxEeOBKf64hQ5SMA" type="5026"/> + <children xmi:type="notation:DecorationNode" xmi:id="_P3kZwOWxEeOBKf64hQ5SMA" type="7016"> + <styles xmi:type="notation:TitleStyle" xmi:id="_P3kZweWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3kZwuWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Package" href="origin.uml#_P3e6MOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3jLoeWxEeOBKf64hQ5SMA" x="289" y="40" width="215" height="221"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ngGKQOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_ngHYYOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngHYYeWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngHYYuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngHYY-WxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngHYZOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngHYZeWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngImgOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngImgeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngImguWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngImg-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngImhOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngJNkOWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngJNkeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngJNkuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngJNk-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngJNlOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="origin.uml#_ngB40OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngGKQeWxEeOBKf64hQ5SMA" x="537" y="127" width="125" height="128"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_pOFWEOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_pOGkMOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOHLQOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOHLQeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOHLQuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOHLQ-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOHLROWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOHyUOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOHyUeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOHyUuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOIZYOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOIZYeWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOJAcOWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOJAceWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOJAcuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOJAc-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOJAdOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="origin.uml#_pOBrsOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOFWEeWxEeOBKf64hQ5SMA" x="772" y="44"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_rJ5igOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_rJ6JkOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ6woOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ6woeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ6wouWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ6wo-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ6wpOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ7XsOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ7XseWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ7XsuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ7Xs-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ7XtOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ8l0OWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ8l0eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ8l0uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ8l0-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ8l1OWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="origin.uml#_rJ1REOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ5igeWxEeOBKf64hQ5SMA" x="772" y="161" width="146" height="126"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_EgGyQeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_EgGyQuWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + <edges xmi:type="notation:Connector" xmi:id="_tJO9AOWxEeOBKf64hQ5SMA" type="4001" source="_ngGKQOWxEeOBKf64hQ5SMA" target="_pOFWEOWxEeOBKf64hQ5SMA"> + <children xmi:type="notation:DecorationNode" xmi:id="_tJQyMOWxEeOBKf64hQ5SMA" type="6001"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJQyMeWxEeOBKf64hQ5SMA" y="-20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJSAUOWxEeOBKf64hQ5SMA" type="6002"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJSAUeWxEeOBKf64hQ5SMA" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJSnYOWxEeOBKf64hQ5SMA" type="6003"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJTOcOWxEeOBKf64hQ5SMA" y="-20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJT1gOWxEeOBKf64hQ5SMA" type="6005"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJUckOWxEeOBKf64hQ5SMA" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJVDoOWxEeOBKf64hQ5SMA" type="6033"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJVqsOWxEeOBKf64hQ5SMA" y="20"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_tJWRwOWxEeOBKf64hQ5SMA" type="6034"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_tJWRweWxEeOBKf64hQ5SMA" y="-20"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_tJO9AeWxEeOBKf64hQ5SMA"/> + <element xmi:type="uml:Association" href="origin.uml#_tI4-wOWxEeOBKf64hQ5SMA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tJO9AuWxEeOBKf64hQ5SMA" points="[14, -6, -175, 74]$[187, -89, -2, -9]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tL0W8OWxEeOBKf64hQ5SMA" id="(0.872,0.046875)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tL0-AOWxEeOBKf64hQ5SMA" id="(0.4405594405594406,0.09)"/> + </edges> + </notation:Diagram> + <css:ModelStyleSheets xmi:id="_JKTQgOWxEeOBKf64hQ5SMA"/> + <notation:Diagram xmi:id="_5on14OWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ChangingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_6K6qoOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_6K7RsOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K74wOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K74weWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K74wuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K74w-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K74xOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f0OWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f0eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f0uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f0-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f1OWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f1eWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f1uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f1-WxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f2OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f2eWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="origin.uml#_6K2ZMOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K6qoeWxEeOBKf64hQ5SMA" x="63" y="64" width="344" height="236"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_5on14eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_5on14uWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_-8jNoOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="DeletingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_AQhW8OWyEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_AQh-AOWyEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_AQilEOWyEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_AQilEeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_AQilEuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_AQilE-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQilFOWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_AQilFeWyEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_AQilFuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_AQilF-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_AQilGOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQilGeWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_AQjMIOWyEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_AQjMIeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_AQjMIuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_AQjMI-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQjMJOWyEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="origin.uml#_AQdFgOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQhW8eWyEeOBKf64hQ5SMA" x="370" y="94" width="229" height="204"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_-8jNoeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_-8jNouWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_E-ErMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="AddingDiagram" measurementUnit="Pixel"> + <styles xmi:type="notation:DiagramStyle" xmi:id="_E-ErMeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E-ErMuWyEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_KWxOMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ConflictingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_K5WW0OWyEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_K5W94OWyEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_K5Xk8OWyEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_K5Xk8eWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_K5Xk8uWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_K5Xk8-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5Xk9OWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_K5Xk9eWyEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_K5Xk9uWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_K5Xk9-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_K5Xk-OWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5Xk-eWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_K5YMAOWyEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_K5YMAeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_K5YMAuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_K5YMA-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5YMBOWyEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="origin.uml#_K5SscOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5WW0eWyEeOBKf64hQ5SMA" x="68" y="100" width="137" height="171"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_NlLq8OWyEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_NlMSAOWyEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlMSAeWyEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlMSAuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlMSA-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlMSBOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlMSBeWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5EOWyEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5EeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5EuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5E-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5FOWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5FeWyEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5FuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5F-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5GOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5GeWyEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="origin.uml#_NlHZgOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlLq8eWyEeOBKf64hQ5SMA" x="305" y="92" width="162" height="180"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_KWxOMeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_KWxOMuWyEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="origin.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> +</xmi:XMI> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.uml new file mode 100644 index 000000000..4a2588c25 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/origin.uml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_EbOSQOWxEeOBKf64hQ5SMA" name="model"> + <packagedElement xmi:type="uml:Package" xmi:id="_LRkfAOWxEeOBKf64hQ5SMA" name="OldHoldingPackage"> + <packagedElement xmi:type="uml:Class" xmi:id="_MyvW0OWxEeOBKf64hQ5SMA" name="MovingNode"/> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_P3e6MOWxEeOBKf64hQ5SMA" name="NewHoldingPackage"/> + <packagedElement xmi:type="uml:Class" xmi:id="_ngB40OWxEeOBKf64hQ5SMA" name="AssociationSource"> + <ownedAttribute xmi:type="uml:Property" xmi:id="_tI17cOWxEeOBKf64hQ5SMA" name="associationOldTarget" type="_pOBrsOWxEeOBKf64hQ5SMA" association="_tI4-wOWxEeOBKf64hQ5SMA"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tI17ceWxEeOBKf64hQ5SMA" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tI17cuWxEeOBKf64hQ5SMA" value="1"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_pOBrsOWxEeOBKf64hQ5SMA" name="AssociationOldTarget"/> + <packagedElement xmi:type="uml:Class" xmi:id="_rJ1REOWxEeOBKf64hQ5SMA" name="AssociationNewTarget"/> + <packagedElement xmi:type="uml:Association" xmi:id="_tI4-wOWxEeOBKf64hQ5SMA" name="A_associationSource_associationOldTarget_1" memberEnd="_tI4-weWxEeOBKf64hQ5SMA _tI17cOWxEeOBKf64hQ5SMA" navigableOwnedEnd="_tI4-weWxEeOBKf64hQ5SMA"> + <ownedEnd xmi:type="uml:Property" xmi:id="_tI4-weWxEeOBKf64hQ5SMA" name="associationSource" type="_ngB40OWxEeOBKf64hQ5SMA" association="_tI4-wOWxEeOBKf64hQ5SMA"> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tI4-wuWxEeOBKf64hQ5SMA" value="1"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tI4-w-WxEeOBKf64hQ5SMA" value="1"/> + </ownedEnd> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_6K2ZMOWxEeOBKf64hQ5SMA" name="ChangingNameNode"/> + <packagedElement xmi:type="uml:Class" xmi:id="_AQdFgOWyEeOBKf64hQ5SMA" name="NodeToDelete"/> + <packagedElement xmi:type="uml:Class" xmi:id="_K5SscOWyEeOBKf64hQ5SMA" name="ConflictingNode"/> + <packagedElement xmi:type="uml:Class" xmi:id="_NlHZgOWyEeOBKf64hQ5SMA" name="PseudoConflictingNode"/> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.di b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.di new file mode 100644 index 000000000..bf9abab34 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.notation b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.notation new file mode 100644 index 000000000..19ed55d88 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.notation @@ -0,0 +1,264 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML"> + <notation:Diagram xmi:id="_EgGyQOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="MovingNodeDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_LTZrAOWxEeOBKf64hQ5SMA" type="2007"> + <children xmi:type="notation:DecorationNode" xmi:id="_LTkDEOWxEeOBKf64hQ5SMA" type="5026"/> + <children xmi:type="notation:DecorationNode" xmi:id="_LTmfUOWxEeOBKf64hQ5SMA" type="7016"> + <children xmi:type="notation:Shape" xmi:id="_MzOfAOWxEeOBKf64hQ5SMA" type="3010"> + <children xmi:type="notation:DecorationNode" xmi:id="_MzPtIOWxEeOBKf64hQ5SMA" type="5014"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzUloOWxEeOBKf64hQ5SMA" type="7011"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzUloeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzUlouWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzUlo-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzUlpOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzVMsOWxEeOBKf64hQ5SMA" type="7012"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzVMseWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzVMsuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVMs-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVMtOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_MzVzwOWxEeOBKf64hQ5SMA" type="7013"> + <styles xmi:type="notation:TitleStyle" xmi:id="_MzVzweWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_MzVzwuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_MzVzw-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzVzxOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_MyvW0OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzOfAeWxEeOBKf64hQ5SMA" x="16" y="22" width="142" height="101"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_LTmfUeWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTmfUuWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Package" href="right.uml#_LRkfAOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LTZrAeWxEeOBKf64hQ5SMA" x="28" y="41" width="226" height="220"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_P3jLoOWxEeOBKf64hQ5SMA" type="2007"> + <children xmi:type="notation:DecorationNode" xmi:id="_P3jysOWxEeOBKf64hQ5SMA" type="5026"/> + <children xmi:type="notation:DecorationNode" xmi:id="_P3kZwOWxEeOBKf64hQ5SMA" type="7016"> + <styles xmi:type="notation:TitleStyle" xmi:id="_P3kZweWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3kZwuWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Package" href="right.uml#_P3e6MOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P3jLoeWxEeOBKf64hQ5SMA" x="289" y="40" width="215" height="221"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_ngGKQOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_ngHYYOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngHYYeWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngHYYuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngHYY-WxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngHYZOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngHYZeWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngImgOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngImgeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngImguWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngImg-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngImhOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_ngJNkOWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_ngJNkeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_ngJNkuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ngJNk-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngJNlOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_ngB40OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ngGKQeWxEeOBKf64hQ5SMA" x="537" y="127" width="125" height="128"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_pOFWEOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_pOGkMOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOHLQOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOHLQeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOHLQuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOHLQ-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOHLROWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOHyUOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOHyUeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOHyUuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOIZYOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOIZYeWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_pOJAcOWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_pOJAceWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_pOJAcuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_pOJAc-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOJAdOWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_pOBrsOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pOFWEeWxEeOBKf64hQ5SMA" x="772" y="44"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_rJ5igOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_rJ6JkOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ6woOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ6woeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ6wouWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ6wo-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ6wpOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ7XsOWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ7XseWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ7XsuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ7Xs-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ7XtOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_rJ8l0OWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_rJ8l0eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_rJ8l0uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_rJ8l0-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ8l1OWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_rJ1REOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJ5igeWxEeOBKf64hQ5SMA" x="772" y="161" width="146" height="126"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_EgGyQeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_EgGyQuWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <css:ModelStyleSheets xmi:id="_JKTQgOWxEeOBKf64hQ5SMA"/> + <notation:Diagram xmi:id="_5on14OWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ChangingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_6K6qoOWxEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_6K7RsOWxEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K74wOWxEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K74weWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K74wuWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K74w-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K74xOWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f0OWxEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f0eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f0uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f0-WxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f1OWxEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6K8f1eWxEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6K8f1uWxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6K8f1-WxEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6K8f2OWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K8f2eWxEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_6K2ZMOWxEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6K6qoeWxEeOBKf64hQ5SMA" x="63" y="64" width="344" height="236"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_5on14eWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_5on14uWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_-8jNoOWxEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="DeletingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_AQhW8OWyEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_AQh-AOWyEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_AQilEOWyEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_AQilEeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_AQilEuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_AQilE-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQilFOWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_AQilFeWyEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_AQilFuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_AQilF-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_AQilGOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQilGeWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_AQjMIOWyEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_AQjMIeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_AQjMIuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_AQjMI-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQjMJOWyEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_AQdFgOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AQhW8eWyEeOBKf64hQ5SMA" x="370" y="94" width="229" height="204"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_-8jNoeWxEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_-8jNouWxEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_E-ErMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="AddingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_fn_8oOZhEeO4t6DpSp63uw" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_foDnAOZhEeO4t6DpSp63uw" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_foEOEOZhEeO4t6DpSp63uw" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_foEOEeZhEeO4t6DpSp63uw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_foEOEuZhEeO4t6DpSp63uw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_foEOE-ZhEeO4t6DpSp63uw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_foEOFOZhEeO4t6DpSp63uw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_foE1IOZhEeO4t6DpSp63uw" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_foE1IeZhEeO4t6DpSp63uw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_foE1IuZhEeO4t6DpSp63uw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_foE1I-ZhEeO4t6DpSp63uw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_foE1JOZhEeO4t6DpSp63uw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_foE1JeZhEeO4t6DpSp63uw" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_foE1JuZhEeO4t6DpSp63uw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_foE1J-ZhEeO4t6DpSp63uw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_foE1KOZhEeO4t6DpSp63uw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_foE1KeZhEeO4t6DpSp63uw"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_fmruAOZhEeO4t6DpSp63uw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fn_8oeZhEeO4t6DpSp63uw" x="271" y="73"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_E-ErMeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E-ErMuWyEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> + <notation:Diagram xmi:id="_KWxOMOWyEeOBKf64hQ5SMA" type="PapyrusUMLClassDiagram" name="ConflictingDiagram" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_K5WW0OWyEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_K5W94OWyEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_K5Xk8OWyEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_K5Xk8eWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_K5Xk8uWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_K5Xk8-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5Xk9OWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_K5Xk9eWyEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_K5Xk9uWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_K5Xk9-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_K5Xk-OWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5Xk-eWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_K5YMAOWyEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_K5YMAeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_K5YMAuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_K5YMA-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5YMBOWyEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_K5SscOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K5WW0eWyEeOBKf64hQ5SMA" x="68" y="100" width="137" height="171"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_NlLq8OWyEeOBKf64hQ5SMA" type="2008"> + <children xmi:type="notation:DecorationNode" xmi:id="_NlMSAOWyEeOBKf64hQ5SMA" type="5029"/> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlMSAeWyEeOBKf64hQ5SMA" type="7017"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlMSAuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlMSA-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlMSBOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlMSBeWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5EOWyEeOBKf64hQ5SMA" type="7018"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5EeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5EuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5E-WyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5FOWyEeOBKf64hQ5SMA"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_NlM5FeWyEeOBKf64hQ5SMA" type="7019"> + <styles xmi:type="notation:TitleStyle" xmi:id="_NlM5FuWyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_NlM5F-WyEeOBKf64hQ5SMA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_NlM5GOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlM5GeWyEeOBKf64hQ5SMA"/> + </children> + <element xmi:type="uml:Class" href="right.uml#_NlHZgOWyEeOBKf64hQ5SMA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NlLq8eWyEeOBKf64hQ5SMA" x="305" y="92" width="162" height="180"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_KWxOMeWyEeOBKf64hQ5SMA"/> + <styles xmi:type="style:PapyrusViewStyle" xmi:id="_KWxOMuWyEeOBKf64hQ5SMA"> + <owner xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </styles> + <element xmi:type="uml:Model" href="right.uml#_EbOSQOWxEeOBKf64hQ5SMA"/> + </notation:Diagram> +</xmi:XMI> diff --git a/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.uml b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.uml new file mode 100644 index 000000000..e6d41de58 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.diagram.papyrus.tests/src/org/eclipse/emf/compare/diagram/papyrus/tests/groups/data/a1/right.uml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_EbOSQOWxEeOBKf64hQ5SMA" name="model"> + <packagedElement xmi:type="uml:Package" xmi:id="_LRkfAOWxEeOBKf64hQ5SMA" name="OldHoldingPackage"> + <packagedElement xmi:type="uml:Class" xmi:id="_MyvW0OWxEeOBKf64hQ5SMA" name="MovingNode"/> + </packagedElement> + <packagedElement xmi:type="uml:Package" xmi:id="_P3e6MOWxEeOBKf64hQ5SMA" name="NewHoldingPackage"/> + <packagedElement xmi:type="uml:Class" xmi:id="_ngB40OWxEeOBKf64hQ5SMA" name="AssociationSource"/> + <packagedElement xmi:type="uml:Class" xmi:id="_pOBrsOWxEeOBKf64hQ5SMA" name="AssociationOldTarget"/> + <packagedElement xmi:type="uml:Class" xmi:id="_rJ1REOWxEeOBKf64hQ5SMA" name="AssociationNewTarget"/> + <packagedElement xmi:type="uml:Class" xmi:id="_6K2ZMOWxEeOBKf64hQ5SMA" name="ChangingNameNode"/> + <packagedElement xmi:type="uml:Class" xmi:id="_AQdFgOWyEeOBKf64hQ5SMA" name="NodeToDelete"/> + <packagedElement xmi:type="uml:Class" xmi:id="_K5SscOWyEeOBKf64hQ5SMA" name="ConflictingNode_ConflictingName"/> + <packagedElement xmi:type="uml:Class" xmi:id="_NlHZgOWyEeOBKf64hQ5SMA" name="PseudoConflictingNode_NewName"/> + <packagedElement xmi:type="uml:Class" xmi:id="_fmruAOZhEeO4t6DpSp63uw" name="NewNode"/> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF index 5fc250c5f..4c547294a 100644 --- a/plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.diagram/META-INF/MANIFEST.MF @@ -22,7 +22,8 @@ Export-Package: org.eclipse.emf.compare.diagram.internal; org.eclipse.emf.compare.diagram.ide.ecoretools.tests, org.eclipse.emf.compare.diagram.ide.ui, org.eclipse.emf.compare.diagram.ide.ui.ecoretools, - org.eclipse.emf.compare.diagram.ide.ui.papyrus", + org.eclipse.emf.compare.diagram.ide.ui.papyrus, + org.eclipse.emf.compare.diagram.papyrus.tests", org.eclipse.emf.compare.diagram.internal.extensions; x-friends:="org.eclipse.emf.compare.diagram.ecoretools.tests, org.eclipse.emf.compare.diagram.edit, diff --git a/plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF index bdb6d0d77..4c2f150ac 100644 --- a/plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.rcp.ui/META-INF/MANIFEST.MF @@ -35,12 +35,12 @@ Export-Package: org.eclipse.emf.compare.rcp.ui, org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.impl;x-friends:="org.eclipse.emf.compare.ide.ui", org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.item.impl;x-friends:="org.eclipse.emf.compare.ide.ui", org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.actions;x-friends:="org.eclipse.emf.compare.ide.ui", - org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters;x-friends:="org.eclipse.emf.compare.ide.ui", - org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl;x-friends:="org.eclipse.emf.compare.ide.ui", + org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters;x-friends:="org.eclipse.emf.compare.ide.ui,org.eclipse.emf.compare.diagram.papyrus.tests,org.eclipse.emf.compare.uml2.rcp.ui.tests", + org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl;x-friends:="org.eclipse.emf.compare.ide.ui,org.eclipse.emf.compare.diagram.papyrus.tests", org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups;x-friends:="org.eclipse.emf.compare.ide.ui", org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.extender;x-friends:="org.eclipse.emf.compare.ide.ui", - org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl;x-friends:="org.eclipse.emf.compare.ide.ui", - org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider;x-friends:="org.eclipse.emf.compare.ide.ui", + org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl;x-friends:="org.eclipse.emf.compare.ide.ui,org.eclipse.emf.compare.diagram.papyrus.tests", + org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider;x-friends:="org.eclipse.emf.compare.ide.ui,org.eclipse.emf.compare.diagram.papyrus.tests", org.eclipse.emf.compare.rcp.ui.internal.util;x-friends:="org.eclipse.emf.compare.ide.ui", org.eclipse.emf.compare.rcp.ui.mergeviewer, org.eclipse.emf.compare.rcp.ui.mergeviewer.item, diff --git a/plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF index f52bfcff7..f93851ec0 100644 --- a/plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.uml2.edit/META-INF/MANIFEST.MF @@ -21,5 +21,5 @@ Bundle-ActivationPolicy: lazy Import-Package: com.google.common.base;version="[11.0.0,16.0.0)", org.eclipse.emf.compare.provider Export-Package: org.eclipse.emf.compare.uml2.internal.provider;x-internal:=true, - org.eclipse.emf.compare.uml2.internal.provider.custom;x-internal:=true, - org.eclipse.emf.compare.uml2.internal.provider.decorator;x-internal:=true + org.eclipse.emf.compare.uml2.internal.provider.custom;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests", + org.eclipse.emf.compare.uml2.internal.provider.decorator;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests" diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF index afa34ac33..59aeb761c 100644 --- a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/META-INF/MANIFEST.MF @@ -20,3 +20,4 @@ Bundle-Localization: plugin Import-Package: com.google.common.base;version="[11.0.0,16.0.0)", com.google.common.collect;version="[11.0.0,16.0.0)", com.google.common.eventbus;version="[11.0.0,16.0.0)" +Export-Package: org.eclipse.emf.compare.uml2.rcp.ui.tests.groups diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/AbstractDifferenceOrderTest.java b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/AbstractDifferenceOrderTest.java new file mode 100644 index 000000000..41f0d0d0d --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/AbstractDifferenceOrderTest.java @@ -0,0 +1,339 @@ +/******************************************************************************* + * Copyright (c) 2014 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.uml2.rcp.ui.tests.groups; + +import com.google.common.base.Joiner; +import com.google.common.base.Predicate; +import com.google.common.collect.Collections2; +import com.google.common.collect.Iterators; +import com.google.common.collect.Lists; +import com.google.common.eventbus.EventBus; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.impl.AdapterImpl; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.TreeIterator; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.compare.Comparison; +import org.eclipse.emf.compare.EMFCompare; +import org.eclipse.emf.compare.EMFCompare.Builder; +import org.eclipse.emf.compare.postprocessor.IPostProcessor; +import org.eclipse.emf.compare.postprocessor.IPostProcessor.Descriptor.Registry; +import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.StructureMergeViewerFilter; +import org.eclipse.emf.compare.scope.DefaultComparisonScope; +import org.eclipse.emf.compare.scope.IComparisonScope; +import org.eclipse.emf.compare.tests.nodes.Node; +import org.eclipse.emf.compare.tests.nodes.NodesFactory; +import org.eclipse.emf.compare.tests.nodes.util.NodesResourceFactoryImpl; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.util.ECrossReferenceAdapter; +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.tree.TreeNode; +import org.eclipse.emf.edit.tree.TreePackage; +import org.junit.Assert; +import org.junit.Before; + +/** + * Abstract class used to test differences order the way they would be displayed in the structure merge + * viewer. + * + * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> + */ +public abstract class AbstractDifferenceOrderTest { + + /** + * Resulting comparison. + */ + private Comparison comparison; + + private ECrossReferenceAdapter crossReferenceAdapter; + + private AdapterFactoryItemDelegator itemDelegator; + + /** + * Predicate mocking the {@link StructureMergeViewerFilter} behavior. + */ + private Predicate<EObject> viewerFilterPredicate; + + /** + * {@link StructureMergeViewerFilter} use to filters elements from a {@link TreeNode}. + */ + private StructureMergeViewerFilter filter; + + @Before + public void before() throws IOException { + + final Collection<AdapterFactory> factories = Lists.newArrayList(); + /* + * Adds all AdapterFactories to display the tree the same way it's being displayed in the structure + * merge viewer. + */ + factories.addAll(getAdaptersFactory()); + + final AdapterFactory composedAdapterFactory = new ComposedAdapterFactory(factories); + itemDelegator = new AdapterFactoryItemDelegator(composedAdapterFactory); + + comparison = getComparison(getInput()); + crossReferenceAdapter = new ECrossReferenceAdapter() { + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.ecore.util.ECrossReferenceAdapter#isIncluded(org.eclipse.emf.ecore.EReference) + */ + @Override + protected boolean isIncluded(EReference eReference) { + return eReference == TreePackage.Literals.TREE_NODE__DATA; + } + }; + filter = new StructureMergeViewerFilter(new EventBus()); + viewerFilterPredicate = new Predicate<EObject>() { + public boolean apply(EObject input) { + AdapterImpl adapter = new AdapterImpl(); + adapter.setTarget(input); + return filter.select(null, null, adapter); + } + }; + + } + + /** + * Compares the expected result with the list of roots. + * + * @param expectedResult + * Resource holding a Nodes models. This "nodes" model represent the expected. + * @param actualTrees + * Actual trees that the viewer would display (without any filter being applied). + */ + protected void compareTree(Resource expectedResult, List<? extends TreeNode> actualTrees) { + List<? extends TreeNode> nonFilteredActualRoot = Lists.newArrayList(Collections2.filter(actualTrees, + viewerFilterPredicate)); + EList<EObject> expectedContent = expectedResult.getContents(); + Assert.assertEquals(expectedContent.size(), nonFilteredActualRoot.size()); + + for (int i = 0; i < expectedContent.size(); i++) { + Node expectedRootNode = (Node)expectedContent.get(i); + TreeNode actualRoot = nonFilteredActualRoot.get(i); + TreeIterator<EObject> expectedIterator = expectedRootNode.eAllContents(); + // Filters elements the way the structure merge viewer would with this filter. + final Iterator<EObject> realIterator = Iterators.filter(actualRoot.eAllContents(), + viewerFilterPredicate); + // Compares + compareTree(expectedIterator, realIterator); + } + + } + + private void compareTree(TreeIterator<EObject> expectedIterator, final Iterator<EObject> realIterator) { + while (expectedIterator.hasNext()) { + Node expectedElement = (Node)expectedIterator.next(); + Assert.assertTrue("No match for element " + expectedElement.getName(), realIterator.hasNext()); //$NON-NLS-1$ + EObject actualElem = realIterator.next(); + + // Checks same name. + Assert.assertEquals(getErrorMessage(actualElem), expectedElement.getName(), itemDelegator + .getText(actualElem)); + if (expectedElement.eContainer() != null) { + final Collection<Node> expectedChildren = expectedElement.getContainmentRef1(); + // Checks same number of children. + Assert.assertEquals("Incorrect children for " + getFullPath(actualElem), //$NON-NLS-1$ + expectedChildren.size(), Collections2.filter(((TreeNode)actualElem).getChildren(), + viewerFilterPredicate).size()); + } + } + } + + /** + * @return List of AdapterFactory used to fill the {@link AdapterFactoryItemDelegator} + */ + protected abstract List<AdapterFactory> getAdaptersFactory(); + + /** + * @return Input data for the comparison. + */ + protected abstract NotifierScopeProvider getInput(); + + protected Comparison getComparison() { + return comparison; + } + + /** + * Returns the resulting comparison. + * + * @param scopeProvider + * Input of the comparison. + * @return {@link Comparison} + * @throws IOException + */ + private Comparison getComparison(NotifierScopeProvider scopeProvider) throws IOException { + final IComparisonScope scope = new DefaultComparisonScope(scopeProvider.getLeft(), scopeProvider + .getRight(), scopeProvider.getOrigin()); + Builder builder = EMFCompare.builder(); + Registry<?> postProcessorRegistry = getPostProcessorRegistry(); + if (postProcessorRegistry != null) { + builder.setPostProcessorRegistry(postProcessorRegistry); + } + return builder.build().compare(scope); + } + + protected ECrossReferenceAdapter getCrossReferenceAdapter() { + return crossReferenceAdapter; + } + + /** + * Creates a understandable error message. + * + * @param actual + * @return + */ + private String getErrorMessage(EObject actual) { + StringBuilder message = new StringBuilder(); + message.append("Content error on \"").append(getFullPath(actual)).append("\""); //$NON-NLS-1$ //$NON-NLS-2$ + return message.toString(); + } + + protected StructureMergeViewerFilter getFilter() { + return filter; + } + + /** + * Creates a String representing the full path of the element. + * + * @param eObject + * @return + */ + private String getFullPath(EObject eObject) { + final String result; + if (eObject != null) { + List<String> ancestors = new ArrayList<String>(); + ancestors.add(itemDelegator.getText(eObject)); + EObject eContainer = eObject.eContainer(); + while (eContainer != null) { + ancestors.add(itemDelegator.getText(eContainer)); + eContainer = eContainer.eContainer(); + } + result = Joiner.on("::").join(Lists.reverse(ancestors)); //$NON-NLS-1$ + + } else { + result = null; + } + return result; + } + + /** + * Gets the {@link IPostProcessor.Descriptor.Registry} to use for the comparison or null if the default + * registry has to be used. + * + * @return + */ + protected IPostProcessor.Descriptor.Registry<?> getPostProcessorRegistry() { + return null; + } + + // Used with TestWriterHelper for writing the expected model into a file. + protected AdapterFactoryItemDelegator getItemDelegator() { + return itemDelegator; + } + + /** + * Creates a {@link TestWriterHelper} for this test. + * + * @return + */ + protected final TestWriterHelper createTestHelper() { + return new TestWriterHelper(); + } + + /** + * This class aims to help the writer of the test. + * <p> + * Once the tree in the {@link StructureMergeViewerFilter} has been MANUALLY checked, this class helps to + * serialize it in a resource. This resources holds a "Nodes" model. It represents the tree as it is + * displayed in the structure merge viewer. + * </p> + * model + * + * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> + */ + protected final class TestWriterHelper { + + private TestWriterHelper() { + } + + /** + * Creates the expected model from a list of TreeNode. + * <p> + * This method translates a list of {@link TreeNode} into a Nodes model. This model represents the + * tree as it is display in the StructureMergeViewer. + * </p> + * + * @param fileLocation + * Location of newly created file will be serialized. + * @param roots + * Lists of roots to serialize in the model. + */ + public void createExpectedModel(String fileLocation, List<? extends TreeNode> roots) { + URI fileURI = URI.createFileURI(fileLocation); + Resource.Factory resourceFactory = new NodesResourceFactoryImpl(); + // resourceFactory cannot be null + Resource res = resourceFactory.createResource(fileURI); + fillTree(res, roots); + try { + res.save(Collections.EMPTY_MAP); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + /** + * Translates each {@link TreeNode} into a {@link Node}. + * <p> + * The label of each {@link TreeNode} displayed in the viewer is set as label of the node + * </p> + * + * @param n + * @return + */ + private Node createNode(TreeNode n) { + Node newNode = null; + if (viewerFilterPredicate.apply(n)) { + newNode = NodesFactory.eINSTANCE.createNode(); + newNode.setName(itemDelegator.getText(n)); + for (TreeNode child : n.getChildren()) { + Node createNode = createNode(child); + if (createNode != null) { + newNode.getContainmentRef1().add(createNode); + } + } + } + return newNode; + } + + private void fillTree(Resource resource, List<? extends TreeNode> roots) { + for (TreeNode n : roots) { + Node createNode = createNode(n); + if (createNode != null) { + resource.getContents().add(createNode); + } + } + } + } +} diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/NotifierScopeProvider.java b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/NotifierScopeProvider.java new file mode 100644 index 000000000..c124577f3 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/NotifierScopeProvider.java @@ -0,0 +1,28 @@ +/******************************************************************************* + * Copyright (c) 2014 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.uml2.rcp.ui.tests.groups; + +import java.io.IOException; + +import org.eclipse.emf.common.notify.Notifier; + +/** + * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> + */ +public interface NotifierScopeProvider { + + Notifier getLeft() throws IOException; + + Notifier getRight() throws IOException; + + Notifier getOrigin() throws IOException; + +} diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java index 6571b7abb..4e408dc58 100644 --- a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java +++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/UMLDifferencesOrderTest.java @@ -11,30 +11,18 @@ package org.eclipse.emf.compare.uml2.rcp.ui.tests.groups; import static com.google.common.base.Predicates.alwaysTrue; -import static org.junit.Assert.assertEquals; -import com.google.common.base.Predicate; -import com.google.common.collect.Collections2; -import com.google.common.collect.Iterators; import com.google.common.collect.Lists; -import com.google.common.eventbus.EventBus; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; import java.util.List; import java.util.regex.Pattern; import org.eclipse.emf.common.notify.AdapterFactory; -import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.eclipse.emf.compare.Comparison; -import org.eclipse.emf.compare.EMFCompare; -import org.eclipse.emf.compare.EMFCompare.Builder; import org.eclipse.emf.compare.postprocessor.BasicPostProcessorDescriptorImpl; +import org.eclipse.emf.compare.postprocessor.IPostProcessor.Descriptor.Registry; import org.eclipse.emf.compare.postprocessor.PostProcessorDescriptorRegistryImpl; import org.eclipse.emf.compare.provider.spec.CompareItemProviderAdapterFactorySpec; -import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.StructureMergeViewerFilter; import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.CascadingDifferencesFilter; import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.EmptyMatchedResourcesFilter; import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.IdenticalElementsFilter; @@ -42,278 +30,103 @@ import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.BasicDifferenceGroupImpl; import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeItemProviderAdapterFactorySpec; import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.IDifferenceGroup; -import org.eclipse.emf.compare.scope.DefaultComparisonScope; -import org.eclipse.emf.compare.scope.IComparisonScope; -import org.eclipse.emf.compare.tests.edit.data.ResourceScopeProvider; import org.eclipse.emf.compare.tests.framework.AbstractInputData; -import org.eclipse.emf.compare.tests.nodes.Node; -import org.eclipse.emf.compare.tests.nodes.NodeSingleValueAttribute; -import org.eclipse.emf.compare.tests.nodes.NodesFactory; import org.eclipse.emf.compare.uml2.internal.postprocessor.UMLPostProcessor; import org.eclipse.emf.compare.uml2.internal.provider.custom.UMLCompareCustomItemProviderAdapterFactory; import org.eclipse.emf.compare.uml2.internal.provider.decorator.UMLCompareItemProviderDecoratorAdapterFactory; import org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters.UMLRefinedElementsFilter; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.util.ECrossReferenceAdapter; -import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; -import org.eclipse.emf.edit.provider.ComposedAdapterFactory; import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; import org.eclipse.emf.edit.tree.TreeNode; -import org.eclipse.emf.edit.tree.TreePackage; import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory; -import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; /** - * Tests the order of the differences in the StructuredMergeView for UML differences. + * Tests the order of the differences the way they would be displayed in the structure merge viewer for UML + * differences. * * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> */ @SuppressWarnings("restriction") -public class UMLDifferencesOrderTest { - /** - * Holds the expected result. - */ - private static final List<Node> expectedRoot = new ArrayList<Node>(2); - - /** - * Predicate to compute the expected result when the {@link UMLRefinedElementsFilter} is activated. - */ - private static final Predicate<EObject> FILTER_ELEMENT_PREDICATE = new Predicate<EObject>() { +public class UMLDifferencesOrderTest extends AbstractDifferenceOrderTest { - public boolean apply(EObject input) { - return !Boolean.valueOf(((NodeSingleValueAttribute)input).getSingleValuedAttribute()) - .booleanValue(); - } - }; - - @SuppressWarnings("nls") - @BeforeClass - public static void beforeClass() { - // @formatter:off - //Creates a structure holding the expected result - Node rootDiff = newNode("<Model> model",null); - expectedRoot.add(rootDiff); - newNode("<Package> OldHoldingPackage",rootDiff); - Node l1 = newNode("<Package> NewHoldingPackage",rootDiff); - newNode("<Class> MovingNode [packagedElement move]",l1); - l1 = newNode("<Class> AssociationSource",rootDiff,true); - Node l2 = newNode("<Property> associationOldTarget : AssociationOl... [ownedAttribute delete]",l1,true); - newNode("<Class> AssociationOldTarget [type unset]",l2,true); - newNode("<Literal Integer> 1 [lowerValue delete]",l2,true); - newNode("<Literal Unlimited Natural> 1 [upperValue delete]",l2,true); - newNode("<Association> A_associationSource_associationOl... [association unset]",l2,true); - newNode("<Class> AssociationOldTarget",rootDiff); - newNode("<Class> AssociationNewTarget",rootDiff); - l1 = newNode("<Class> ChangingNameNode_NewName",rootDiff); - newNode("ChangingNameNode_NewName [name changed]",l1); - l1 = newNode("<Class> PseudoConflictingNode_NewName",rootDiff); - newNode("PseudoConflictingNode [name changed]",l1); - newNode("PseudoConflictingNode [name changed]",l1); - newNode("<Class> NewNode [packagedElement add]",rootDiff); - l1 = newNode("<Association> A_associationSource_associationOl... [packagedElement delete]",rootDiff); - newNode("<Property> associationSource : AssociationSource [memberEnd delete]",l1,true); - newNode("<Property> associationOldTarget : AssociationOl... [memberEnd delete]",l1,true); - l2 = newNode("<Property> associationSource : AssociationSource [ownedEnd delete]",l1,true); - newNode("<Class> AssociationSource [type unset]",l2,true); - newNode("<Literal Integer> 1 [lowerValue delete]",l2,true); - newNode("<Literal Unlimited Natural> 1 [upperValue delete]",l2,true); - newNode("<Association> A_associationSource_associationOl... [association unset]",l2,true); - newNode("<Property> associationSource : AssociationSource [navigableOwnedEnd delete]",l1,true); - newNode("<Class> NodeToDelete [packagedElement delete]",rootDiff); - l1 = newNode("<Class> ConflictingNode [packagedElement delete]",rootDiff); - newNode("ConflictingNode_ConflictingName [name set]",l1); - expectedRoot.add(newNode( "left.uml <-> right.uml (origin.uml)",null)); - // @formatter:on - - } - - /** - * Resulting comparison. - */ - private Comparison comparison; - - private ECrossReferenceAdapter crossReferenceAdapter; - - private AdapterFactoryItemDelegator itemDelegator; - - private StructureMergeViewerFilter filter; + private ExpectedResultData expectedResult; @Before + @Override public void before() throws IOException { - - final Collection<AdapterFactory> factories = Lists.newArrayList(); - factories.add(new CompareItemProviderAdapterFactorySpec()); - factories.add(new TreeItemProviderAdapterFactorySpec()); - factories.add(new UMLCompareCustomItemProviderAdapterFactory()); - factories.add(new UMLItemProviderAdapterFactory()); - factories.add(new UMLCompareItemProviderDecoratorAdapterFactory()); - factories.add(new ReflectiveItemProviderAdapterFactory()); - - final AdapterFactory composedAdapterFactory = new ComposedAdapterFactory(factories); - itemDelegator = new AdapterFactoryItemDelegator(composedAdapterFactory); - - comparison = getComparison(new DataInput()); - crossReferenceAdapter = new ECrossReferenceAdapter() { - /** - * {@inheritDoc} - * - * @see org.eclipse.emf.ecore.util.ECrossReferenceAdapter#isIncluded(org.eclipse.emf.ecore.EReference) - */ - @Override - protected boolean isIncluded(EReference eReference) { - return eReference == TreePackage.Literals.TREE_NODE__DATA; - } - }; - // Sets the basic setting for the filter - filter = new StructureMergeViewerFilter(new EventBus()); - IdenticalElementsFilter identicalFilter = new IdenticalElementsFilter(); - EmptyMatchedResourcesFilter emptyResourceFilter = new EmptyMatchedResourcesFilter(); - PseudoConflictsFilter pseudoConflictFilter = new PseudoConflictsFilter(); - CascadingDifferencesFilter cascadingFilter = new CascadingDifferencesFilter(); - filter.removeFilter(cascadingFilter); - filter.removeFilter(pseudoConflictFilter); - filter.removeFilter(emptyResourceFilter); - filter.removeFilter(identicalFilter); + super.before(); + getFilter().removeFilter(new CascadingDifferencesFilter()); + getFilter().removeFilter(new PseudoConflictsFilter()); + getFilter().removeFilter(new EmptyMatchedResourcesFilter()); + getFilter().removeFilter(new IdenticalElementsFilter()); + expectedResult = new ExpectedResultData(); } - /** - * Test the representation structured of UML differences without the UML refine filter activated. - */ - @Test - public void testDiffOrder() { - IDifferenceGroup group = new BasicDifferenceGroupImpl(comparison, alwaysTrue(), crossReferenceAdapter); - List<? extends TreeNode> roots = group.getChildren(); - assertEquals(2, roots.size()); - - UMLRefinedElementsFilter umlRefineFilter = new UMLRefinedElementsFilter(); - filter.removeFilter(umlRefineFilter); - - for (int i = 0; i < expectedRoot.size(); i++) { - compareTree(expectedRoot.get(i), false, roots.get(i)); - } - + @Override + protected NotifierScopeProvider getInput() { + return new DataInput(); } - /** - * Test the representation structured of UML differences with the UML refine filter activated. - */ - @Test - public void testDiffOrderWithUMLRefineFilter() { - IDifferenceGroup group = new BasicDifferenceGroupImpl(comparison, alwaysTrue(), crossReferenceAdapter); - List<? extends TreeNode> roots = group.getChildren(); - assertEquals(2, roots.size()); - - UMLRefinedElementsFilter umlRefineFilter = new UMLRefinedElementsFilter(); - filter.addFilter(umlRefineFilter); - - for (int i = 0; i < expectedRoot.size(); i++) { - compareTree(expectedRoot.get(i), true, roots.get(i)); - } - + @Override + protected List<AdapterFactory> getAdaptersFactory() { + return Lists.<AdapterFactory> newArrayList(new CompareItemProviderAdapterFactorySpec(), + new TreeItemProviderAdapterFactorySpec(), new UMLCompareCustomItemProviderAdapterFactory(), + new UMLItemProviderAdapterFactory(), new UMLCompareItemProviderDecoratorAdapterFactory(), + new ReflectiveItemProviderAdapterFactory()); } - /** - * Get the comparison using the {@link UMLPostProcessor}. - */ - protected static Comparison getComparison(ResourceScopeProvider scopeProvider) throws IOException { - final IComparisonScope scope = new DefaultComparisonScope(scopeProvider.getLeft(), scopeProvider - .getRight(), scopeProvider.getOrigin()); - Builder builder = EMFCompare.builder(); + @Override + protected Registry<?> getPostProcessorRegistry() { PostProcessorDescriptorRegistryImpl<Object> postProcessorRegistry = new PostProcessorDescriptorRegistryImpl<Object>(); BasicPostProcessorDescriptorImpl descriptor = new BasicPostProcessorDescriptorImpl( new UMLPostProcessor(), Pattern.compile("http://www.eclipse.org/uml2/\\d.0.0/UML"), null); //$NON-NLS-1$ postProcessorRegistry.put(UMLPostProcessor.class.getName(), descriptor); - builder.setPostProcessorRegistry(postProcessorRegistry); - return builder.build().compare(scope); + return postProcessorRegistry; } /** - * Add a new node to a tree. This node is not expected to be filtered by UML Refine filter. + * Tests the structured representation of UML differences without the UML refine filter activated. * - * @param name - * Name of the node. - * @param parent - * Parent node (or null). - * @return The newly created node. + * @throws IOException */ - private static Node newNode(String name, Node parent) { - return newNode(name, parent, false); - } + @Test + public void testDiffOrder() throws IOException { + UMLRefinedElementsFilter umlRefineFilter = new UMLRefinedElementsFilter(); + getFilter().removeFilter(umlRefineFilter); + + IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(), + getCrossReferenceAdapter()); + List<? extends TreeNode> roots = group.getChildren(); + // Uncomment the following lines to reserialize the expected model + // TestWriterHelper writerHelper = createTestHelper(); + // writerHelper.createExpectedModel("PATH_TO_MODEL_FILE/expectedResult.nodes", roots); + + compareTree(expectedResult.getExpectedResultWithoutFilter(), roots); - /** - * Add a new node to a tree. - * - * @param name - * Name of the node. - * @param parent - * Parent node (or null). - * @param isFiltered - * set to <code>true</code> if this node is expected to be filtered by the UML Refine filter. - * @return The newly created node. - */ - private static Node newNode(String name, Node parent, boolean isFiltered) { - NodeSingleValueAttribute result = NodesFactory.eINSTANCE.createNodeSingleValueAttribute(); - result.setSingleValuedAttribute(Boolean.toString(isFiltered)); - result.setName(name); - if (parent != null) { - parent.getContainmentRef1().add(result); - } - return result; } /** - * Compare the expected difference tree with the real difference tree. + * Tests the structured representation of UML differences with the UML refine filter activated. * - * @param expectedTree - * Expected tree. - * @param activatedfilter - * Set to true if the expected difference tree should emulated UML Refine filter. - * @param realTree - * Real tree. + * @throws IOException */ - private void compareTree(Node expectedTree, boolean activatedfilter, TreeNode realTree) { - // Filters elements to mock the behavior of the viewer filter. - final Iterator<EObject> realIterator = Iterators.filter(realTree.eAllContents(), - new Predicate<EObject>() { - public boolean apply(EObject input) { - AdapterImpl adapter = new AdapterImpl(); - adapter.setTarget(input); - return filter.select(null, null, adapter); - } - }); - // Computes the expected result - final Iterator<EObject> expectedIterator; - if (activatedfilter) { - expectedIterator = Iterators.filter(expectedTree.eAllContents(), FILTER_ELEMENT_PREDICATE); - } else { - expectedIterator = expectedTree.eAllContents(); - } - // Compares - while (expectedIterator.hasNext()) { - Node expectedElement = (Node)expectedIterator.next(); - Assert.assertTrue("No match for element " + expectedElement.getName(), realIterator.hasNext()); //$NON-NLS-1$ - EObject realElem = realIterator.next(); - // Checks same name. - Assert.assertEquals(expectedElement.getName(), itemDelegator.getText(realElem)); - if (expectedElement.eContainer() != null) { - final Collection<Node> expectedChildren; - // Computes expected children - if (activatedfilter) { - expectedChildren = Collections2.filter(expectedElement.getContainmentRef1(), - FILTER_ELEMENT_PREDICATE); - } else { - expectedChildren = expectedElement.getContainmentRef1(); - } - // Checks same number of children. - Assert.assertEquals("Incorrect children for " + itemDelegator.getText(realElem), //$NON-NLS-1$ - expectedChildren.size(), ((TreeNode)realElem).getChildren().size()); - } - } + @Test + public void testDiffOrderWithUMLRefineFilter() throws IOException { + UMLRefinedElementsFilter umlRefineFilter = new UMLRefinedElementsFilter(); + getFilter().addFilter(umlRefineFilter); + + IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(), + getCrossReferenceAdapter()); + List<? extends TreeNode> roots = group.getChildren(); + // Uncomment the following lines to reserialize the expected model + // TestWriterHelper writerHelper = createTestHelper(); + // writerHelper.createExpectedModel("PATH_TO_MODEL_FILE/expectedResultWithUMLRefineElement.nodes", + // roots); + + compareTree(expectedResult.getExpectedResultWithFilter(), roots); + } /** @@ -321,7 +134,7 @@ public class UMLDifferencesOrderTest { * * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> */ - public static class DataInput extends AbstractInputData implements ResourceScopeProvider { + private static class DataInput extends AbstractInputData implements NotifierScopeProvider { public Resource getLeft() throws IOException { return loadFromClassLoader("data/a1/left.uml");//$NON-NLS-1$ @@ -336,4 +149,20 @@ public class UMLDifferencesOrderTest { } } + /** + * Expected result data. + * + * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a> + */ + private static class ExpectedResultData extends AbstractInputData { + + public Resource getExpectedResultWithoutFilter() throws IOException { + return loadFromClassLoader("data/a1/expectedResultWithoutUMLRefineElementFilter.nodes"); //$NON-NLS-1$ + } + + public Resource getExpectedResultWithFilter() throws IOException { + return loadFromClassLoader("data/a1/expectedResultWithUMLRefineElementFilter.nodes"); //$NON-NLS-1$ + } + } + } diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithUMLRefineElementFilter.nodes b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithUMLRefineElementFilter.nodes new file mode 100644 index 000000000..9b5296ff5 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithUMLRefineElementFilter.nodes @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="ASCII"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes"> + <nodes:Node xmi:id="_CgJ7IOvwEeOe_vfK-oM2bA" name="<Model> model"> + <containmentRef1 xmi:id="_CgR28OvwEeOe_vfK-oM2bA" name="<Package> OldHoldingPackage"/> + <containmentRef1 xmi:id="_CgR28evwEeOe_vfK-oM2bA" name="<Package> NewHoldingPackage"> + <containmentRef1 xmi:id="_CgR28uvwEeOe_vfK-oM2bA" name="<Class> MovingNode [packagedElement move]"/> + </containmentRef1> + <containmentRef1 xmi:id="_CgR28-vwEeOe_vfK-oM2bA" name="<Class> AssociationOldTarget"/> + <containmentRef1 xmi:id="_CgR29OvwEeOe_vfK-oM2bA" name="<Class> AssociationNewTarget"/> + <containmentRef1 xmi:id="_CgR29evwEeOe_vfK-oM2bA" name="<Class> ChangingNameNode_NewName"> + <containmentRef1 xmi:id="_CgR29uvwEeOe_vfK-oM2bA" name="ChangingNameNode_NewName [name changed]"/> + </containmentRef1> + <containmentRef1 xmi:id="_CgR29-vwEeOe_vfK-oM2bA" name="<Class> PseudoConflictingNode_NewName"> + <containmentRef1 xmi:id="_CgR2-OvwEeOe_vfK-oM2bA" name="PseudoConflictingNode [name changed]"/> + <containmentRef1 xmi:id="_CgR2-evwEeOe_vfK-oM2bA" name="PseudoConflictingNode [name changed]"/> + </containmentRef1> + <containmentRef1 xmi:id="_CgR2-uvwEeOe_vfK-oM2bA" name="<Class> NewNode [packagedElement add]"/> + <containmentRef1 xmi:id="_CgR2--vwEeOe_vfK-oM2bA" name="<Association> A_associationSource_associationOl... [packagedElement delete]"/> + <containmentRef1 xmi:id="_CgR2_OvwEeOe_vfK-oM2bA" name="<Class> NodeToDelete [packagedElement delete]"/> + <containmentRef1 xmi:id="_CgR2_evwEeOe_vfK-oM2bA" name="<Class> ConflictingNode [packagedElement delete]"> + <containmentRef1 xmi:id="_CgR2_uvwEeOe_vfK-oM2bA" name="ConflictingNode_ConflictingName [name set]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node xmi:id="_CgU6QOvwEeOe_vfK-oM2bA" name="left.uml <-> right.uml (origin.uml)"/> +</xmi:XMI> diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithoutUMLRefineElementFilter.nodes b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithoutUMLRefineElementFilter.nodes new file mode 100644 index 000000000..eb170b378 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui.tests/src/org/eclipse/emf/compare/uml2/rcp/ui/tests/groups/data/a1/expectedResultWithoutUMLRefineElementFilter.nodes @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="ASCII"?> +<xmi:XMI xmi:version="2.0" + xmlns:xmi="http://www.omg.org/XMI" + xmlns:nodes="http://www.eclipse.org/emf/compare/tests/nodes"> + <nodes:Node + xmi:id="_CiZ94OvwEeOe_vfK-oM2bA" + name="<Model> model"> + <containmentRef1 + xmi:id="_CiZ94evwEeOe_vfK-oM2bA" + name="<Package> OldHoldingPackage"/> + <containmentRef1 + xmi:id="_CiZ94uvwEeOe_vfK-oM2bA" + name="<Package> NewHoldingPackage"> + <containmentRef1 + xmi:id="_CiZ94-vwEeOe_vfK-oM2bA" + name="<Class> MovingNode [packagedElement move]"/> + </containmentRef1> + <containmentRef1 + xmi:id="_CiZ95OvwEeOe_vfK-oM2bA" + name="<Class> AssociationSource"> + <containmentRef1 + xmi:id="_CiZ95evwEeOe_vfK-oM2bA" + name="<Property> associationOldTarget : AssociationOl... [ownedAttribute delete]"> + <containmentRef1 + xmi:id="_CiZ95uvwEeOe_vfK-oM2bA" + name="<Class> AssociationOldTarget [type unset]"/> + <containmentRef1 + xmi:id="_CiZ95-vwEeOe_vfK-oM2bA" + name="<Literal Integer> 1 [lowerValue delete]"/> + <containmentRef1 + xmi:id="_CiZ96OvwEeOe_vfK-oM2bA" + name="<Literal Unlimited Natural> 1 [upperValue delete]"/> + <containmentRef1 + xmi:id="_CiZ96evwEeOe_vfK-oM2bA" + name="<Association> A_associationSource_associationOl... [association unset]"/> + </containmentRef1> + </containmentRef1> + <containmentRef1 + xmi:id="_CiZ96uvwEeOe_vfK-oM2bA" + name="<Class> AssociationOldTarget"/> + <containmentRef1 + xmi:id="_Ciak8OvwEeOe_vfK-oM2bA" + name="<Class> AssociationNewTarget"/> + <containmentRef1 + xmi:id="_Ciak8evwEeOe_vfK-oM2bA" + name="<Class> ChangingNameNode_NewName"> + <containmentRef1 + xmi:id="_Ciak8uvwEeOe_vfK-oM2bA" + name="ChangingNameNode_NewName [name changed]"/> + </containmentRef1> + <containmentRef1 + xmi:id="_Ciak8-vwEeOe_vfK-oM2bA" + name="<Class> PseudoConflictingNode_NewName"> + <containmentRef1 + xmi:id="_Ciak9OvwEeOe_vfK-oM2bA" + name="PseudoConflictingNode [name changed]"/> + <containmentRef1 + xmi:id="_Ciak9evwEeOe_vfK-oM2bA" + name="PseudoConflictingNode [name changed]"/> + </containmentRef1> + <containmentRef1 + xmi:id="_Ciak9uvwEeOe_vfK-oM2bA" + name="<Class> NewNode [packagedElement add]"/> + <containmentRef1 + xmi:id="_Ciak9-vwEeOe_vfK-oM2bA" + name="<Association> A_associationSource_associationOl... [packagedElement delete]"> + <containmentRef1 + xmi:id="_Ciak-OvwEeOe_vfK-oM2bA" + name="<Property> associationSource : AssociationSource [memberEnd delete]"/> + <containmentRef1 + xmi:id="_Ciak-evwEeOe_vfK-oM2bA" + name="<Property> associationOldTarget : AssociationOl... [memberEnd delete]"/> + <containmentRef1 + xmi:id="_Ciak-uvwEeOe_vfK-oM2bA" + name="<Property> associationSource : AssociationSource [ownedEnd delete]"> + <containmentRef1 + xmi:id="_Ciak--vwEeOe_vfK-oM2bA" + name="<Class> AssociationSource [type unset]"/> + <containmentRef1 + xmi:id="_Ciak_OvwEeOe_vfK-oM2bA" + name="<Literal Integer> 1 [lowerValue delete]"/> + <containmentRef1 + xmi:id="_Ciak_evwEeOe_vfK-oM2bA" + name="<Literal Unlimited Natural> 1 [upperValue delete]"/> + <containmentRef1 + xmi:id="_Ciak_uvwEeOe_vfK-oM2bA" + name="<Association> A_associationSource_associationOl... [association unset]"/> + </containmentRef1> + <containmentRef1 + xmi:id="_Ciak_-vwEeOe_vfK-oM2bA" + name="<Property> associationSource : AssociationSource [navigableOwnedEnd delete]"/> + </containmentRef1> + <containmentRef1 + xmi:id="_CialAOvwEeOe_vfK-oM2bA" + name="<Class> NodeToDelete [packagedElement delete]"/> + <containmentRef1 + xmi:id="_CialAevwEeOe_vfK-oM2bA" + name="<Class> ConflictingNode [packagedElement delete]"> + <containmentRef1 + xmi:id="_CialAuvwEeOe_vfK-oM2bA" + name="ConflictingNode_ConflictingName [name set]"/> + </containmentRef1> + </nodes:Node> + <nodes:Node + xmi:id="_CialA-vwEeOe_vfK-oM2bA" + name="left.uml <-> right.uml (origin.uml)"/> +</xmi:XMI> diff --git a/plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF index d684d3516..0c7f20cbe 100644 --- a/plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.uml2.rcp.ui/META-INF/MANIFEST.MF @@ -18,4 +18,4 @@ Bundle-ActivationPolicy: lazy Bundle-Localization: plugin Export-Package: org.eclipse.emf.compare.uml2.rcp.ui.internal.accessor;x-internal:=true, org.eclipse.emf.compare.uml2.rcp.ui.internal.accessor.factory;x-internal:=true, - org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters;x-internal:=true + org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests" diff --git a/plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF index 09b99cd2e..eb8472d0e 100644 --- a/plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.compare.uml2/META-INF/MANIFEST.MF @@ -27,7 +27,7 @@ Export-Package: org.eclipse.emf.compare.uml2.internal; org.eclipse.emf.compare.uml2.rcp.ui, org.eclipse.emf.compare.uml2.tests", org.eclipse.emf.compare.uml2.internal.merge;x-internal:=true, - org.eclipse.emf.compare.uml2.internal.postprocessor;x-internal:=true, + org.eclipse.emf.compare.uml2.internal.postprocessor;x-friends:="org.eclipse.emf.compare.diagram.papyrus.tests", org.eclipse.emf.compare.uml2.internal.postprocessor.extension;x-internal:=true, org.eclipse.emf.compare.uml2.internal.postprocessor.extension.clazz;x-internal:=true, org.eclipse.emf.compare.uml2.internal.postprocessor.extension.profile;x-internal:=true, |