private void checkDuplicateResource(InternalCDORevision revision) { CDOID revisionFolder = (CDOID)revision.data().getContainerID(); String revisionName = (String)revision.data().get(resourceNameFeature, 0); IStoreAccessor accessor = StoreThreadLocal.getAccessor(); CDOID resourceID = accessor.readResourceID(revisionFolder, revisionName, revision); if (!CDOIDUtil.isNull(resourceID)) { throw new IllegalStateException("Duplicate resource: name=" + revisionName + ", folderID=" + revisionFolder); //$NON-NLS-1$ //$NON-NLS-2$ } }
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())); } }
/** * @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); }
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$ } }
String name = (String)revision.data().get(resourceNameFeature, 0); IStoreAccessor accessor = StoreThreadLocal.getAccessor();
private String getResourcePath(InternalCDORevision revision) { EAttribute nameFeature = EresourcePackage.eINSTANCE.getCDOResourceNode_Name(); CDOID folderID = (CDOID)revision.data().getContainerID(); String name = (String)revision.data().get(nameFeature, 0); if (CDOIDUtil.isNull(folderID)) { if (name == null) { return CDOURIUtil.SEGMENT_SEPARATOR; } return name; } InternalCDOObject object = getObject(folderID, true); if (object instanceof CDOResourceFolder) { CDOResourceFolder folder = (CDOResourceFolder)object; String path = folder.getPath(); return path + CDOURIUtil.SEGMENT_SEPARATOR + name; } throw new ImplementationError(MessageFormat.format(Messages.getString("CDOViewImpl.14"), object)); //$NON-NLS-1$ }
/** * 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; }
CDOID folderID; Object containerID = data.getContainerID(); if (containerID instanceof CDOWithID) String name = (String)revision.data().get(EresourcePackage.Literals.CDO_RESOURCE_NODE__NAME, 0); if (CDOIDUtil.isNull(folderID))
CDOID revisionFolder = (CDOID)revision.data().getContainerID(); if (!CDOIDUtil.equals(revisionFolder, folderID)) String revisionName = (String)revision.data().get(resourceNameFeature, 0); boolean useEquals = exactMatch || revisionName == null || name == null; boolean match = useEquals ? ObjectUtil.equals(revisionName, name) : revisionName.startsWith(name);