Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EMF Compare/Specifications/GraphicalComparison"
(New page: = Evolution Specification: Graphical Comparison = Current status is '''DRAFT''' == Preamble == ''Summary'': This feature is about all topics around the comparison of graphical objects...) |
|||
Line 1: | Line 1: | ||
= Evolution Specification: Graphical Comparison = | = Evolution Specification: Graphical Comparison = | ||
− | Current status is '''DRAFT''' | + | Current status is '''DRAFT''' |
== Preamble == | == Preamble == | ||
Line 9: | Line 9: | ||
Links to the Bugzilla tickets which are related to the change: | Links to the Bugzilla tickets which are related to the change: | ||
− | PENDING | + | PENDING |
== Introduction == | == Introduction == | ||
− | PENDING | + | PENDING This section should contain a summary of the proposed evolution, including why it is needed. Ideally it should be self-contained so that non-developers can get a quick overview of the evolution without reading the detailed specification. |
− | This section should contain a summary of the proposed evolution, including why it is needed. Ideally it should be self-contained so that non-developers can get a quick overview of the evolution without reading the detailed specification. | + | |
== Detailed Specification == | == Detailed Specification == | ||
Line 20: | Line 19: | ||
The aim is to be the most consistent with the look of the "semantic" comparison (tree). | The aim is to be the most consistent with the look of the "semantic" comparison (tree). | ||
− | To put in relief the graphical differences, some decorators should be used. | + | To put in relief the graphical differences, some decorators should be used. |
− | * On one hand, it enables to focus on the impacted objects, highlighting them with markers. | + | |
− | * On the other hand, through phantoms, it enables to locate either the place where objects were deleted or the target location where objects should be added after merging. | + | *On one hand, it enables to focus on the impacted objects, highlighting them with markers. |
+ | *On the other hand, through phantoms, it enables to locate either the place where objects were deleted or the target location where objects should be added after merging. | ||
On each difference selection, only the related markers will appear. | On each difference selection, only the related markers will appear. | ||
− | Below, different cases are detailed. | + | Below, different cases are detailed. |
+ | |||
+ | === Non conflicting cases === | ||
+ | |||
+ | *Locally added elements: | ||
− | + | [[Image:AddLocal.png]] | |
− | * Locally | + | *Locally deleted elements: |
− | [[Image: | + | [[Image:DeleteLocal.png]] |
− | * | + | *Remotely added elements: |
− | [[Image: | + | [[Image:AddRemote.png]] |
− | * Remotely | + | *Remotely deleted elements: |
− | [[Image: | + | [[Image:DeleteRemote.png]] |
− | * | + | *Local coordinates changes: |
− | [[Image: | + | [[Image:ChangeCoordinatesLocal.png]] |
− | * | + | *Remote coordinates changes: |
− | [[Image: | + | [[Image:ChangeCoordinatesRemote.png]] |
− | * | + | *Local move (and potentially coordinates change): |
− | [[Image: | + | [[Image:MoveLocal.png]] |
− | + | === Conflicting cases === | |
− | + | <br> | |
+ | {| width="200" cellspacing="1" cellpadding="1" border="1" align="center" | ||
+ | |- | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | align="center" colspan="24" | REMOTE<br> | ||
+ | |- | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | align="center" colspan="6" | ADD<br> | ||
+ | | align="center" colspan="6" | DELETE<br> | ||
+ | | align="center" colspan="6" | Coordinates Change (CHANGE)<br> | ||
+ | | align="center" colspan="6" | MOVE<br> | ||
+ | |- | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | align="center" | nodes<br> | ||
+ | | align="center" | children nodes<br> | ||
+ | | align="center" | parent nodes<br> | ||
+ | | align="center" | edges<br> | ||
+ | | align="center" | connected edges<br> | ||
+ | | align="center" | connected nodes<br> | ||
+ | | align="center" | nodes<br> | ||
+ | | align="center" | children nodes<br> | ||
+ | | align="center" | parent nodes<br> | ||
+ | | align="center" | edges<br> | ||
+ | | align="center" | connected edges<br> | ||
+ | | align="center" | connected nodes<br> | ||
+ | | align="center" | nodes | ||
+ | | align="center" | children nodes<br> | ||
+ | | align="center" | parent nodes<br> | ||
+ | | align="center" | edges<br> | ||
+ | | align="center" | connected edges<br> | ||
+ | | align="center" | connected nodes<br> | ||
+ | | align="center" | nodes<br> | ||
+ | | align="center" | children nodes<br> | ||
+ | | align="center" | parent nodes<br> | ||
+ | | align="center" | edges<br> | ||
+ | | align="center" | connected edges<br> | ||
+ | | align="center" | connected nodes<br> | ||
+ | |- | ||
+ | | align="center" rowspan="24" | LOCAL<br> | ||
+ | | align="center" rowspan="6" | ADD<br> | ||
+ | | nowrap="nowrap" align="center" | nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | bgcolor="#ff0000" | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | children nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | parent nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | edges<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | connected edges<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | connected nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | align="center" rowspan="6" | DELETE<br> | ||
+ | | nowrap="nowrap" align="center" | nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | children nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | parent nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | edges<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | connected edges<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | connected nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | align="center" rowspan="6" | Coordinates Change (CHANGE)<br> | ||
+ | | nowrap="nowrap" align="center" | nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | children nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | parent nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | edges<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | connected edges<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | connected nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | align="center" rowspan="6" | MOVE<br> | ||
+ | | nowrap="nowrap" align="center" | nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | children nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | parent nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | edges<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | connected edges<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |- | ||
+ | | nowrap="nowrap" align="center" | connected nodes<br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | | <br> | ||
+ | |} | ||
− | + | <br> | |
== Backward Compatibility and Migration Paths == | == Backward Compatibility and Migration Paths == | ||
− | PENDING | + | PENDING Every one of the sections below should be present. Even if there is no corresponding change (for example no API change), it should exist to mention explicitly "This evolution does not change any API." |
− | Every one of the sections below should be present. Even if there is no corresponding change (for example no API change), it should exist to mention explicitly "This evolution does not change any API." | + | |
=== Metamodel Changes === | === Metamodel Changes === | ||
− | PENDING | + | PENDING Document any change to the Viewpoint metamodel. If they require a migration operation, mention it and describe the general idea of how migration process. If any information can be lost during the migration, mention it clearly. If validation rules must be added/modified, mention it also. |
− | Document any change to the Viewpoint metamodel. If they require a migration operation, mention it and describe the general idea of how migration process. If any information can be lost during the migration, mention it clearly. If validation rules must be added/modified, mention it also. | + | |
=== API Changes === | === API Changes === | ||
− | PENDING | + | PENDING List every API addition, removal and deprecation. For each removal and deprecation, indicate the migration path for existing code. |
− | List every API addition, removal and deprecation. For each removal and deprecation, indicate the migration path for existing code. | + | |
=== User Interface Changes === | === User Interface Changes === | ||
− | PENDING | + | PENDING List every user-visible change in the interface. Here "user" includes not only end-users but also developpers. |
− | List every user-visible change in the interface. Here "user" includes not only end-users but also developpers. | + | |
=== Documentation Changes === | === Documentation Changes === | ||
− | PENDING | + | PENDING List every documentation needing an update here, starting by the New and Noteworthy documentation. |
− | List every documentation needing an update here, starting by the New and Noteworthy documentation. | + | |
== Tests and Non-regression strategy == | == Tests and Non-regression strategy == | ||
− | PENDING | + | PENDING This part of the document should describe the strategy to use to correctly test the evolution and guarantee the non-regression. |
− | This part of the document should describe the strategy to use to correctly test the evolution and guarantee the non-regression. | + | |
== Implementation choices and tradeoffs == | == Implementation choices and tradeoffs == | ||
− | PENDING | + | PENDING Any important tradeoff or choice made during the implementation should be referenced here with pros/cons leading to the final decision. |
− | Any important tradeoff or choice made during the implementation should be referenced here with pros/cons leading to the final decision. | + | |
− | [[Category: | + | [[Category:EMF_Compare]] |
Revision as of 14:08, 31 January 2013
Contents
Evolution Specification: Graphical Comparison
Current status is DRAFT
Preamble
Summary: This feature is about all topics around the comparison of graphical objects.
Links to the Bugzilla tickets which are related to the change:
PENDING
Introduction
PENDING This section should contain a summary of the proposed evolution, including why it is needed. Ideally it should be self-contained so that non-developers can get a quick overview of the evolution without reading the detailed specification.
Detailed Specification
The aim is to be the most consistent with the look of the "semantic" comparison (tree).
To put in relief the graphical differences, some decorators should be used.
- On one hand, it enables to focus on the impacted objects, highlighting them with markers.
- On the other hand, through phantoms, it enables to locate either the place where objects were deleted or the target location where objects should be added after merging.
On each difference selection, only the related markers will appear.
Below, different cases are detailed.
Non conflicting cases
- Locally added elements:
- Locally deleted elements:
- Remotely added elements:
- Remotely deleted elements:
- Local coordinates changes:
- Remote coordinates changes:
- Local move (and potentially coordinates change):
Conflicting cases
|
|
|
REMOTE | |||||||||||||||||||||||
|
|
|
ADD |
DELETE |
Coordinates Change (CHANGE) |
MOVE | ||||||||||||||||||||
|
|
|
nodes |
children nodes |
parent nodes |
edges |
connected edges |
connected nodes |
nodes |
children nodes |
parent nodes |
edges |
connected edges |
connected nodes |
nodes | children nodes |
parent nodes |
edges |
connected edges |
connected nodes |
nodes |
children nodes |
parent nodes |
edges |
connected edges |
connected nodes |
LOCAL |
ADD |
nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
children nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
parent nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
DELETE |
nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
children nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
parent nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
Coordinates Change (CHANGE) |
nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
children nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
parent nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
MOVE |
nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
children nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
parent nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected edges |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
connected nodes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Backward Compatibility and Migration Paths
PENDING Every one of the sections below should be present. Even if there is no corresponding change (for example no API change), it should exist to mention explicitly "This evolution does not change any API."
Metamodel Changes
PENDING Document any change to the Viewpoint metamodel. If they require a migration operation, mention it and describe the general idea of how migration process. If any information can be lost during the migration, mention it clearly. If validation rules must be added/modified, mention it also.
API Changes
PENDING List every API addition, removal and deprecation. For each removal and deprecation, indicate the migration path for existing code.
User Interface Changes
PENDING List every user-visible change in the interface. Here "user" includes not only end-users but also developpers.
Documentation Changes
PENDING List every documentation needing an update here, starting by the New and Noteworthy documentation.
Tests and Non-regression strategy
PENDING This part of the document should describe the strategy to use to correctly test the evolution and guarantee the non-regression.
Implementation choices and tradeoffs
PENDING Any important tradeoff or choice made during the implementation should be referenced here with pros/cons leading to the final decision.