diff options
author | Eike Stepper | 2015-02-17 17:06:05 +0000 |
---|---|---|
committer | Eike Stepper | 2015-02-18 14:42:50 +0000 |
commit | e2cca3f21b3a8dd87ea3985911099c164763989a (patch) | |
tree | 1f84497a92d8f89313f3ee84a93e565d9045bd7c /plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java | |
parent | 3f77253efe79a20cb9c9588499f7887b5af155f8 (diff) | |
download | cdo-e2cca3f21b3a8dd87ea3985911099c164763989a.tar.gz cdo-e2cca3f21b3a8dd87ea3985911099c164763989a.tar.xz cdo-e2cca3f21b3a8dd87ea3985911099c164763989a.zip |
[458349] Consolidate UI
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=458349
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java index c2222c3632..a10c0df4b9 100644 --- a/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java +++ b/plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java @@ -51,7 +51,9 @@ import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageUnit; import org.eclipse.emf.cdo.spi.common.revision.CDOIDMapper; import org.eclipse.emf.cdo.spi.common.revision.DetachedCDORevision; import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevision; +import org.eclipse.emf.cdo.spi.common.revision.InternalCDORevisionManager; import org.eclipse.emf.cdo.spi.common.revision.ManagedRevisionProvider; +import org.eclipse.emf.cdo.spi.common.revision.SyntheticCDORevision; import org.eclipse.emf.cdo.spi.server.InternalRepository; import org.eclipse.emf.cdo.spi.server.InternalStore; import org.eclipse.emf.cdo.spi.workspace.InternalCDOWorkspace; @@ -635,7 +637,38 @@ public class CDOWorkspaceImpl extends Notifier implements InternalCDOWorkspace } final List<CDORevisionKey> detachedRevisions = new ArrayList<CDORevisionKey>(); - revertAddedObjects(revertData, localBranch, accessor, detachedRevisions); + for (CDOIDAndVersion key : revertData.getDetachedObjects()) + { + CDOID id = key.getID(); + int version = getRevision(id).getVersion(); + + for (int v = 1; v <= version; v++) + { + accessor.rawDelete(id, v, localBranch, null, new Monitor()); + } + + detachedRevisions.add(CDORevisionUtil.createRevisionKey(id, localBranch, version)); + } + + for (CDOIDAndVersion key : revertData.getNewObjects()) + { + CDOID id = key.getID(); + + SyntheticCDORevision[] synthetics = { null }; + InternalCDORevisionManager revisionManager = localSession.getRevisionManager(); + revisionManager.getRevision(id, head, CDORevision.UNCHUNKED, CDORevision.DEPTH_NONE, true, synthetics); + + int version = synthetics[0].getVersion() - 1; + EClass eClass = synthetics[0].getEClass(); + + InternalCDORevision baseRevision = (InternalCDORevision)base.getRevision(id); + for (int v = baseRevision.getVersion(); v <= version; v++) + { + accessor.rawDelete(id, v, localBranch, eClass, new Monitor()); + } + + accessor.rawStore(baseRevision, new Monitor()); + } base.deleteAddedAndDetachedObjects(accessor, localBranch); finishRawAccess(accessor); @@ -674,23 +707,6 @@ public class CDOWorkspaceImpl extends Notifier implements InternalCDOWorkspace setDirty(false); } - private void revertAddedObjects(CDOChangeSetData revertData, final CDOBranch localBranch, - IStoreAccessor.Raw accessor, final List<CDORevisionKey> detachedRevisions) - { - for (CDOIDAndVersion key : revertData.getDetachedObjects()) - { - CDOID id = key.getID(); - int version = getRevision(id).getVersion(); - - for (int v = 1; v <= version; v++) - { - accessor.rawDelete(id, v, localBranch, null, new Monitor()); - } - - detachedRevisions.add(CDORevisionUtil.createRevisionKey(id, localBranch, version)); - } - } - public void replace(String branchPath, long timeStamp) { // TODO: implement CDOWorkspaceImpl.replace(branchPath, timeStamp) |