private static CDORevision getPreviousVersion(final CDORevisionManager revisionManager, final CDORevision affectedRevision) { final CDOBranchVersion previousBranchVersion = affectedRevision.getBranch().getVersion(affectedRevision.getVersion() - 1); final CDORevision previousRevision = revisionManager.getRevisionByVersion(affectedRevision.getID(), previousBranchVersion, CDORevision.UNCHUNKED, true); return previousRevision; }
public boolean handleRevision(CDORevision revision) { if (revision.getVersion() < CDOBranchVersion.FIRST_VERSION - 1) { revision = new DetachedCDORevision(revision.getEClass(), revision.getID(), revision.getBranch(), -revision.getVersion(), revision.getTimeStamp(), revision.getRevised()); } return delegate.handleRevision(revision); } }
public CDORevisionDeltaImpl(CDORevision sourceRevision, CDORevision targetRevision) { if (sourceRevision.getEClass() != targetRevision.getEClass()) { throw new IllegalArgumentException(); } eClass = sourceRevision.getEClass(); id = sourceRevision.getID(); branch = sourceRevision.getBranch(); version = sourceRevision.getVersion(); target = CDORevisionUtil.copyRevisable(targetRevision); compare(sourceRevision, targetRevision); CDORevisionData originData = sourceRevision.data(); CDORevisionData dirtyData = targetRevision.data(); Object dirtyContainerID = dirtyData.getContainerID(); if (dirtyContainerID instanceof CDOWithID) { dirtyContainerID = ((CDOWithID)dirtyContainerID).cdoID(); } if (!compare(originData.getContainerID(), dirtyContainerID) || !compare(originData.getContainingFeatureID(), dirtyData.getContainingFeatureID()) || !compare(originData.getResourceID(), dirtyData.getResourceID())) { addFeatureDelta(new CDOContainerFeatureDeltaImpl(dirtyData.getResourceID(), dirtyContainerID, dirtyData.getContainingFeatureID())); } }
public CDORevisionDeltaImpl(CDORevision revision) { eClass = revision.getEClass(); id = revision.getID(); branch = revision.getBranch(); version = revision.getVersion(); }
protected final void writeValue(IDBStoreAccessor accessor, CDORevision revision, int index, Object value) { if (TRACER.isEnabled()) { TRACER .format( "Writing value for feature {0}.{1} index {2} of {3}v{4} : {5}", //$NON-NLS-1$ getContainingClass().getName(), getFeature().getName(), index, revision.getID(), revision.getVersion(), value); } addEntry(accessor, revision.getID(), revision.getVersion(), index, value); }
protected final void writeValue(IDBStoreAccessor accessor, CDORevision revision, int idx, Object value) { if (TRACER.isEnabled()) { TRACER .format( "Writing value for feature {0}.{1} index {2} of {3} : {4}", getContainingClass().getName(), getFeature(), idx, revision, value); //$NON-NLS-1$ } addEntry(accessor, revision.getID(), revision.getBranch().getID(), revision.getVersion(), idx, value, revision.getTimeStamp()); }
private void cacheRevisions2(CDORevisionAvailabilityInfo info) { InternalCDORevisionManager revisionManager = getRevisionManager(); CDOBranch branch = info.getBranchPoint().getBranch(); for (CDORevisionKey key : info.getAvailableRevisions().values()) { CDORevision revision = (CDORevision)key; revisionManager.addRevision(revision); if (revision.getBranch() != branch) { CDOID id = revision.getID(); CDORevision firstRevision = revisionManager.getCache().getRevisionByVersion(id, branch.getVersion(CDOBranchVersion.FIRST_VERSION)); if (firstRevision != null) { long revised = firstRevision.getTimeStamp() - 1L; CDOBranchVersion target = CDOBranchUtil.copyBranchVersion(revision); PointerCDORevision pointer = new PointerCDORevision(revision.getEClass(), id, branch, revised, target); revisionManager.addRevision(pointer); } } } }
public boolean handleRevision(CDORevision revision) { CDOID id = revision.getID(); if (handled.add(id)) { return handler.handleRevision(revision); } return true; } };
protected final void writeValue(IDBStoreAccessor accessor, CDORevision revision, int idx, Object value) { if (TRACER.isEnabled()) { TRACER .format( "Writing value for feature {0}.{1} index {2} of {3} : {4}", getContainingClass().getName(), getFeature(), idx, revision, value); //$NON-NLS-1$ } addEntry(accessor, revision.getID(), revision.getVersion(), idx, value, revision.getTimeStamp()); }
protected void checkDuplicateResources(IDBStoreAccessor accessor, CDORevision revision) throws IllegalStateException { CDOID folderID = (CDOID)revision.data().getContainerID(); String name = (String)revision.data().get(EresourcePackage.eINSTANCE.getCDOResourceNode_Name(), 0); CDOID existingID = accessor.readResourceID(folderID, name, revision.getBranch().getHead()); if (existingID != null && !existingID.equals(revision.getID())) { throw new IllegalStateException("Duplicate resource node in folder " + folderID + ": " + name); //$NON-NLS-1$ //$NON-NLS-2$ } }
public void addRevision(CDORevision revision) { CheckUtil.checkArg(revision, "revision"); CDOID id = revision.getID(); Object key = createKey(id, revision.getBranch()); synchronized (revisionLists) { RevisionList list = revisionLists.get(key); if (list == null) { list = new RevisionList(); revisionLists.put(key, list); } list.addRevision((InternalCDORevision)revision, createReference(revision)); typeRefIncrease(id, revision.getEClass()); } }
int version = loadedRevision.getVersion(); if (version > CDOBranchVersion.FIRST_VERSION) CDOBranchVersion previous = loadedRevision.getBranch().getVersion(version - 1); loadedRevision = revisionManager.getRevisionByVersion(object.cdoID(), previous, CDORevision.UNCHUNKED, true); CDOBranchPoint base = loadedRevision.getBranch().getBase(); if (base.getBranch() == null) CDOCommitInfo commitInfo = getManager().getCommitInfo(loadedRevision.getTimeStamp()); handleCommitInfo(commitInfo);
public Map<CDOBranch, List<CDORevision>> getAllRevisions() { Map<CDOBranch, List<CDORevision>> result = new HashMap<CDOBranch, List<CDORevision>>(); synchronized (revisions) { List<CDORevision> list = new ArrayList<CDORevision>(); for (Reference<InternalCDORevision> ref : revisions.values()) { InternalCDORevision revision = ref.get(); if (revision != null) { list.add(revision); } } if (!list.isEmpty()) { result.put(list.get(0).getBranch(), list); } } return result; }
int version = revision.getVersion(); CDOBranch branch = revision.getBranch(); String label = getVersionLabel(versionPrefix, version, branch);
if (cdoRevision.getID().equals(id) && cdoRevision.getVersion() < branchVersion.getVersion() && !cdoRevision.isHistorical()) cache.removeRevision(cdoRevision.getID(), cdoRevision);
/** * Returns with a {@link Throwable} if a CDO resource given as a revision already exists. Otherwise returns with {@code null}. * @param revision the revision to check. * @return a {@link Throwable} if the CDO resource already exists. */ @Nullable public static Throwable checkDuplicateResources(final CDORevision revision, final CDOBranchPoint targetBranchPoint) { if (revision.isResource() || revision.isResourceFolder()) { try { StoreThreadLocal.setAccessor(getAccessor(revision.getID())); final CDOID folderId = (CDOID) revision.data().getContainerID(); final String name = (String) revision.data().get(EresourcePackage.eINSTANCE.getCDOResourceNode_Name(), 0); final CDOID existingId = StoreThreadLocal.getAccessor().readResourceID(folderId, name, targetBranchPoint); if (null != existingId && !existingId.equals(revision.getID())) { LOGGER.warn("Duplicate resource or folder: " + name + " in folder " + folderId + "."); return new SnowowlServiceException("Duplicate resource or folder: " + name + " in folder " + folderId + "."); } return null; } finally { //release resources StoreThreadLocal.release(); } } return null; }
private static CDORevision getPreviousRevision(final CDORevisionManager revisionManager, final CDORevision source) { CDOBranchPoint parentBranchPoint = source.getBranch().getBase(); while (parentBranchPoint.getBranch() != null) { final CDORevision previousRevision = revisionManager.getRevision(source.getID(), parentBranchPoint, CDORevision.UNCHUNKED, CDORevision.DEPTH_NONE, true); if (previousRevision != null) { return previousRevision; } parentBranchPoint = parentBranchPoint.getBranch().getBase(); } return null; }
if (entry.getValue().getVersion() == CDORevision.FIRST_VERSION) {
public void changeTarget(CDOBranchPoint branchPoint, List<CDOID> invalidObjects, List<CDORevisionDelta> allChangedObjects, List<CDOID> allDetachedObjects) { List<CDORevision> oldRevisions = getRevisions(invalidObjects); setBranchPoint(branchPoint); List<CDORevision> newRevisions = getRevisions(invalidObjects); Iterator<CDORevision> it = newRevisions.iterator(); for (CDORevision oldRevision : oldRevisions) { CDORevision newRevision = it.next(); if (newRevision == null) { allDetachedObjects.add(oldRevision.getID()); } else if (newRevision != oldRevision) { // Fix for Bug 369646: ensure that revisions are fully loaded repository.ensureChunks((InternalCDORevision)newRevision, CDORevision.UNCHUNKED); repository.ensureChunks((InternalCDORevision)oldRevision, CDORevision.UNCHUNKED); CDORevisionDelta delta = newRevision.compare(oldRevision); allChangedObjects.add(delta); } } }