use of org.eclipse.emf.compare.match.eobject.IEObjectMatcher in project tdq-studio-se by Talend.
the class ModelElementMatchEngine method createDQEObjectMatcher.
/**
* Creates and configures an {@link IEObjectMatcher} with the strategy given by {@code useIDs}. The {@code cache}
* will be used to cache some expensive computation (should better a LoadingCache).
*
* @param useIDs which strategy the return IEObjectMatcher must follow.
* @param weightProviderRegistry the match engine needs a WeightProvider in case of this match engine do not use
* identifiers.
* @return a new IEObjectMatcher.
*/
public static IEObjectMatcher createDQEObjectMatcher(UseIdentifiers useIDs, WeightProvider.Descriptor.Registry weightProviderRegistry) {
final IEObjectMatcher matcher;
final ModelElementEditonDistance editionDistance = new ModelElementEditonDistance(weightProviderRegistry);
final CachingDistance cachedDistance = new CachingDistance(editionDistance);
switch(useIDs) {
case NEVER:
matcher = new ProximityEObjectMatcher(cachedDistance);
break;
case ONLY:
matcher = new IdentifierEObjectMatcher();
break;
case WHEN_AVAILABLE:
// fall through to default
default:
// Use an ID matcher, delegating to proximity when no ID is available
final IEObjectMatcher contentMatcher = new ProximityEObjectMatcher(cachedDistance);
matcher = new IdentifierEObjectMatcher(contentMatcher);
break;
}
return matcher;
}
use of org.eclipse.emf.compare.match.eobject.IEObjectMatcher in project tdq-studio-se by Talend.
the class AbstractComparisonLevel method createDefaultEMFCompare.
/**
* create a EMFCompare with default configuration.
*
* @return
*/
protected EMFCompare createDefaultEMFCompare() {
// Configure EMF Compare
IEObjectMatcher matcher = ModelElementMatchEngine.createDQEObjectMatcher(UseIdentifiers.NEVER);
DefaultEqualityHelperFactory equalityHelperFactory = new DefaultEqualityHelperFactory();
IComparisonFactory comparisonFactory = new DefaultComparisonFactory(equalityHelperFactory);
IMatchEngine.Factory.Registry matchEngineRegistry = new MatchEngineFactoryRegistryImpl();
// IMatchEngine.Factory.Registry matchEngineRegistry =
// EMFCompareRCPPlugin.getDefault().getMatchEngineFactoryRegistry();
DQMatchEngineFactory matchEngineFactoryImpl = new DQMatchEngineFactory(matcher, comparisonFactory);
matchEngineRegistry.add(matchEngineFactoryImpl);
Builder builder = EMFCompare.builder();
builder.setDiffEngine(diffEngineWithFilter());
EMFCompare comparator = builder.setMatchEngineFactoryRegistry(matchEngineRegistry).build();
return comparator;
}
use of org.eclipse.emf.compare.match.eobject.IEObjectMatcher in project statecharts by Yakindu.
the class SCTMatchEngineFactory method getMatchEngine.
@Override
public IMatchEngine getMatchEngine() {
final IComparisonFactory comparisonFactory = new DefaultComparisonFactory(new DefaultEqualityHelperFactory());
final IEObjectMatcher matcher = DefaultMatchEngine.createDefaultEObjectMatcher(UseIdentifiers.WHEN_AVAILABLE);
return new SCTMatchEngine(matcher, comparisonFactory);
}
use of org.eclipse.emf.compare.match.eobject.IEObjectMatcher in project tdq-studio-se by Talend.
the class ExampleLauncher method compare.
public static void compare() {
// Load the two input models
ResourceSet resourceSet1 = new ResourceSetImpl();
ResourceSet resourceSet2 = new ResourceSetImpl();
// String xmi1 = "path/to/first/model.xmi";
// String xmi2 = "path/to/second/model.xmi";
load(fileName1, resourceSet1);
load(fileName2, resourceSet2);
// Configure EMF Compare
IEObjectMatcher matcher = DefaultMatchEngine.createDefaultEObjectMatcher(UseIdentifiers.NEVER);
IComparisonFactory comparisonFactory = new DefaultComparisonFactory(new DefaultEqualityHelperFactory());
IMatchEngine.Factory matchEngineFactory = new MatchEngineFactoryImpl(matcher, comparisonFactory);
matchEngineFactory.setRanking(20);
IMatchEngine.Factory.Registry matchEngineRegistry = new MatchEngineFactoryRegistryImpl();
matchEngineRegistry.add(matchEngineFactory);
EMFCompare comparator = EMFCompare.builder().setMatchEngineFactoryRegistry(matchEngineRegistry).build();
// Compare the two models
IComparisonScope scope = new DefaultComparisonScope(resourceSet1, resourceSet2, null);
Comparison compare = comparator.compare(scope);
comparator.compare(scope);
EList<Diff> differences = compare.getDifferences();
ICompareEditingDomain editingDomain = EMFCompareEditingDomain.create(scope.getLeft(), scope.getRight(), null);
AdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
EMFCompareConfiguration configuration = new EMFCompareConfiguration(new CompareConfiguration());
CompareEditorInput input = new ComparisonScopeEditorInput(configuration, editingDomain, adapterFactory, comparator, scope);
// CompareUI.openCompareDialog(input); // or CompareUI.openCompareEditor(input);
CompareUI.openCompareEditor(input);
}
use of org.eclipse.emf.compare.match.eobject.IEObjectMatcher in project InformationSystem by ObeoNetwork.
the class EMFCompareUtils method initializeComparator.
/**
* Initializes the EMF Compare comparator.
*
* @return the EMFCompare comparator.
*/
private static EMFCompare initializeComparator() {
final IEObjectMatcher matcher = DefaultMatchEngine.createDefaultEObjectMatcher(UseIdentifiers.NEVER);
final IComparisonFactory comparisonFactory = new DefaultComparisonFactory(new DefaultEqualityHelperFactory());
final IMatchEngine.Factory matchEngineFactory = new MatchEngineFactoryImpl(matcher, comparisonFactory);
matchEngineFactory.setRanking(20);
final IMatchEngine.Factory.Registry matchEngineRegistry = new MatchEngineFactoryRegistryImpl();
matchEngineRegistry.add(matchEngineFactory);
final IDiffProcessor diffProcessor = new DiffBuilder();
final IDiffEngine diffEngine = new DefaultDiffEngine(diffProcessor) {
@Override
protected FeatureFilter createFeatureFilter() {
return new FeatureFilter() {
@Override
protected boolean isIgnoredAttribute(EAttribute attribute) {
if (attribute == null) {
// comparison, do it here.
return true;
} else {
return super.isIgnoredAttribute(attribute);
}
}
};
}
};
final EMFCompare comparator = EMFCompare.builder().setDiffEngine(diffEngine).setMatchEngineFactoryRegistry(matchEngineRegistry).build();
return comparator;
}
Aggregations