/** * @since 4.0 */ public static CDORevisionKey copyRevisionKey(CDORevisionKey source) { return new CDORevisionKeyImpl(source.getID(), source.getBranch(), source.getVersion()); }
private static boolean hasChanged(CDORevisionKey oldKey, CDORevisionKey newKey) { return oldKey.getBranch() != newKey.getBranch() || oldKey.getVersion() != newKey.getVersion(); } }
public int compare(CDORevisionKey rev1, CDORevisionKey rev2) { int result = rev1.getID().compareTo(rev2.getID()); if (result == 0) { int version1 = rev1.getVersion(); int version2 = rev2.getVersion(); result = version1 < version2 ? -1 : version1 == version2 ? 0 : 1; } return result; } }
public CDOID getID() { return key.getID(); }
public CDOBranch getBranch() { return key.getBranch(); }
public int getVersion() { return key.getVersion(); }
public void addRevision(CDORevisionKey key) { availableRevisions.put(key.getID(), key); }
private int getNewVersion(CDORevisionKey key) { if (key instanceof CDORevisionDelta) { CDORevisionDelta delta = (CDORevisionDelta)key; CDORevisable target = delta.getTarget(); if (target != null && key.getBranch() == target.getBranch()) { return target.getVersion(); } } return key.getVersion() + 1; } }
public synchronized void removeRevision(int version) { for (Iterator<Reference<InternalCDORevision>> it = iterator(); it.hasNext();) { Reference<InternalCDORevision> ref = it.next(); CDORevisionKey key = (CDORevisionKey)ref; int v = key.getVersion(); if (v == version) { it.remove(); if (TRACER.isEnabled()) { TRACER.format("Removed version {0} from cache list of {1}", version, key.getID()); //$NON-NLS-1$ } break; } else if (v < version) { break; } } }
public void addDetachedObject(CDORevisionKey revision) { CDOBranch branch = revision.getBranch(); List<CDOIDAndVersion> list = detachedObjects.get(branch); if (list == null) { list = new ArrayList<CDOIDAndVersion>(); detachedObjects.put(branch, list); } list.add(revision); } }
public synchronized boolean addRevision(InternalCDORevision revision, Reference<InternalCDORevision> reference) { int version = revision.getVersion(); for (ListIterator<Reference<InternalCDORevision>> it = listIterator(); it.hasNext();) { Reference<InternalCDORevision> ref = it.next(); InternalCDORevision foundRevision = ref.get(); if (foundRevision != null) { CDORevisionKey key = (CDORevisionKey)ref; int v = key.getVersion(); if (v == version) { return false; } if (v < version) { it.previous(); it.add(reference); return true; } } else { it.remove(); } } addLast(reference); return true; }
@Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj instanceof CDORevisionKey) { CDORevisionKey that = (CDORevisionKey)obj; return id.equals(that.getID()) && getBranch().equals(that.getBranch()) && getVersion() == that.getVersion(); } return false; }
@Override protected synchronized CDOID getXRefTargetID(CDOObject target) { CDORevisionKey key = cleanRevisions.get(target); if (key != null) { return key.getID(); } return super.getXRefTargetID(target); }
private int getNewVersion(CDORevisionKey key) { if (key instanceof CDORevisionDelta) { CDORevisionDelta delta = (CDORevisionDelta)key; CDORevisable target = delta.getTarget(); if (target != null && key.getBranch() == target.getBranch()) { return target.getVersion(); } } return key.getVersion() + 1; } }
public void addDetachedObject(CDORevisionKey revision) { CDOBranch branch = revision.getBranch(); List<CDOIDAndVersion> list = detachedObjects.get(branch); if (list == null) { list = new ArrayList<CDOIDAndVersion>(); detachedObjects.put(branch, list); } list.add(revision); } }
@Override public void execute(InternalCDOObject object, CDOState state, CDOEvent event, CDORevisionKey key) { InternalCDORevision oldRevision = object.cdoRevision(); if (key == null || key.getVersion() >= oldRevision.getVersion() - 1) { changeState(object, CDOState.CONFLICT); InternalCDOTransaction transaction = object.cdoView().toTransaction(); transaction.setConflict(object); } } }
/** * @since 4.0 */ public static String formatRevisionKey(CDORevisionKey key) { StringBuilder builder = new StringBuilder(); CDOIDUtil.write(builder, key.getID()); builder.append(":"); builder.append(key.getBranch().getID()); builder.append(":"); builder.append(key.getVersion()); return builder.toString(); }
@Override protected synchronized CDOID getXRefTargetID(CDOObject target) { CDORevisionKey key = cleanRevisions.get(target); if (key != null) { return key.getID(); } return super.getXRefTargetID(target); }