Search in sources :

Example 6 with Diff

use of org.eclipse.emf.compare.Diff 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);
}
Also used : MatchEngineFactoryImpl(org.eclipse.emf.compare.match.impl.MatchEngineFactoryImpl) Diff(org.eclipse.emf.compare.Diff) CompareConfiguration(org.eclipse.compare.CompareConfiguration) EMFCompareConfiguration(org.eclipse.emf.compare.ide.ui.internal.configuration.EMFCompareConfiguration) DefaultEqualityHelperFactory(org.eclipse.emf.compare.match.DefaultEqualityHelperFactory) AdapterFactory(org.eclipse.emf.common.notify.AdapterFactory) IComparisonFactory(org.eclipse.emf.compare.match.IComparisonFactory) DefaultComparisonFactory(org.eclipse.emf.compare.match.DefaultComparisonFactory) ComposedAdapterFactory(org.eclipse.emf.edit.provider.ComposedAdapterFactory) MatchEngineFactoryRegistryImpl(org.eclipse.emf.compare.match.impl.MatchEngineFactoryRegistryImpl) IComparisonScope(org.eclipse.emf.compare.scope.IComparisonScope) DefaultComparisonFactory(org.eclipse.emf.compare.match.DefaultComparisonFactory) Comparison(org.eclipse.emf.compare.Comparison) AdapterFactory(org.eclipse.emf.common.notify.AdapterFactory) ComposedAdapterFactory(org.eclipse.emf.edit.provider.ComposedAdapterFactory) ICompareEditingDomain(org.eclipse.emf.compare.domain.ICompareEditingDomain) ResourceSetImpl(org.eclipse.emf.ecore.resource.impl.ResourceSetImpl) DefaultEqualityHelperFactory(org.eclipse.emf.compare.match.DefaultEqualityHelperFactory) DefaultComparisonScope(org.eclipse.emf.compare.scope.DefaultComparisonScope) IComparisonFactory(org.eclipse.emf.compare.match.IComparisonFactory) ComposedAdapterFactory(org.eclipse.emf.edit.provider.ComposedAdapterFactory) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) EMFCompareConfiguration(org.eclipse.emf.compare.ide.ui.internal.configuration.EMFCompareConfiguration) ComparisonScopeEditorInput(org.eclipse.emf.compare.ide.ui.internal.editor.ComparisonScopeEditorInput) CompareEditorInput(org.eclipse.compare.CompareEditorInput) EMFCompare(org.eclipse.emf.compare.EMFCompare) IEObjectMatcher(org.eclipse.emf.compare.match.eobject.IEObjectMatcher) IMatchEngine(org.eclipse.emf.compare.match.IMatchEngine)

Example 7 with Diff

use of org.eclipse.emf.compare.Diff in project tdq-studio-se by Talend.

the class FileMetadataTableComparisonLevel method compareWithReloadObject.

@Override
protected boolean compareWithReloadObject() throws ReloadCompareException {
    Map<ResourceSet, List<Resource>> rsJrxmlMap = removeJrxmlsFromResourceSet();
    EMFCompare comparator = createDefaultEMFCompare();
    MetadataTable tempOldTable = (MetadataTable) getTempTableFromOldFile();
    if (tempOldTable == null) {
        return false;
    }
    IComparisonScope scope = new DefaultComparisonScope(tempOldTable, (MetadataTable) selectedObj, null);
    Comparison compare = comparator.compare(scope);
    addJrxmlsIntoResourceSet(rsJrxmlMap);
    EList<Diff> differences = compare.getDifferences();
    for (Diff diff : differences) {
        // ignore the move Kind
        if (diff.getKind() == DifferenceKind.MOVE) {
            continue;
        }
        if (diff instanceof ReferenceChange) {
            ReferenceChange refChange = (ReferenceChange) diff;
            if (diff.getKind() == DifferenceKind.ADD) {
                handleRemoveElement(refChange);
            } else if (diff.getKind() == DifferenceKind.DELETE) {
                handleAddElement(refChange);
            }
        }
    }
    tempMetadataTable.getFeature().clear();
    return true;
}
Also used : DefaultComparisonScope(org.eclipse.emf.compare.scope.DefaultComparisonScope) EMFCompare(org.eclipse.emf.compare.EMFCompare) Comparison(org.eclipse.emf.compare.Comparison) Diff(org.eclipse.emf.compare.Diff) MetadataTable(org.talend.core.model.metadata.builder.connection.MetadataTable) ReferenceChange(org.eclipse.emf.compare.ReferenceChange) EList(org.eclipse.emf.common.util.EList) ArrayList(java.util.ArrayList) List(java.util.List) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) IComparisonScope(org.eclipse.emf.compare.scope.IComparisonScope)

Example 8 with Diff

use of org.eclipse.emf.compare.Diff in project InformationSystem by ObeoNetwork.

the class ExportAsSQLScriptsAction method areDatabaseDifferences.

/**
 * Checks whether the given {@link Comparison} is between two {@link DataBase}.
 * @param comparison
 * @return
 */
private boolean areDatabaseDifferences(Comparison comparison) {
    for (Diff diff : comparison.getDifferences()) {
        Match parentMatch = diff.getMatch();
        while (ComparePackage.Literals.MATCH.isInstance(parentMatch.eContainer())) {
            parentMatch = (Match) parentMatch.eContainer();
        }
        // Should be DataBase
        EObject left = parentMatch.getLeft();
        // Should be DataBase
        EObject right = parentMatch.getRight();
        if (left != null && left.eClass().getEPackage() == DatabasePackage.eINSTANCE || right != null && right.eClass().getEPackage() == DatabasePackage.eINSTANCE) {
            return true;
        }
    }
    return false;
}
Also used : Diff(org.eclipse.emf.compare.Diff) EObject(org.eclipse.emf.ecore.EObject) Match(org.eclipse.emf.compare.Match)

Example 9 with Diff

use of org.eclipse.emf.compare.Diff in project statecharts by Yakindu.

the class EdgeChangePostProcessor method postProcessEdgeDeletion.

/**
 * In this case by default following dependencies are created:<br>
 * <br>
 * EdgeDeletion <-requires-- OutgoingTransitionDeletion --requires->
 * IncomingTransitionDeletion<br>
 * <br>
 * Needs to be changed into:<br>
 * <br>
 * EdgeDeletion --requires-> OutgoingTransitionDeletion --requires->
 * IncomingTransitionDeletion<br>
 *
 * @param edgeChange
 */
private void postProcessEdgeDeletion(EdgeChange edgeChange) {
    Set<Diff> requiredOutgoingTransitionDeletions = new HashSet<Diff>();
    for (Diff requireds : edgeChange.getRequiredBy()) {
        if (requireds instanceof ReferenceChange) {
            ReferenceChange requiredRefChange = (ReferenceChange) requireds;
            // to add the corresponding change in incoming transition refs
            if (requiredRefChange.getReference() == SGraphPackage.Literals.VERTEX__OUTGOING_TRANSITIONS && requiredRefChange.getKind() == DifferenceKind.DELETE) {
                requiredOutgoingTransitionDeletions.add(requiredRefChange);
            }
        }
    }
    edgeChange.getRequires().addAll(requiredOutgoingTransitionDeletions);
}
Also used : Diff(org.eclipse.emf.compare.Diff) ReferenceChange(org.eclipse.emf.compare.ReferenceChange) HashSet(java.util.HashSet)

Example 10 with Diff

use of org.eclipse.emf.compare.Diff in project statecharts by Yakindu.

the class EdgeChangePostProcessor method postProcessEdgeAddition.

/**
 * In this case by default following dependencies are created:<br>
 * <br>
 * EdgeDeletion --requires-> OutgoingTransitionDeletion <-requires--
 * IncomingTransitionDeletion<br>
 * <br>
 * Needs to be changed into:<br>
 * <br>
 * EdgeDeletion --requires-> IncomingTransitionDeletion --requires->
 * OutgoingTransitionDeletion<br>
 *
 * @param edgeChange
 */
private void postProcessEdgeAddition(EdgeChange edgeChange) {
    Set<Diff> requiredIncomingTransitionAdditions = new HashSet<Diff>();
    for (Diff requireds : edgeChange.getRequires()) {
        if (requireds instanceof ReferenceChange) {
            ReferenceChange requiredRefChange = (ReferenceChange) requireds;
            // to add the corresponding change in incoming transition refs
            if (requiredRefChange.getReference() == SGraphPackage.Literals.VERTEX__OUTGOING_TRANSITIONS && requiredRefChange.getKind() == DifferenceKind.ADD) {
                requiredIncomingTransitionAdditions.addAll(findRequiredIncomingTransitionRefChange(requiredRefChange, DifferenceKind.ADD));
            }
        }
    }
    edgeChange.getRequires().addAll(requiredIncomingTransitionAdditions);
}
Also used : Diff(org.eclipse.emf.compare.Diff) ReferenceChange(org.eclipse.emf.compare.ReferenceChange) HashSet(java.util.HashSet)

Aggregations

Diff (org.eclipse.emf.compare.Diff)14 Comparison (org.eclipse.emf.compare.Comparison)7 EList (org.eclipse.emf.common.util.EList)6 EMFCompare (org.eclipse.emf.compare.EMFCompare)6 ReferenceChange (org.eclipse.emf.compare.ReferenceChange)6 DefaultComparisonScope (org.eclipse.emf.compare.scope.DefaultComparisonScope)6 IComparisonScope (org.eclipse.emf.compare.scope.IComparisonScope)6 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)6 ArrayList (java.util.ArrayList)5 List (java.util.List)5 EObject (org.eclipse.emf.ecore.EObject)4 DBDiff (org.obeonetwork.dsl.database.dbevolution.DBDiff)4 Match (org.eclipse.emf.compare.Match)3 HashSet (java.util.HashSet)2 DiffContentService (org.obeonetwork.dsl.database.compare.extensions.services.DiffContentService)2 CompareConfiguration (org.eclipse.compare.CompareConfiguration)1 CompareEditorInput (org.eclipse.compare.CompareEditorInput)1 AdapterFactory (org.eclipse.emf.common.notify.AdapterFactory)1 AttributeChange (org.eclipse.emf.compare.AttributeChange)1 ICompareEditingDomain (org.eclipse.emf.compare.domain.ICompareEditingDomain)1