Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2015-02-17 17:06:05 +0000
committerEike Stepper2015-02-18 14:42:50 +0000
commite2cca3f21b3a8dd87ea3985911099c164763989a (patch)
tree1f84497a92d8f89313f3ee84a93e565d9045bd7c /plugins/org.eclipse.emf.cdo.workspace/src/org/eclipse/emf/cdo/internal/workspace/CDOWorkspaceImpl.java
parent3f77253efe79a20cb9c9588499f7887b5af155f8 (diff)
downloadcdo-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.java52
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)

Back to the top