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$ } }
/** * @since 3.0 */ public Object resolveElementProxy(CDORevision revision, EStructuralFeature feature, int accessIndex, int serverIndex) { if (!((InternalCDORevision)revision).isUnchunked()) { CDOCollectionLoadingPolicy policy = options().getCollectionLoadingPolicy(); return policy.resolveProxy(revision, feature, accessIndex, serverIndex); } return revision.data().get(feature, accessIndex); }
/** * @since 3.0 */ public Object resolveElementProxy(CDORevision revision, EStructuralFeature feature, int accessIndex, int serverIndex) { if (!((InternalCDORevision)revision).isUnchunked()) { CDOCollectionLoadingPolicy policy = options().getCollectionLoadingPolicy(); return policy.resolveProxy(revision, feature, accessIndex, serverIndex); } return revision.data().get(feature, accessIndex); }
/** * 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; }
if (name.equals(childRevision.data().get(nameFeature, 0)))
if (name.equals(childRevision.data().get(nameFeature, 0)))
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())); } }