|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectit.sistematica.isharedoc.opencmis.indatabase.storedobj.impl.ObjectStoreImpl
public class ObjectStoreImpl
The object store is the central core of the in-database repository.
Certain methods in the in-memory repository must guarantee constraints. For example a folder enforces that each child has a unique name. Therefore certain operations must occur in an atomic manner. In the example it must be guaranteed that no write access occurs to the map between acquiring the iterator to find the children and finishing the add operation when no name conflicts can occur. For this purpose this class has methods to lock an unlock the state of the repository. It is very important that the caller acquiring the lock enforces an unlock under all circumstances. Typical code is:
ObjectStoreImpl os = ... ;
try {
os.lock();
} finally {
os.unlock();
}
The locking is very coarse-grained. Productive implementations would probably
implement finer grained locks on a folder or document rather than the
complete repository.
| Field Summary | |
|---|---|
protected DocumentManager |
documentManager
|
protected it.neverworks.data.EntityManager |
entities
|
protected java.lang.String |
fRepositoryId
|
protected StoredObject |
fRootFolder
|
protected it.neverworks.application.service.UserInfo |
userInfo
|
| Constructor Summary | |
|---|---|
ObjectStoreImpl(DocumentManager documentManager,
it.neverworks.data.EntityManager entities)
|
|
ObjectStoreImpl(DocumentManager documentManager,
it.neverworks.data.EntityManager entities,
java.lang.String repositoryId)
|
|
ObjectStoreImpl(java.lang.String repositoryId)
|
|
| Method Summary | |
|---|---|
org.apache.chemistry.opencmis.commons.data.Acl |
applyAcl(StoredObject so,
org.apache.chemistry.opencmis.commons.data.Acl addAces,
org.apache.chemistry.opencmis.commons.data.Acl removeAces,
org.apache.chemistry.opencmis.commons.enums.AclPropagation aclPropagation,
java.lang.String principalId)
Apply a ACLs by relative adding and removing a list of ACEs to/from an object |
org.apache.chemistry.opencmis.commons.data.Acl |
applyAcl(StoredObject so,
org.apache.chemistry.opencmis.commons.data.Acl acl,
org.apache.chemistry.opencmis.commons.enums.AclPropagation aclPropagation,
java.lang.String principalId)
Apply a ACLs by setting a new list of ACEs to an object |
void |
checkAllAccess(java.lang.String principalId,
StoredObject so)
|
void |
checkReadAccess(java.lang.String principalId,
StoredObject so)
|
void |
checkWriteAccess(java.lang.String principalId,
StoredObject so)
|
void |
clear()
Clear repository and remove all data. |
Document |
createDocument(java.lang.String name,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
Folder folder,
java.util.List<java.lang.String> policies,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs)
Create a document as initial step. |
Folder |
createFolder(java.lang.String name)
|
Folder |
createFolder(java.lang.String name,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
Folder parent,
java.util.List<java.lang.String> policies,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs)
Create a folder as initial step. |
StoredObject |
createItem(java.lang.String name,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
Folder folder,
java.util.List<java.lang.String> policies,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs)
Create an item as initial step. |
StoredObject |
createPolicy(java.lang.String name,
java.lang.String policyText,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user)
Create a policy. |
StoredObject |
createRelationship(java.lang.String name,
StoredObject sourceObject,
StoredObject targetObject,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs)
Create a relationship. |
StoredObject |
createStore(java.lang.String name)
|
DocumentVersion |
createVersionedDocument(java.lang.String name,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
Folder folder,
java.util.List<java.lang.String> policies,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs,
org.apache.chemistry.opencmis.commons.data.ContentStream contentStream,
org.apache.chemistry.opencmis.commons.enums.VersioningState versioningState)
Create a document that supports versions as initial step. |
void |
deleteObject(java.lang.String objectId,
java.lang.Boolean allVersions,
java.lang.String user)
Deletes an object from the store. |
java.util.List<InDatabaseAcl> |
getAllAclsForUser(java.lang.String principalId,
Permission permission)
|
java.util.List<StoredObject> |
getCheckedOutDocuments(java.lang.String orderBy,
java.lang.String user,
org.apache.chemistry.opencmis.commons.enums.IncludeRelationships includeRelationships)
Return a list of all documents that are checked out in the repository. |
it.neverworks.util.Configuration |
getConfiguration()
|
DocumentManager |
getDocumentManager()
|
it.neverworks.data.EntityManager |
getEntityManager()
|
java.util.Set<java.lang.String> |
getIds()
|
(package private) StoredObject |
getObject(java.lang.String id)
|
StoredObject |
getObjectById(java.lang.String objectId)
get an object by its id |
StoredObject |
getObjectByPath(java.lang.String path,
java.lang.String user)
return an object by path. |
long |
getObjectCount()
For statistics: return the number of objects contained in the system |
java.util.List<StoredObject> |
getRelationships(java.lang.String objectId,
java.util.List<java.lang.String> typeIds,
org.apache.chemistry.opencmis.commons.enums.RelationshipDirection direction)
Get relationships to and from an object |
StoredObject |
getRootFolder()
Get the root folder of this object store |
boolean |
hasAllAccess(java.lang.String principalId,
StoredObject so)
|
boolean |
hasReadAccess(java.lang.String principalId,
StoredObject so)
|
boolean |
hasWriteAccess(java.lang.String principalId,
StoredObject so)
|
boolean |
isTypeInUse(java.lang.String typeId)
Check if this store contains any object with the given type id |
void |
loadStore(java.lang.String repositoryId)
|
void |
lock()
|
StoredObject |
makeWrapper(DocumentContent dc)
|
StoredObject |
makeWrapper(File file)
|
(package private) void |
removeObject(java.lang.String id)
|
void |
removeVersion(DocumentVersion vers)
|
java.lang.String |
storeObject(StoredObject so)
|
void |
unlock()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected java.lang.String fRepositoryId
protected StoredObject fRootFolder
protected it.neverworks.application.service.UserInfo userInfo
protected it.neverworks.data.EntityManager entities
protected DocumentManager documentManager
| Constructor Detail |
|---|
public ObjectStoreImpl(java.lang.String repositoryId)
public ObjectStoreImpl(DocumentManager documentManager,
it.neverworks.data.EntityManager entities)
public ObjectStoreImpl(DocumentManager documentManager,
it.neverworks.data.EntityManager entities,
java.lang.String repositoryId)
| Method Detail |
|---|
public it.neverworks.util.Configuration getConfiguration()
public DocumentManager getDocumentManager()
public it.neverworks.data.EntityManager getEntityManager()
public void loadStore(java.lang.String repositoryId)
public StoredObject createStore(java.lang.String name)
public void lock()
public void unlock()
public StoredObject getRootFolder()
ObjectStore
getRootFolder in interface ObjectStore
public StoredObject getObjectByPath(java.lang.String path,
java.lang.String user)
ObjectStore
getObjectByPath in interface ObjectStorepath - the path to the object
public StoredObject getObjectById(java.lang.String objectId)
ObjectStore
getObjectById in interface ObjectStoreobjectId - the id of the object
public void deleteObject(java.lang.String objectId,
java.lang.Boolean allVersions,
java.lang.String user)
ObjectStore
deleteObject in interface ObjectStoreallVersions - is TRUE all version of the document are deleted, otherwise
just this onepublic void removeVersion(DocumentVersion vers)
public java.lang.String storeObject(StoredObject so)
StoredObject getObject(java.lang.String id)
void removeObject(java.lang.String id)
public java.util.Set<java.lang.String> getIds()
public void clear()
clear in interface ObjectStorepublic long getObjectCount()
ObjectStore
getObjectCount in interface ObjectStorepublic StoredObject makeWrapper(DocumentContent dc)
public StoredObject makeWrapper(File file)
public StoredObject createItem(java.lang.String name,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
Folder folder,
java.util.List<java.lang.String> policies,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs)
ObjectStore
createItem in interface ObjectStorename - name of the documentpropMap - map of propertiesuser - the user who creates the documentfolder - the parent folderpolicies - list of policies to applyaddACEs - aces that are addedremoveACEs - aces that are removed
@Transactional
public Document createDocument(java.lang.String name,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
Folder folder,
java.util.List<java.lang.String> policies,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs)
ObjectStore
createDocument in interface ObjectStorename - name of the documentpropMap - map of propertiesuser - the user who creates the documentfolder - the parent folderpolicies - list of policies to applyaddACEs - aces that are addedremoveACEs - aces that are removed
@Transactional
public DocumentVersion createVersionedDocument(java.lang.String name,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
Folder folder,
java.util.List<java.lang.String> policies,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs,
org.apache.chemistry.opencmis.commons.data.ContentStream contentStream,
org.apache.chemistry.opencmis.commons.enums.VersioningState versioningState)
ObjectStore
createVersionedDocument in interface ObjectStorename - name of the document * @param propMap map of properitiesuser - the user who creates the documentfolder - the parent folderpolicies - list of policies to applyaddACEs - aces that are addedremoveACEs - aces that are removed
@Transactional
public Folder createFolder(java.lang.String name,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
Folder parent,
java.util.List<java.lang.String> policies,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs)
ObjectStore
createFolder in interface ObjectStorename - name of the folderpropMap - map of propertiesuser - the user who creates the documentparent - the parent folderpolicies - list of policies to applyaddACEs - aces that are addedremoveACEs - aces that are removed
@Transactional public Folder createFolder(java.lang.String name)
@Transactional
public StoredObject createPolicy(java.lang.String name,
java.lang.String policyText,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user)
ObjectStore
createPolicy in interface ObjectStorename - name of the documentpolicyText - policy text to apply to this policypropMap - map of propertiesuser - the user who creates the document
public java.util.List<StoredObject> getCheckedOutDocuments(java.lang.String orderBy,
java.lang.String user,
org.apache.chemistry.opencmis.commons.enums.IncludeRelationships includeRelationships)
ObjectStore
getCheckedOutDocuments in interface ObjectStoreorderBy - orderBy specification according to CMIS spec.user - user id of user callingincludeRelationships - if true include all relationships in the response
@Transactional
public StoredObject createRelationship(java.lang.String name,
StoredObject sourceObject,
StoredObject targetObject,
java.util.Map<java.lang.String,org.apache.chemistry.opencmis.commons.data.PropertyData<?>> propMap,
java.lang.String user,
org.apache.chemistry.opencmis.commons.data.Acl addACEs,
org.apache.chemistry.opencmis.commons.data.Acl removeACEs)
ObjectStore
createRelationship in interface ObjectStoresourceObject - source of the relationshiptargetObject - target of the relationshippropMap - map of properitiesuser - the user who creates the documentaddACEs - aces that are addedremoveACEs - aces that are removed
public java.util.List<StoredObject> getRelationships(java.lang.String objectId,
java.util.List<java.lang.String> typeIds,
org.apache.chemistry.opencmis.commons.enums.RelationshipDirection direction)
ObjectStore
getRelationships in interface ObjectStoreobjectId - id of object to get relationships with
@Transactional
public org.apache.chemistry.opencmis.commons.data.Acl applyAcl(StoredObject so,
org.apache.chemistry.opencmis.commons.data.Acl addAces,
org.apache.chemistry.opencmis.commons.data.Acl removeAces,
org.apache.chemistry.opencmis.commons.enums.AclPropagation aclPropagation,
java.lang.String principalId)
ObjectStore
applyAcl in interface ObjectStoreso - object where ACLs are appliedaddAces - list of ACEs to be addedremoveAces - list of ACEs to be removedaclPropagation - enum value how to propagate ACLs to child objects
@Transactional
public org.apache.chemistry.opencmis.commons.data.Acl applyAcl(StoredObject so,
org.apache.chemistry.opencmis.commons.data.Acl acl,
org.apache.chemistry.opencmis.commons.enums.AclPropagation aclPropagation,
java.lang.String principalId)
ObjectStore
applyAcl in interface ObjectStoreso - object where ACLs are appliedacl - list of ACEs to be appliedaclPropagation - enum value how to propagate ACLs to child objects
public java.util.List<InDatabaseAcl> getAllAclsForUser(java.lang.String principalId,
Permission permission)
public boolean hasReadAccess(java.lang.String principalId,
StoredObject so)
public boolean hasWriteAccess(java.lang.String principalId,
StoredObject so)
public boolean hasAllAccess(java.lang.String principalId,
StoredObject so)
public void checkReadAccess(java.lang.String principalId,
StoredObject so)
public void checkWriteAccess(java.lang.String principalId,
StoredObject so)
public void checkAllAccess(java.lang.String principalId,
StoredObject so)
public boolean isTypeInUse(java.lang.String typeId)
ObjectStore
isTypeInUse in interface ObjectStoretypeId - id of type definition to check
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||