diff --git a/org.eventb.texttools/META-INF/MANIFEST.MF b/org.eventb.texttools/META-INF/MANIFEST.MF index 3986c4ee6132eca4fb39b030ece8fc9060ee67e9..c6637d8d16cd53ee4673b13bc3cc45906d854151 100644 --- a/org.eventb.texttools/META-INF/MANIFEST.MF +++ b/org.eventb.texttools/META-INF/MANIFEST.MF @@ -18,13 +18,13 @@ Require-Bundle: org.eclipse.jface.text;bundle-version="[3.6.0,4.0.0)", org.eclipse.emf.compare.edit;bundle-version="4.0.0", org.eclipse.emf.compare.ide;bundle-version="3.1.1", org.eclipse.emf.compare.rcp;bundle-version="2.2.0" -Export-Package: org.eventb.texttools, - org.eventb.texttools.formulas, - org.eventb.texttools.merge, - org.eventb.texttools.model.texttools, - org.eventb.texttools.prettyprint, - org.eventb.texttools.syntaxExtension Bundle-Vendor: Heinrich-Heine University Dusseldorf Bundle-ClassPath: . Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy +Export-Package: org.eventb.texttools, + org.eventb.texttools.formulas, + org.eventb.texttools.model.texttools, + org.eventb.texttools.model.texttools.impl, + org.eventb.texttools.model.texttools.util, + org.eventb.texttools.prettyprint diff --git a/org.eventb.texttools/src/org/eventb/texttools/diff/EventBAttributesCheck.java b/org.eventb.texttools/old/org/eventb/texttools/diff/EventBAttributesCheck.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/diff/EventBAttributesCheck.java rename to org.eventb.texttools/old/org/eventb/texttools/diff/EventBAttributesCheck.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/diff/EventBDiffEngine.java b/org.eventb.texttools/old/org/eventb/texttools/diff/EventBDiffEngine.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/diff/EventBDiffEngine.java rename to org.eventb.texttools/old/org/eventb/texttools/diff/EventBDiffEngine.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/diff/EventBReferencesCheck.java b/org.eventb.texttools/old/org/eventb/texttools/diff/EventBReferencesCheck.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/diff/EventBReferencesCheck.java rename to org.eventb.texttools/old/org/eventb/texttools/diff/EventBReferencesCheck.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/EventBMatchEngine.java b/org.eventb.texttools/old/org/eventb/texttools/merge/EventBMatchEngine.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/merge/EventBMatchEngine.java rename to org.eventb.texttools/old/org/eventb/texttools/merge/EventBMatchEngine.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/MergeUtil.java b/org.eventb.texttools/old/org/eventb/texttools/merge/MergeUtil.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/merge/MergeUtil.java rename to org.eventb.texttools/old/org/eventb/texttools/merge/MergeUtil.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/MergerProvider.java b/org.eventb.texttools/old/org/eventb/texttools/merge/MergerProvider.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/merge/MergerProvider.java rename to org.eventb.texttools/old/org/eventb/texttools/merge/MergerProvider.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ModelElementChangeRightTargetMerger.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ModelElementChangeRightTargetMerger.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/merge/ModelElementChangeRightTargetMerger.java rename to org.eventb.texttools/old/org/eventb/texttools/merge/ModelElementChangeRightTargetMerger.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ModelMerge.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ModelMerge.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/merge/ModelMerge.java rename to org.eventb.texttools/old/org/eventb/texttools/merge/ModelMerge.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceChangeLeftTargetMerger.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceChangeLeftTargetMerger.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceChangeLeftTargetMerger.java rename to org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceChangeLeftTargetMerger.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceChangeRightTargetMerger.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceChangeRightTargetMerger.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceChangeRightTargetMerger.java rename to org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceChangeRightTargetMerger.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceOrderChangeMerger.java b/org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceOrderChangeMerger.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/merge/ReferenceOrderChangeMerger.java rename to org.eventb.texttools/old/org/eventb/texttools/merge/ReferenceOrderChangeMerger.java diff --git a/org.eventb.texttools/src/org/eventb/texttools/syntaxExtension/ISyntaxExtension.java b/org.eventb.texttools/old/org/eventb/texttools/syntaxExtension/ISyntaxExtension.java similarity index 100% rename from org.eventb.texttools/src/org/eventb/texttools/syntaxExtension/ISyntaxExtension.java rename to org.eventb.texttools/old/org/eventb/texttools/syntaxExtension/ISyntaxExtension.java diff --git a/org.eventb.texttools/plugin.xml b/org.eventb.texttools/plugin.xml index 5872784b969177331b882c0f2fbec71304ff4f6b..5d33d9e02b70c3eb975287c375e52da36bce5abd 100644 --- a/org.eventb.texttools/plugin.xml +++ b/org.eventb.texttools/plugin.xml @@ -47,7 +47,7 @@ </attributeType> </relationship> </extension> - <extension +<!-- <extension point="org.eclipse.emf.compare.match.engine"> <matchengine label="EventB Match Engine" @@ -70,5 +70,5 @@ label="Event-B Difference Engine" priority="highest"> </diffengine> - </extension> + </extension> --> </plugin> diff --git a/org.eventb.texttools/src/org/eventb/texttools/PersistenceHelper.java b/org.eventb.texttools/src/org/eventb/texttools/PersistenceHelper.java index c341fd772ab5dee6f041d0124e1bae285da47aad..41dc656323b03846d519c19d093fb47a96743cb4 100644 --- a/org.eventb.texttools/src/org/eventb/texttools/PersistenceHelper.java +++ b/org.eventb.texttools/src/org/eventb/texttools/PersistenceHelper.java @@ -8,6 +8,7 @@ package org.eventb.texttools; import java.io.IOException; import java.util.Collections; +import java.util.List; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; @@ -18,6 +19,23 @@ import org.eclipse.core.runtime.Status; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.EMap; import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.compare.Comparison; +import org.eclipse.emf.compare.Diff; +import org.eclipse.emf.compare.EMFCompare; +import org.eclipse.emf.compare.match.DefaultComparisonFactory; +import org.eclipse.emf.compare.match.DefaultEqualityHelperFactory; +import org.eclipse.emf.compare.match.DefaultMatchEngine; +import org.eclipse.emf.compare.match.IComparisonFactory; +import org.eclipse.emf.compare.match.IMatchEngine; +import org.eclipse.emf.compare.match.eobject.IEObjectMatcher; +import org.eclipse.emf.compare.match.impl.MatchEngineFactoryImpl; +import org.eclipse.emf.compare.match.impl.MatchEngineFactoryRegistryImpl; +import org.eclipse.emf.compare.merge.BatchMerger; +import org.eclipse.emf.compare.merge.IMerger.Registry; +import org.eclipse.emf.compare.merge.IMerger.RegistryImpl; +import org.eclipse.emf.compare.scope.DefaultComparisonScope; +import org.eclipse.emf.compare.scope.IComparisonScope; +import org.eclipse.emf.compare.utils.UseIdentifiers; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; @@ -26,7 +44,7 @@ import org.eventb.emf.core.AttributeType; import org.eventb.emf.core.CoreFactory; import org.eventb.emf.core.EventBElement; import org.eventb.emf.core.EventBNamedCommentedComponentElement; -import org.eventb.texttools.merge.ModelMerge; +//import org.eventb.texttools.merge.ModelMerge; import org.eventb.texttools.prettyprint.PrettyPrinter; import de.be4.eventb.core.parser.BException; @@ -141,14 +159,44 @@ public class PersistenceHelper { final IProgressMonitor monitor) { try { long time0 = System.currentTimeMillis(); - final ModelMerge merge = new ModelMerge(oldVersion, newVersion); + + 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(); + + IComparisonScope scope = new DefaultComparisonScope(oldVersion, + newVersion, null); + + Comparison comparison = comparator.compare(scope); + + List<Diff> differences = comparison.getDifferences(); + + Registry registry = RegistryImpl.createStandaloneInstance(); + BatchMerger bm = new BatchMerger(registry); + + bm.copyAllRightToLeft(differences, null); + + System.out.println("LeFuck"); + + // final ModelMerge merge = new ModelMerge(oldVersion, newVersion); long time1 = System.currentTimeMillis(); - merge.applyChanges(monitor); + // merge.applyChanges(monitor); long time2 = System.currentTimeMillis(); if (DEBUG) { System.out.println("new ModelMerge: " + (time1 - time0)); System.out.println("merge.applyChanges: " + (time2 - time1)); } + if (3 == 2 * 5) { // FIXME temp fix for dead code + throw new InterruptedException(); + } } catch (final InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -349,7 +397,7 @@ public class PersistenceHelper { final long diff = resourceTimestamp - textTimestamp; // tolerate 50ms offset (time to save file) - // TODO this is ugly!!! + // FIXME this is ugly!!! if (diff < 50) { return true; } diff --git a/org.eventb.texttools/src/org/eventb/texttools/ResourceManager.java b/org.eventb.texttools/src/org/eventb/texttools/ResourceManager.java index 4c3736bfc990737f3e64d2b51bc5ce201bb92a4a..575b4266bb55e339d0dd475a4c2c89f4653863bc 100644 --- a/org.eventb.texttools/src/org/eventb/texttools/ResourceManager.java +++ b/org.eventb.texttools/src/org/eventb/texttools/ResourceManager.java @@ -14,11 +14,6 @@ import org.eclipse.emf.common.command.BasicCommandStack; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.provider.ComposedAdapterFactory; -import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; -import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; -import org.eventb.emf.core.context.provider.ContextItemProviderAdapterFactory; -import org.eventb.emf.core.machine.provider.MachineItemProviderAdapterFactory; -import org.eventb.emf.core.provider.CoreItemProviderAdapterFactory; public class ResourceManager { private final Map<IProject, AdapterFactoryEditingDomain> projectEditingDomains = new HashMap<IProject, AdapterFactoryEditingDomain>(); @@ -37,15 +32,15 @@ public class ResourceManager { final ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory( ComposedAdapterFactory.Descriptor.Registry.INSTANCE); - adapterFactory - .addAdapterFactory(new ResourceItemProviderAdapterFactory()); - adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); - adapterFactory - .addAdapterFactory(new MachineItemProviderAdapterFactory()); - adapterFactory - .addAdapterFactory(new ContextItemProviderAdapterFactory()); - adapterFactory - .addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); +// adapterFactory +// .addAdapterFactory(new ResourceItemProviderAdapterFactory()); +// adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory()); +// adapterFactory +// .addAdapterFactory(new MachineItemProviderAdapterFactory()); +// adapterFactory +// .addAdapterFactory(new ContextItemProviderAdapterFactory()); +// adapterFactory +// .addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); final BasicCommandStack commandStack = new BasicCommandStack();