Skip to main content

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.

Jump to: navigation, search

Difference between revisions of "EMF Compare/Specifications/FeatureMap"

(Evolution Specification: handling of FetaureMaps in EMF Compare)
(Progression)
 
(19 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Evolution Specification: handling of FeatureMaps in EMF Compare  =
+
= Evolution Specification: FeatureMaps in EMF Compare  =
  
 
Current status is '''DRAFT'''
 
Current status is '''DRAFT'''
Line 17: Line 17:
 
=== Addition/deletion of a value for a given key ===
 
=== Addition/deletion of a value for a given key ===
  
'''Solution 1: 2 differences, 1 refinement'''
+
'''Solution 1: 2 differences'''
 +
 
 +
In the core:
 +
* 1 difference on the orders : EFeatureMapEntry attribute
 +
* 1 difference on the standardOrders/priorityOrders reference (derived, transient, volatile)
 +
* the merge of a diff implies the merge of the other diff (equivalence relation)
 +
* if the changes are too heavy in the code, add a new type of Diff: FeatureMapChange
  
 
In the structure merge viewer:
 
In the structure merge viewer:
 
* 1 difference on the orders : EFeatureMapEntry attribute
 
* 1 difference on the orders : EFeatureMapEntry attribute
 
* 1 difference on the standardOrders/priorityOrders reference
 
* 1 difference on the standardOrders/priorityOrders reference
* 1 refinement of the previous differences (the reference change is the prime refining), with a new FeatureMap filter
+
* a new FeatureMap filter (that hides the orders : EFeatureMapEntry difference
* the merge of a diff implies the merge of the other diff.
+
* when select a diff, the other diff is higlighted in green
  
 
In the content merge viewer:
 
In the content merge viewer:
* For the difference on the orders : EFeatureMapEntry reference: table merge viewer
+
* For the difference on the orders : EFeatureMapEntry attribute: table merge viewer
 
* For the standardOrders/priorityOrders reference: tree merge viewer
 
* For the standardOrders/priorityOrders reference: tree merge viewer
  
Line 33: Line 39:
 
'''Solution 2: 1 difference'''
 
'''Solution 2: 1 difference'''
  
In the structure merge viewer:
+
In the core:
 
* 1 new type of difference: FeatureMapChange
 
* 1 new type of difference: FeatureMapChange
 +
 +
In the structure merge viewer:
 +
* 1 difference on the standardOrders/priorityOrders reference
  
 
In the content merge viewer:
 
In the content merge viewer:
Line 44: Line 53:
  
 
'''Solution 1: table merge viewer'''
 
'''Solution 1: table merge viewer'''
 +
 +
In the core:
 +
* 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapKeyChange
  
 
In the structure merge viewer:
 
In the structure merge viewer:
* 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapChange
+
* 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapKeyChange
  
 
In the content merge viewer:
 
In the content merge viewer:
 
* table merge viewer
 
* table merge viewer
 +
 +
[[file:EMFCompare_FeatureMap_5.png]]
  
 
'''Solution 2: new merge viewer'''
 
'''Solution 2: new merge viewer'''
 +
 +
In the core:
 +
* 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapKeyChange
 +
* new table merge viewer : FeatureMapKeyContentMergeViewer
  
 
In the structure merge viewer:
 
In the structure merge viewer:
* 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapChange
+
* 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapKeyChange
  
 
In the content merge viewer:
 
In the content merge viewer:
* new merge viewer: FeatureMapMergeViewer
+
* new merge viewer: FeatureMapKeyContentMergeViewer (modified TableMergeViewer)
 +
 
 +
[[file:EMFCompare_FeatureMap_6.png]]
 +
 
 +
=== Progression ===
 +
 
 +
{| border="1"
 +
|-
 +
! align="center" | 2-way
 +
! align="center" | Containment
 +
! align="center" | Non containment
 +
|-
 +
| align="left" | ADD
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | DELETE
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | KEY CHANGE
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | MOVE in same container
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | MOVE in different container
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | MOVE in diff container + KEY CHANGE
 +
| bgcolor="#9d261d" |  
 +
| bgcolor="#9d261d" |  
 +
|}
 +
 
 +
{| border="1"
 +
|-
 +
! align="center" | 3-way
 +
! align="center" | Containment
 +
! align="center" | Non containment
 +
|-
 +
| align="left" | ADD
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | DELETE
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | KEY CHANGE
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | MOVE in same container
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | MOVE in different container
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | MOVE in diff container + KEY CHANGE
 +
| bgcolor="#9d261d" |  
 +
| bgcolor="#9d261d" |  
 +
|}
 +
 
 +
{| border="1"
 +
|-
 +
! align="center" | Conflicts
 +
! align="center" | Containment
 +
! align="center" | Non containment
 +
|-
 +
| align="left" | ADD
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | DELETE
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | KEY CHANGE
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | MOVE in same container
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | MOVE in different container
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | MOVE in diff container + KEY CHANGE
 +
| bgcolor="#9d261d" |  
 +
| bgcolor="#9d261d" |  
 +
|}
 +
 
 +
{| border="1"
 +
|-
 +
! align="center" | Pseudo-Conflicts
 +
! align="center" | Containment
 +
! align="center" | Non containment
 +
|-
 +
| align="left" | ADD
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | DELETE
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | KEY CHANGE
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | MOVE in same container
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#46a546" |  
 +
|-
 +
| align="left" | MOVE in different container
 +
| bgcolor="#46a546" |  
 +
| bgcolor="#cccccc" |  
 +
|-
 +
| align="left" | MOVE in diff container + KEY CHANGE
 +
| bgcolor="#9d261d" |  
 +
| bgcolor="#9d261d" |  
 +
|}
  
 
[[Category:EMF Compare/Specification]]
 
[[Category:EMF Compare/Specification]]

Latest revision as of 10:04, 11 June 2014

Evolution Specification: FeatureMaps in EMF Compare

Current status is DRAFT

Preamble

Summary: Define how to represent feature maps changes.

Introduction

The following metamodel will be use for the specification.

EMFCompare FeatureMap MM.png

Detailed Specification

Addition/deletion of a value for a given key

Solution 1: 2 differences

In the core:

  • 1 difference on the orders : EFeatureMapEntry attribute
  • 1 difference on the standardOrders/priorityOrders reference (derived, transient, volatile)
  • the merge of a diff implies the merge of the other diff (equivalence relation)
  • if the changes are too heavy in the code, add a new type of Diff: FeatureMapChange

In the structure merge viewer:

  • 1 difference on the orders : EFeatureMapEntry attribute
  • 1 difference on the standardOrders/priorityOrders reference
  • a new FeatureMap filter (that hides the orders : EFeatureMapEntry difference
  • when select a diff, the other diff is higlighted in green

In the content merge viewer:

  • For the difference on the orders : EFeatureMapEntry attribute: table merge viewer
  • For the standardOrders/priorityOrders reference: tree merge viewer

EMFCompare FeatureMap 1.png EMFCompare FeatureMap 2.png EMFCompare FeatureMap 3.png

Solution 2: 1 difference

In the core:

  • 1 new type of difference: FeatureMapChange

In the structure merge viewer:

  • 1 difference on the standardOrders/priorityOrders reference

In the content merge viewer:

  • For the standardOrders/priorityOrders reference: tree merge viewer

EMFCompare FeatureMap 4.png

Key change for a given value

Solution 1: table merge viewer

In the core:

  • 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapKeyChange

In the structure merge viewer:

  • 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapKeyChange

In the content merge viewer:

  • table merge viewer

EMFCompare FeatureMap 5.png

Solution 2: new merge viewer

In the core:

  • 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapKeyChange
  • new table merge viewer : FeatureMapKeyContentMergeViewer

In the structure merge viewer:

  • 1 new type of difference on the the standardOrders/priorityOrders references: FeatureMapKeyChange

In the content merge viewer:

  • new merge viewer: FeatureMapKeyContentMergeViewer (modified TableMergeViewer)

EMFCompare FeatureMap 6.png

Progression

2-way Containment Non containment
ADD    
DELETE    
KEY CHANGE    
MOVE in same container    
MOVE in different container    
MOVE in diff container + KEY CHANGE    
3-way Containment Non containment
ADD    
DELETE    
KEY CHANGE    
MOVE in same container    
MOVE in different container    
MOVE in diff container + KEY CHANGE    
Conflicts Containment Non containment
ADD    
DELETE    
KEY CHANGE    
MOVE in same container    
MOVE in different container    
MOVE in diff container + KEY CHANGE    
Pseudo-Conflicts Containment Non containment
ADD    
DELETE    
KEY CHANGE    
MOVE in same container    
MOVE in different container    
MOVE in diff container + KEY CHANGE    

Back to the top