Search in sources :

Example 6 with Match

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

the class DBDiffImpl method setMatch.

/**
 *Copied from DiffSpec
 */
@Override
public void setMatch(Match newMatch) {
    Match oldMatch = basicGetMatch();
    if (newMatch != null) {
        EList<Diff> differences = newMatch.getDifferences();
        differences.add(this);
        eNotify(new ENotificationImpl(this, Notification.SET, ComparePackage.DIFF__MATCH, oldMatch, newMatch));
    } else if (eContainer() instanceof Match) {
        EList<Diff> differences = ((Match) eContainer()).getDifferences();
        differences.remove(this);
        eNotify(new ENotificationImpl(this, Notification.UNSET, ComparePackage.DIFF__MATCH, oldMatch, newMatch));
    }
}
Also used : EList(org.eclipse.emf.common.util.EList) Diff(org.eclipse.emf.compare.Diff) DBDiff(org.obeonetwork.dsl.database.dbevolution.DBDiff) ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl) Match(org.eclipse.emf.compare.Match)

Example 7 with Match

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

the class ChangeBuilder method handle.

public Diff handle(EObject comparisonElement) {
    Diff createdDiffElement = null;
    if (comparisonElement instanceof Diff) {
        Diff diff = (Diff) comparisonElement;
        if (isReferenceAdd(diff)) {
            createdDiffElement = handleAddChange((ReferenceChange) diff);
        } else if (isReferenceDelete(diff)) {
            createdDiffElement = handleRemoveChange((ReferenceChange) diff);
        } else if (diff.getKind() == DifferenceKind.CHANGE) {
            if (diff instanceof AttributeChange) {
                AttributeChange attributeChange = (AttributeChange) diff;
                // Ignore TechID
                if (DatabasePackage.eINSTANCE.getDatabaseElement_TechID() != attributeChange.getAttribute()) {
                    createdDiffElement = handleAlterChange(attributeChange);
                }
            }
            if (diff instanceof ReferenceChange) {
                createdDiffElement = handleAlterChange((ReferenceChange) diff);
            }
        }
        // Attach newly created element to its parent
        if (createdDiffElement != null) {
            createdDiffElement.getRefinedBy().add(diff);
            diff.getMatch().getDifferences().add(createdDiffElement);
        }
    } else if (comparisonElement instanceof Match) {
        Match match = (Match) comparisonElement;
        if (match.getAllDifferences().iterator().hasNext()) {
            // There is at least one Diff in this match or one of its submatches,
            // thus we created a Diff that marks that there is some update to perform inside the match's contents.
            createdDiffElement = handleAlterChange((Match) comparisonElement);
        }
        if (createdDiffElement != null) {
            Match parent = null;
            EObject container = match.eContainer();
            if (container instanceof Match) {
                parent = (Match) container;
            } else {
                parent = (Match) comparisonElement;
            }
            parent.getDifferences().add(createdDiffElement);
        }
    }
    return createdDiffElement;
}
Also used : Diff(org.eclipse.emf.compare.Diff) DBDiff(org.obeonetwork.dsl.database.dbevolution.DBDiff) AttributeChange(org.eclipse.emf.compare.AttributeChange) EObject(org.eclipse.emf.ecore.EObject) ReferenceChange(org.eclipse.emf.compare.ReferenceChange) Match(org.eclipse.emf.compare.Match)

Aggregations

Match (org.eclipse.emf.compare.Match)7 EObject (org.eclipse.emf.ecore.EObject)5 Diff (org.eclipse.emf.compare.Diff)3 EList (org.eclipse.emf.common.util.EList)2 Comparison (org.eclipse.emf.compare.Comparison)2 Resource (org.eclipse.emf.ecore.resource.Resource)2 DBDiff (org.obeonetwork.dsl.database.dbevolution.DBDiff)2 Field (java.lang.reflect.Field)1 List (java.util.List)1 IProject (org.eclipse.core.resources.IProject)1 IResource (org.eclipse.core.resources.IResource)1 Path (org.eclipse.core.runtime.Path)1 CDOResource (org.eclipse.emf.cdo.eresource.CDOResource)1 AttributeChange (org.eclipse.emf.compare.AttributeChange)1 ReferenceChange (org.eclipse.emf.compare.ReferenceChange)1 EReference (org.eclipse.emf.ecore.EReference)1 ENotificationImpl (org.eclipse.emf.ecore.impl.ENotificationImpl)1 XMIResource (org.eclipse.emf.ecore.xmi.XMIResource)1 ILocalResource (org.eclipse.team.svn.core.resource.ILocalResource)1 ThreeWayResourceCompareInput (org.eclipse.team.svn.ui.compare.ThreeWayResourceCompareInput)1