@Override public void deleteObject(String objectId, Boolean allVersions, String user) { StoredObject obj = fStoredObjectMap.get(objectId); if (null == obj) { throw new CmisObjectNotFoundException( "Cannot delete object with id " + objectId + ". Object does not exist."); } if (obj instanceof FolderImpl) { deleteFolder(objectId, user); } else if (obj instanceof DocumentVersion) { DocumentVersion vers = (DocumentVersion) obj; VersionedDocument parentDoc = vers.getParentDocument(); boolean otherVersionsExists; if (allVersions != null && allVersions) { otherVersionsExists = false; List<DocumentVersion> allVers = parentDoc.getAllVersions(); for (DocumentVersion ver : allVers) { fStoredObjectMap.remove(ver.getId()); } } else { fStoredObjectMap.remove(objectId); otherVersionsExists = parentDoc.deleteVersion(vers); } if (!otherVersionsExists) { fStoredObjectMap.remove(parentDoc.getId()); } } else { fStoredObjectMap.remove(objectId); } }
@Override public void deleteVersion(DocumentVersion version) { StoredObject found = fStoredObjectMap.remove(version.getId()); if (null == found) { throw new CmisInvalidArgumentException( "Cannot delete object with id " + version.getId() + ". Object does not exist."); } }
@Override public DocumentVersion createVersionedDocument( String name, Map<String, PropertyData<?>> propMap, String user, Folder folder, List<String> policies, Acl addACEs, Acl removeACEs, ContentStream contentStream, VersioningState versioningState) { WebdavVersionedDocumentImpl doc = new WebdavVersionedDocumentImpl(); doc.createSystemBasePropertiesWhenCreated(propMap, user); doc.setCustomProperties(propMap); doc.setRepositoryId(fRepositoryId); doc.setName(name); String id = storeObject(doc); doc.setId(id); DocumentVersion version = doc.addVersion(versioningState, user); setContent(version, contentStream); version.createSystemBasePropertiesWhenCreated(propMap, user); version.setCustomProperties(propMap); if (null != folder) { if (hasChild(folder, name)) { throw new CmisNameConstraintViolationException( "Cannot create document an object with name " + name + " already exists in folder " + getFolderPath(folder.getId())); } doc.addParentId(folder.getId()); } int aclId = getAclId(((FolderImpl) folder), addACEs, removeACEs); doc.setAclId(aclId); if (null != policies) { doc.setAppliedPolicies(policies); } id = storeObject(version); version.setId(id); applyAcl(doc, addACEs, removeACEs); return version; }
@Override public void storeVersion(DocumentVersion version) { String id = storeObject(version); version.setId(id); }