Class ProximityEObjectMatcher
java.lang.Object
org.eclipse.emf.compare.match.eobject.ProximityEObjectMatcher
- All Implemented Interfaces:
IEObjectMatcher
,ScopeQuery
This matcher is using a distance function to match EObject. It guarantees that elements are matched with
the other EObject having the lowest distance. If two elements have the same distance regarding the other
EObject it will arbitrary pick one. (You should probably not rely on this and make sure your distance only
return 0 if both EObject have the very same content). The matcher will try to use the fact that it is a
distance to achieve a suitable scalability. It is also build on the following assumptions :
- Most EObjects have no difference and have their corresponding EObject on the other sides of the model (right and origins)
- Two consecutive calls on the distance function with the same parameters will give the same distance.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
This represent a distance function used by theProximityEObjectMatcher
to compare EObjects and retrieve the closest EObject from one side to another. -
Constructor Summary
ConstructorDescriptionCreate the matcher using the given distance function. -
Method Summary
Modifier and TypeMethodDescriptionvoid
createMatches
(Comparison comparison, Iterator<? extends EObject> leftEObjects, Iterator<? extends EObject> rightEObjects, Iterator<? extends EObject> originEObjects, Monitor monitor) This will be called by the match engine to determine matches between EObjects.boolean
Check whether the object is in the scope or not.
-
Constructor Details
-
ProximityEObjectMatcher
Create the matcher using the given distance function.- Parameters:
meter
- a function to measure the distance between twoEObject
s.
-
-
Method Details
-
createMatches
public void createMatches(Comparison comparison, Iterator<? extends EObject> leftEObjects, Iterator<? extends EObject> rightEObjects, Iterator<? extends EObject> originEObjects, Monitor monitor) This will be called by the match engine to determine matches between EObjects.The implementation should update the given comparison object by adding the Matches it detect. These matches should include both matching and unmatchings EObjects (i.e. EObjects that can be matched in all three lists, EObjects that cna be matched in only two of the three lists, and EObjects that can only be found in one of the three.
- Specified by:
createMatches
in interfaceIEObjectMatcher
- Parameters:
comparison
- the comparison to update.leftEObjects
- An iterator over the EObjects that could be found in the left side.rightEObjects
- An iterator over the EObjects that could be found in the right side.originEObjects
- And iterator over the EObject that may be considered ancestors of the couples that can be detected in the left and right sides.monitor
- The monitor to report progress or to check for cancellation
-
isInScope
Check whether the object is in the scope or not.- Specified by:
isInScope
in interfaceScopeQuery
- Parameters:
eContainer
- any EObject.- Returns:
- true if the Object is in scope. False otherwise.
-