Modify merge to handle implications properly

This introduces an overhaul of the merging process as a
whole in order to properly handle implications (a diff
implied by another does not need merging in itself, we
only need to merge the implying), most notably for the UML
comparison support.

The same algorithm is now used to merge differences in a
batch (or to simply merge implications, results and
equivalences) and to display the impact analysis of a merge
in the user interface (what will be merged and what will be
rejected when I merge such or such difference).

Change-Id: I39f69c05f94b5f18cb3a3c3b1f7089700f138282
Adds year of contribution to copyright header

Change-Id: I5dabe48f506ea413ad7db71ea28d144bcfda957b
Signed-off-by: Philip Langer <planger@eclipsesource.com>
Merge "Modify merge to handle implications properly"
Pre-merge from EMF logical merging

This also introduces an in-depth impact analysis facility
that allows EMF Compare to automatically pre-merge
everything that can be (i.e everything that is not in
conflict or does not depend on a conflict resolution). This
is notably used within the logical merging, but could also
be used for the "merge all non-conflicting" actions of the
user interface.

Change-Id: I236cd86a32b58c4e927ec43753f354a186af7ccb
[446413] StructureMergeViewer should rebuild its tree on every inputChange

Bug: 446413
Change-Id: Ifb8880001aaa12c8a7b7eaa7fe518d14f6c654f4
[443337] Prevent large shapes icons for stereotypes.

Papyrus also uses UML icons to define shapes to be used in diagrams.
Those shapes should not be used in the structure merge viewer.

Bug: 443337
Change-Id: I1fade6cd71c90bfbff04340d712898343d7dbdf5
Prevents loading twice the same model in a NotLoadingResourceSet.

The previsous getResource(IStorage,boolean) method did not check if a
resource was already loaded. It may happen that the same resource was
created twice in the same ResourceSet (with the exact same uri).

This commit also changes the way IStorage are loaded in the resource
set. The IStorages are now loaded using their uris. The resource set is
aware of the resources that should be loaded from a IStorage. 

Change-Id: I5fe2f837c7a0c3ff522ee3d382e4b3dc7fc4b9d9
Signed-off-by: Arthur Daussy <arthur.daussy@obeo.fr>
Adds ResourceSetHook extension point.


This extension point aims to provide a way for external client to hook
some behavior into the ResourceSet used by EMF Compare (for example
register new factories).


Change-Id: I9273648a9bcbca8da6e1a7dbb41870c94f20ac07
[398367] Adds Papyrus CSS customization support.

This adds a hook on EMF Compare resource set in order install all
necessary stuff to support Papyrus CSS support in EMF Compare.

Bug: 398367
Change-Id: I1eb74520698e6160a2d779dedd5cb088d85828dc
Corrects labels after enhancement on conflicts label.

Change-Id: I27d7d3a62f8846b45bbd516086766026c6213ddb
[446739] Fixes obtaining the target feature in three-way merge of a move

We now make sure that the target feature is correctly determined. This
prevents a NullPointerException thrown during a three-way merge of a
move, in which the target containment feature is not available in the
type of the original containment feature.

Bug: 446739
Signed-off-by: Philip Langer <planger@eclipsesource.com>
Change-Id: I98a7f37bb5e43f10ddaf4a042893ed4773bf25b9
Adds onDispose method on the resource set hooks.

The resources are unloaded and removed from the resource set on a
compare input change event using this mechanism.

Change-Id: Ifed4997876456ff0f70f4cb4e072526d5f310347
Prevents scope to filter resources using pathmap.

Change-Id: I01c77c399c76f77ef4a31998bdd8b64001ed6b3a
Unloads UML resources thanks to the resource set hooks mechanism.

Removes the first implementation of the hook and move it to a new UML
integration plugin. This time the hooks unloads only UML resources.

Change-Id: Ic03d8322faea2cb4fa19e51a980dee4bb90c9c3b
[441172] Fix merge order of equivalent diffs for one-to-one opposites

When determining which one of the equivalent differences of one-to-one
eOpposites will be merged above the others, differences which result in
setting a feature value instead of unsetting a feature will be
preferred.

Includes testcases for both merge directions.

Bug: 441172
Signed-off-by: Stefan Dirix <st.dirix@gmail.com>
Change-Id: I2e98f44e5e440c82ec95135db622225c65dc07b3
Merge remote-tracking branch 'origin/master' into
improved-fuzzy-test-bug446252

Conflicts:
	plugins/org.eclipse.emf.compare/src/org/eclipse/emf/compare/internal/utils/DiffUtil.java
	plugins/org.eclipse.emf.compare/src/org/eclipse/emf/compare/merge/AbstractMerger.java