Class WorkspaceExplorerResourceDAO
- java.lang.Object
-
- org.ametys.runtime.plugin.component.AbstractLogEnabled
-
- org.ametys.plugins.explorer.resources.actions.ExplorerResourcesDAO
-
- org.ametys.plugins.workspaces.documents.WorkspaceExplorerResourceDAO
-
- All Implemented Interfaces:
LogEnabled
,PluginAware
,Component
,Contextualizable
,Serviceable
public class WorkspaceExplorerResourceDAO extends ExplorerResourcesDAO implements PluginAware
DAO for resources of a project
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
WorkspaceExplorerResourceDAO.ResourceType
Enumeration for resource type-
Nested classes/interfaces inherited from class org.ametys.plugins.explorer.resources.actions.ExplorerResourcesDAO
ExplorerResourcesDAO.VersionInformation
-
-
Field Summary
Fields Modifier and Type Field Description protected AddOrUpdateResourceHelper
_addOrUpdateResourceHelper
resource operation helperstatic String
ROLE
Avalon Role-
Fields inherited from class org.ametys.plugins.explorer.resources.actions.ExplorerResourcesDAO
_cocoonContext, _context, _currentUserProvider, _i18nUtils, _metadataPopulatorEP, _observationManager, _resolver, _rightManager, _threadDAO, _tikaProvider, _userHelper, RIGHTS_COLLECTION_ADD, RIGHTS_COLLECTION_CMIS_ADD, RIGHTS_COLLECTION_DELETE, RIGHTS_COLLECTION_EDIT, RIGHTS_RESOURCE_ADD, RIGHTS_RESOURCE_COMMENT, RIGHTS_RESOURCE_DELETE, RIGHTS_RESOURCE_EDIT_DC, RIGHTS_RESOURCE_MODERATE_COMMENT, RIGHTS_RESOURCE_RENAME, RIGHTS_RESOURCE_UNLOCK_ALL
-
-
Constructor Summary
Constructors Constructor Description WorkspaceExplorerResourceDAO()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected boolean
_canView(Resource file)
Indicates if the current user can view the fileprotected boolean
_canView(ResourceCollection folder)
Indicates if the current user can view the folderprotected Map<String,Object>
_comment2json(JCRPost comment, boolean isEdition)
Get JSOn representation of a commentprotected Map<String,Object>
_extractDocumentData(AmetysObject document, boolean excludeFolders, boolean excludeFiles)
Internal method to extract the valuable data of a documentprotected Map<String,Object>
_extractFileData(Resource file)
Internal method to extract the valuable data of a fileprotected Map<String,Object>
_extractFileLockData(Resource file)
Internal method to extract the data relative to the lock state of a fileprotected Map<String,Object>
_extractFileRightData(Resource file)
Internal method to extract the data concerning the right of the current user for fileprotected Map<String,Object>
_extractFolderData(ResourceCollection folder)
Internal method to extract the valuable data of a folderprotected Map<String,Object>
_extractFolderRightData(ResourceCollection folder)
Internal method to extract the data concerning the right of the current user for a folderprotected String
_getComment(JCRPost post)
Get the content of a comment as a Stringprotected String
_getCommentForEditing(JCRPost post)
Get the content of a comment to edit as a Stringprotected boolean
_hasChildren(ResourceCollection folder, boolean ignoreFiles)
Internal method to detect if a document has childprotected void
_setComment(JCRPost comment, String content)
Update the content of a commentprotected Map<String,Object>
_version2json(JCRResource resource, ExplorerResourcesDAO.VersionInformation versionInformation)
Get the JSON representation of a version of a resourceMap<String,Object>
addCMISCollection(String parentId, String originalName, String url, String login, String password, String repoId, boolean renameIfExists)
Creates a new CMIS folder (seeCMISRootResourcesCollection
)Map<String,Object>
addFile(InputStream inputStream, String fileName, String parentId, boolean unarchive, boolean allowRename, boolean allowUpdate)
Add a fileMap<String,Object>
addFile(Part part, String parentId, boolean unarchive, boolean allowRename, boolean allowUpdate)
Add a fileMap<String,Object>
addFolder(String parentId, String inputName, String description)
Add a folderMap<String,Object>
addFolder(String parentId, String inputName, String description, Boolean renameIfExists)
Add a folderMap<String,Object>
copyFiles(List<String> ids, String targetId)
Copy file resourcesMap<String,Object>
deleteFolder(String id)
Delete a folderMap<String,Object>
editCMISCollection(String id, String name, String url, String login, String password, String repoId)
Edits a CMIS folder (seeCMISRootResourcesCollection
)Map<String,Object>
editFile(String id, String inputName, String description, Collection<String> tags)
Edit a fileMap<String,Object>
editFolder(String id, String inputName, String description)
Edit a folderString
generateWebdavUri(String documentId)
Generates an uri to open a document through webdavList<Map<String,Object>>
getChildDocumentsData(String parentId, boolean excludeFolders, boolean excludeFiles)
Retrieves the children of a document and extracts its data.List<Map<String,Object>>
getChildDocumentsData(ResourceCollection document, boolean excludeFolders, boolean excludeFiles)
Retrieves the children of a document and extracts its data.Map<String,String>
getCMISProperties(String id)
Get the CMIS properties of collectionMap<String,Object>
getDocumentData(String id, boolean excludeFilesInFolderHierarchy)
Deprecated.Long
getDocumentsCount(Project project)
Count the total of documents in the projectList<Map<String,Object>>
getDocumentsData(List<String> ids, boolean excludeFilesInFolderHierarchy)
Retrieves the set of standard data for a list of documentsMap<String,Object>
getFile(String resourceId)
Get fileList<Map<String,Object>>
getFiles(String parentId)
Get the child filesMap<String,Object>
getFolder(String folderId)
Get folderList<Map<String,Object>>
getFolders(String parentId)
Get the child foldersMap<String,Object>
getFoldersAndFiles(String folderId)
Get the child folders and filesMap<String,Object>
getRootFolder()
Get the root folderboolean
isCMISCollection(String id)
Determines if a object is aCMISRootResourcesCollection
Map<String,Object>
lockResources(List<String> ids)
Lock resourcesMap<String,Object>
moveDocuments(List<String> ids, String targetId)
Move documents (files or folders)Map<String,Object>
renameFile(String id, String name)
Rename a folderMap<String,Object>
renameFolder(String id, String name)
Rename a folderboolean
resourceExists(String parentId, String name)
Determines if a resource with given name already existsMap<String,Object>
searchFiles(String query, String lang)
Search for files in the document moduleMap<String,Object>
searchFilesByType(String type)
Search for files by their typevoid
service(ServiceManager manager)
void
setPluginInfo(String pluginName, String featureName, String id)
Sets the plugin info relative to the current component.
Note : The feature name may be null if the targeted component in declared at plugin level.Map<String,Object>
setTags(String resourceId, List<Object> tags)
Set tags to resourceMap<String,Object>
unlockResources(List<String> ids)
Unlock resources-
Methods inherited from class org.ametys.plugins.explorer.resources.actions.ExplorerResourcesDAO
_canAddComment, _canDeleteComment, _canEditComment, addComment, addResourceCollection, addResourceCollection, checkLock, checkpoint, checkUserRight, contextualize, copyResource, copyResource, createResource, deleteComment, deleteObject, deleteObject, editCMISCollection, editComment, extractResourceMetadata, filterResourcesByRegExp, getComment, getComments, getDCMetadata, getDefaultInfoAsRootNode, getDefaultInfoAsRootNode, getExplorerNodeProperties, getNodesInfo, getResourceCollectionType, getResourceProperties, getResourcesRootNodes, getRootNodesInfo, getUserRight, getUserRights, hasRight, moveObject, moveObject, renameObject, renameObject, renameResource, renameResource, resourceExists, resourceHistory, restoreResource, setDCMetadata, setDCMetadata, updateResource
-
Methods inherited from class org.ametys.runtime.plugin.component.AbstractLogEnabled
getLogger, setLogger
-
-
-
-
Field Detail
-
_addOrUpdateResourceHelper
protected AddOrUpdateResourceHelper _addOrUpdateResourceHelper
resource operation helper
-
-
Constructor Detail
-
WorkspaceExplorerResourceDAO
public WorkspaceExplorerResourceDAO()
-
-
Method Detail
-
service
public void service(ServiceManager manager) throws ServiceException
- Specified by:
service
in interfaceServiceable
- Overrides:
service
in classExplorerResourcesDAO
- Throws:
ServiceException
-
setPluginInfo
public void setPluginInfo(String pluginName, String featureName, String id)
Description copied from interface:PluginAware
Sets the plugin info relative to the current component.
Note : The feature name may be null if the targeted component in declared at plugin level.- Specified by:
setPluginInfo
in interfacePluginAware
- Parameters:
pluginName
- Unique identifier for the plugin hosting the extensionfeatureName
- Unique feature identifier (unique for a given pluginName)id
- Unique identifier of this component
-
addFolder
public Map<String,Object> addFolder(String parentId, String inputName, String description) throws IllegalAccessException
Add a folder- Parameters:
parentId
- Identifier of the parent collection. Can be null to add folder to root folder.inputName
- The desired namedescription
- The folder description- Returns:
- The created folder or an error if a folder with same name already exists.
- Throws:
IllegalAccessException
- If the user has no sufficient rights
-
addFolder
public Map<String,Object> addFolder(String parentId, String inputName, String description, Boolean renameIfExists)
Add a folder- Parameters:
parentId
- Identifier of the parent collection. Can be null to add folder to root folder.inputName
- The desired namedescription
- The folder descriptionrenameIfExists
- True to rename if existing- Returns:
- The result map with id, parentId and name keys
-
renameFolder
public Map<String,Object> renameFolder(String id, String name)
Rename a folder- Parameters:
id
- Identifier of the folder to editname
- The new name- Returns:
- The result map with id and name keys
-
editFolder
public Map<String,Object> editFolder(String id, String inputName, String description)
Edit a folder- Parameters:
id
- Identifier of the folder to editinputName
- The desired namedescription
- The folder description- Returns:
- The result map with id and name keys
-
deleteFolder
public Map<String,Object> deleteFolder(String id)
Delete a folder- Parameters:
id
- Identifier of the folder to delete- Returns:
- The result map with the parent id key
-
lockResources
public Map<String,Object> lockResources(List<String> ids)
Lock resources- Parameters:
ids
- The id of resources to lock- Returns:
- the result.
-
unlockResources
public Map<String,Object> unlockResources(List<String> ids)
Unlock resources- Parameters:
ids
- The id of resources to lock- Returns:
- the result.
-
resourceExists
public boolean resourceExists(String parentId, String name)
Determines if a resource with given name already exists- Overrides:
resourceExists
in classExplorerResourcesDAO
- Parameters:
parentId
- the id of parent collection. Can be null.name
- the name of resource- Returns:
- true if a resource with same name exists
-
renameFile
public Map<String,Object> renameFile(String id, String name)
Rename a folder- Parameters:
id
- Identifier of the folder to editname
- The new name- Returns:
- The result map with id and name keys
-
editFile
public Map<String,Object> editFile(String id, String inputName, String description, Collection<String> tags)
Edit a file- Parameters:
id
- Identifier of the file to editinputName
- The desired namedescription
- The file descriptiontags
- The file tags- Returns:
- The result map with id and name keys
-
setTags
public Map<String,Object> setTags(String resourceId, List<Object> tags)
Set tags to resource- Parameters:
resourceId
- the id of resourcestags
- the file tags to set- Returns:
- the file tags
-
copyFiles
public Map<String,Object> copyFiles(List<String> ids, String targetId) throws RepositoryException
Copy file resources- Parameters:
ids
- The list of identifiers for the resources to copytargetId
- The id of target to copy into. Can be null to copy into root folder.- Returns:
- The result map with a message key in case of an error or with the list of uncopied/copied resources
- Throws:
RepositoryException
- If there is a repository error
-
moveDocuments
public Map<String,Object> moveDocuments(List<String> ids, String targetId) throws RepositoryException
Move documents (files or folders)- Parameters:
ids
- The list of identifiers for the objects to movetargetId
- The id of target to move into. Can be null to move documents to root folder.- Returns:
- The result map with a message key in case of an error or with the list of unmoved/moved objects
- Throws:
RepositoryException
- If there is a repository error
-
searchFiles
public Map<String,Object> searchFiles(String query, String lang) throws Exception
Search for files in the document module- Parameters:
query
- The search querylang
- The search language- Returns:
- A result map containing a resources entry which is a list of the files data
- Throws:
Exception
- if an exception occurs
-
searchFilesByType
public Map<String,Object> searchFilesByType(String type) throws Exception
Search for files by their type- Parameters:
type
- The file type- Returns:
- A result map containing a resources entry which is a list of the files data
- Throws:
Exception
- if an exception occurs
-
getRootFolder
public Map<String,Object> getRootFolder()
Get the root folder- Returns:
- the root folder as JSON object
-
getFolder
public Map<String,Object> getFolder(String folderId)
Get folder- Parameters:
folderId
- the folder id- Returns:
- the folder as JSON object
-
getFile
public Map<String,Object> getFile(String resourceId)
Get file- Parameters:
resourceId
- the resource id- Returns:
- the file as JSON object
-
getFolders
public List<Map<String,Object>> getFolders(String parentId)
Get the child folders- Parameters:
parentId
- the parent id. Can be null to get root folders- Returns:
- the sub folders
-
getFiles
public List<Map<String,Object>> getFiles(String parentId)
Get the child files- Parameters:
parentId
- the parent id. Can be null to get root files- Returns:
- the child files
-
getFoldersAndFiles
public Map<String,Object> getFoldersAndFiles(String folderId)
Get the child folders and files- Parameters:
folderId
- the parent id. Can be null to get root folders and files- Returns:
- the child folders and files
-
getChildDocumentsData
public List<Map<String,Object>> getChildDocumentsData(String parentId, boolean excludeFolders, boolean excludeFiles)
Retrieves the children of a document and extracts its data.- Parameters:
parentId
- Identifier of the parent collection. Can be null to get children of root folder.excludeFolders
- Folders will be excluded if trueexcludeFiles
- Files will be excluded if true- Returns:
- The map of information
-
getChildDocumentsData
public List<Map<String,Object>> getChildDocumentsData(ResourceCollection document, boolean excludeFolders, boolean excludeFiles)
Retrieves the children of a document and extracts its data.- Parameters:
document
- the documentexcludeFolders
- Folders will be excluded if trueexcludeFiles
- Files will be excluded if true- Returns:
- The map of information
-
getDocumentData
@Deprecated public Map<String,Object> getDocumentData(String id, boolean excludeFilesInFolderHierarchy)
Deprecated.Retrieves the set of standard data for a document (folder or resource)- Parameters:
id
- the document id or null to get root documentexcludeFilesInFolderHierarchy
- Should child files be taken into account when extracting data of a folder- Returns:
- The map of data
-
getDocumentsData
public List<Map<String,Object>> getDocumentsData(List<String> ids, boolean excludeFilesInFolderHierarchy)
Retrieves the set of standard data for a list of documents- Parameters:
ids
- The list of document identifiersexcludeFilesInFolderHierarchy
- Should child files be taken into account when extracting data of a folder- Returns:
- The map of data
-
_comment2json
protected Map<String,Object> _comment2json(JCRPost comment, boolean isEdition)
Description copied from class:ExplorerResourcesDAO
Get JSOn representation of a comment- Overrides:
_comment2json
in classExplorerResourcesDAO
- Parameters:
comment
- The commentisEdition
- true to get the comment in edit mode- Returns:
- the comment as JSON
-
_version2json
protected Map<String,Object> _version2json(JCRResource resource, ExplorerResourcesDAO.VersionInformation versionInformation) throws RepositoryException
Description copied from class:ExplorerResourcesDAO
Get the JSON representation of a version of a resource- Overrides:
_version2json
in classExplorerResourcesDAO
- Parameters:
resource
- the resourceversionInformation
- the version information- Returns:
- the version as JSON object
- Throws:
RepositoryException
- if failed to get revision
-
generateWebdavUri
public String generateWebdavUri(String documentId)
Generates an uri to open a document through webdav- Parameters:
documentId
- The document identifier- Returns:
- The generated uri
-
_extractDocumentData
protected Map<String,Object> _extractDocumentData(AmetysObject document, boolean excludeFolders, boolean excludeFiles)
Internal method to extract the valuable data of a document- Parameters:
document
- The document (file or folder)excludeFolders
- Folders will be excluded if trueexcludeFiles
- Files will be excluded if true- Returns:
- the valuable document data
-
_extractFolderData
protected Map<String,Object> _extractFolderData(ResourceCollection folder)
Internal method to extract the valuable data of a folder- Parameters:
folder
- The folder- Returns:
- the valuable folder data
-
_hasChildren
protected boolean _hasChildren(ResourceCollection folder, boolean ignoreFiles)
Internal method to detect if a document has child- Parameters:
folder
- The folderignoreFiles
- Should child files be taken into account to compute the 'hasChildDocuments' data.- Returns:
- the valuable folder data
-
_extractFolderRightData
protected Map<String,Object> _extractFolderRightData(ResourceCollection folder)
Internal method to extract the data concerning the right of the current user for a folder- Parameters:
folder
- The folder- Returns:
- The map of right data. Keys are the rights id, and values indicates whether the current user has the right or not.
-
addFile
public Map<String,Object> addFile(Part part, String parentId, boolean unarchive, boolean allowRename, boolean allowUpdate)
Add a file- Parameters:
part
- The uploaded part corresponding to the fileparentId
- Identifier of the parent collectionunarchive
- True if the file is an archive that should be unarchived (only available for ZIP file)allowRename
- True if the file can be renamed if it already existsallowUpdate
- True if the file can be updated if it already exists (and allowRename is false)- Returns:
- The result map with id, parentId and name keys
-
addFile
public Map<String,Object> addFile(InputStream inputStream, String fileName, String parentId, boolean unarchive, boolean allowRename, boolean allowUpdate)
Add a file- Parameters:
inputStream
- The uploaded input streamfileName
- desired file nameparentId
- Identifier of the parent collectionunarchive
- True if the file is an archive that should be unarchived (only available for ZIP file)allowRename
- True if the file can be renamed if it already existsallowUpdate
- True if the file can be updated if it already exists (and allowRename is false)- Returns:
- The result map with id, parentId and name keys
-
_extractFileData
protected Map<String,Object> _extractFileData(Resource file)
Internal method to extract the valuable data of a file- Parameters:
file
- The file- Returns:
- the valuable file data
-
_extractFileRightData
protected Map<String,Object> _extractFileRightData(Resource file)
Internal method to extract the data concerning the right of the current user for file- Parameters:
file
- The file- Returns:
- The map of right data. Keys are the rights id, and values indicates whether the current user has the right or not.
-
_extractFileLockData
protected Map<String,Object> _extractFileLockData(Resource file)
Internal method to extract the data relative to the lock state of a file- Parameters:
file
- The file- Returns:
- The image specific data
-
_setComment
protected void _setComment(JCRPost comment, String content)
Description copied from class:ExplorerResourcesDAO
Update the content of a comment- Overrides:
_setComment
in classExplorerResourcesDAO
- Parameters:
comment
- The comment to updatecontent
- The content as string
-
_getComment
protected String _getComment(JCRPost post) throws AmetysRepositoryException
Description copied from class:ExplorerResourcesDAO
Get the content of a comment as a String- Overrides:
_getComment
in classExplorerResourcesDAO
- Parameters:
post
- the post- Returns:
- The content as String
- Throws:
AmetysRepositoryException
- if failed to parse comment
-
_getCommentForEditing
protected String _getCommentForEditing(JCRPost post) throws AmetysRepositoryException
Description copied from class:ExplorerResourcesDAO
Get the content of a comment to edit as a String- Overrides:
_getCommentForEditing
in classExplorerResourcesDAO
- Parameters:
post
- the post- Returns:
- The content as String
- Throws:
AmetysRepositoryException
- if failed to parse comment
-
_canView
protected boolean _canView(ResourceCollection folder)
Indicates if the current user can view the folder- Parameters:
folder
- The folder to test- Returns:
- true if the folder can be viewed
-
_canView
protected boolean _canView(Resource file)
Indicates if the current user can view the file- Parameters:
file
- The file to test- Returns:
- true if the file can be viewed
-
getCMISProperties
public Map<String,String> getCMISProperties(String id)
Description copied from class:ExplorerResourcesDAO
Get the CMIS properties of collection- Overrides:
getCMISProperties
in classExplorerResourcesDAO
- Parameters:
id
- The id of CMIS collection- Returns:
- the CMIS properties to access CMIS repository
-
addCMISCollection
public Map<String,Object> addCMISCollection(String parentId, String originalName, String url, String login, String password, String repoId, boolean renameIfExists)
Description copied from class:ExplorerResourcesDAO
Creates a new CMIS folder (seeCMISRootResourcesCollection
)- Overrides:
addCMISCollection
in classExplorerResourcesDAO
- Parameters:
parentId
- the id of parent folderoriginalName
- the original name if CMIS folderurl
- The url of CMIS repositorylogin
- The user's login to access CMIS repositorypassword
- The user's password to access CMIS repositoryrepoId
- The id of CMIS repositoryrenameIfExists
- true to automatically renamed CMIS folder if requested name already exists- Returns:
- the result map with id of created node
-
editCMISCollection
public Map<String,Object> editCMISCollection(String id, String name, String url, String login, String password, String repoId) throws RepositoryException
Edits a CMIS folder (seeCMISRootResourcesCollection
)- Parameters:
id
- the id of CMIS foldername
- The name of the CMIS folderurl
- The url of CMIS repositorylogin
- The user's login to access CMIS repositorypassword
- The user's password to access CMIS repositoryrepoId
- The id of CMIS repository- Returns:
- the result map with id of edited node
- Throws:
RepositoryException
- If an error occurred
-
isCMISCollection
public boolean isCMISCollection(String id)
Description copied from class:ExplorerResourcesDAO
Determines if a object is aCMISRootResourcesCollection
- Overrides:
isCMISCollection
in classExplorerResourcesDAO
- Parameters:
id
- The id of object- Returns:
- true if it is a CMIS root folder
-
getDocumentsCount
public Long getDocumentsCount(Project project)
Count the total of documents in the project- Parameters:
project
- The project- Returns:
- The total of documents, or null if the module is not activated
-
-