Class HibernateFolderDAO

    • Method Detail

      • getUserDAO

        public UserDAO getUserDAO()
      • setUserDAO

        public void setUserDAO​(UserDAO userDAO)
      • store

        public boolean store​(Folder folder,
                             FolderHistory transaction)
                      throws PersistenceException
        Description copied from interface: FolderDAO
        Same as store(Folder, boolean, FolderHistory)
        Specified by:
        store in interface FolderDAO
        Parameters:
        folder - the folder to store
        transaction - current session informations
        Returns:
        true if the folder has been correctly stored
        Throws:
        PersistenceException - in case of database error
      • findByUserId

        public List<Folder> findByUserId​(long userId)
        Description copied from interface: FolderDAO
        Finds authorized folders for a user
        Specified by:
        findByUserId in interface FolderDAO
        Parameters:
        userId - ID of the user
        Returns:
        List of found folders
      • findByUserId

        public List<Folder> findByUserId​(long userId,
                                         long parentId)
        Description copied from interface: FolderDAO
        Finds direct children of a folder.
        Specified by:
        findByUserId in interface FolderDAO
        Parameters:
        userId - identifier of the user
        parentId - ID of the folder which children are wanted
        Returns:
        List of found folders sorted by text
      • findChildren

        public List<Folder> findChildren​(long parentId,
                                         Integer max)
        Description copied from interface: FolderDAO
        Finds direct children of a folder
        Specified by:
        findChildren in interface FolderDAO
        Parameters:
        parentId - Folder ID of the folder which children are wanted
        max - Optional, maximum number of children
        Returns:
        List of found folders
      • findChildren

        public List<Folder> findChildren​(long parentId,
                                         long userId)
        Description copied from interface: FolderDAO
        Finds direct children of a folder accessible by the given user
        Specified by:
        findChildren in interface FolderDAO
        Parameters:
        parentId - Folder ID of the folder which children are wanted
        userId - Identifier of the user that must have read access
        Returns:
        List of found folders
      • findByParentId

        public List<Folder> findByParentId​(long parentId)
        Description copied from interface: FolderDAO
        Finds all children(direct and indirect) by parentId
        Specified by:
        findByParentId in interface FolderDAO
        Parameters:
        parentId - identifier of the parent folder
        Returns:
        List of found folders
      • findIdsByParentId

        public List<Long> findIdsByParentId​(long parentId)
        Description copied from interface: FolderDAO
        Finds all children sds(direct and indirect) by parentId
        Specified by:
        findIdsByParentId in interface FolderDAO
        Parameters:
        parentId - identifier of the parent folder
        Returns:
        list of folder IDs
      • isPrintEnabled

        public boolean isPrintEnabled​(long folderId,
                                      long userId)
        Specified by:
        isPrintEnabled in interface FolderDAO
      • isWriteEnabled

        public boolean isWriteEnabled​(long folderId,
                                      long userId)
        Description copied from interface: FolderDAO
        This method is looking up for writing rights for a folder and an user.
        Specified by:
        isWriteEnabled in interface FolderDAO
        Parameters:
        folderId - ID of the folder
        userId - ID of the user
        Returns:
        if the write permission is granted
      • isDownloadEnabled

        public boolean isDownloadEnabled​(long id,
                                         long userId)
        Specified by:
        isDownloadEnabled in interface FolderDAO
      • isMoveEnabled

        public boolean isMoveEnabled​(long id,
                                     long userId)
        Specified by:
        isMoveEnabled in interface FolderDAO
      • isReadEnabled

        public boolean isReadEnabled​(long folderId,
                                     long userId)
        Specified by:
        isReadEnabled in interface FolderDAO
      • findFolderIdByUserId

        public Collection<Long> findFolderIdByUserId​(long userId,
                                                     Long parentId,
                                                     boolean tree)
        Description copied from interface: FolderDAO
        This method selects only the folder ID from the folders for which a user is authorized.
        Specified by:
        findFolderIdByUserId in interface FolderDAO
        Parameters:
        userId - ID of the user.
        parentId - The id of the parent folder to inspect (optional)
        tree - If true, the parentId will be interpreted as the root of a tree
        Returns:
        List of selected folder IDs.
      • hasWriteAccess

        public boolean hasWriteAccess​(Folder folder,
                                      long userId)
        Description copied from interface: FolderDAO
        Checks that the user has access to the folder and all its sub-items
        Specified by:
        hasWriteAccess in interface FolderDAO
        Parameters:
        folder - the folder
        userId - identifier of the document
        Returns:
        if the user has write permission
      • findByGroupId

        public List<Folder> findByGroupId​(long groupId)
        Description copied from interface: FolderDAO
        Finds all folders accessible by the passed group
        Specified by:
        findByGroupId in interface FolderDAO
        Parameters:
        groupId - The group id
        Returns:
        The List of folders
      • findIdByUserId

        public List<Long> findIdByUserId​(long userId,
                                         long parentId)
        Description copied from interface: FolderDAO
        This method selects only the folder ID from the folders for which a user is authorized. Only folders direct child of the specified parent are returned.
        Specified by:
        findIdByUserId in interface FolderDAO
        Parameters:
        userId - ID of the user
        parentId - Parent folder
        Returns:
        List of selected folder ID's.
      • findByName

        public List<Folder> findByName​(String name,
                                       Long tenantId)
        Description copied from interface: FolderDAO
        Finds all folders by folder name
        Specified by:
        findByName in interface FolderDAO
        Parameters:
        name - name of the folder
        tenantId - Specification of the owning tenant (optional).
        Returns:
        List of folders with given folder name.
      • findByName

        public List<Folder> findByName​(Folder parent,
                                       String name,
                                       Long tenantId,
                                       boolean caseSensitive)
        Description copied from interface: FolderDAO
        Finds all folders by folder text, contained in the parent folder.
        Specified by:
        findByName in interface FolderDAO
        Parameters:
        parent - The parent folder(optional)
        name - The folder name to search for
        tenantId - Specification of the owning tenant (optional). If not specified the tenant of parent is used instead
        caseSensitive - true if the search must be case sensitive
        Returns:
        List of folders with given name
      • computePath

        public String computePath​(long folderId)
        Description copied from interface: FolderDAO
        Dynamically computes the path for the specified folder. The path is a sequence of IDS in the form: /4/55897/99870
        Specified by:
        computePath in interface FolderDAO
        Parameters:
        folderId - identifier of the folder
        Returns:
        the folder's path
      • computePathExtended

        public String computePathExtended​(long folderId)
        Description copied from interface: FolderDAO
        Dynamically computes the path extended for the specified folder. The path extended is a human readable path in the form: /folder1/folder2/folder3
        Specified by:
        computePathExtended in interface FolderDAO
        Parameters:
        folderId - the folder's identifier
        Returns:
        The path extended
      • saveFolderHistory

        public void saveFolderHistory​(Folder folder,
                                      FolderHistory transaction)
        Utility method that logs into the DB the transaction that involved the passed folder. The transaction must be provided with userId and userName
        Specified by:
        saveFolderHistory in interface FolderDAO
        Parameters:
        folder - the folder to persist
        transaction - informations about the session
      • findByNameAndParentId

        public List<Folder> findByNameAndParentId​(String name,
                                                  long parentId)
        Description copied from interface: FolderDAO
        Finds that folder that lies under a specific parent (given by the id) an with a given name(like operator is used)
        Specified by:
        findByNameAndParentId in interface FolderDAO
        Parameters:
        name - name of the dolder
        parentId - identifier of the parent folder
        Returns:
        list of folders
      • findParents

        public List<Folder> findParents​(long folderId)
        Description copied from interface: FolderDAO
        Returns a List of folders being a parent of the given folder. The list is ordered starting from the root of folders. The list doesn't include the given folder.
        Specified by:
        findParents in interface FolderDAO
        Parameters:
        folderId - ID of the folder
        Returns:
        the hierarchy of parent folders
      • findWorkspace

        public Folder findWorkspace​(long folderId)
        Description copied from interface: FolderDAO
        Returns the workspace that contains the given folder
        Specified by:
        findWorkspace in interface FolderDAO
        Parameters:
        folderId - ID of the folder
        Returns:
        the workspace containing the fiven folder
      • isPermissionEnabled

        public boolean isPermissionEnabled​(Permission permission,
                                           long folderId,
                                           long userId)
        Description copied from interface: FolderDAO
        This method checks if the given permission is enabled for a folder and an user.
        Specified by:
        isPermissionEnabled in interface FolderDAO
        Parameters:
        permission - the permission to check
        folderId - ID of the folder
        userId - ID of the user
        Returns:
        if the permission is granted to the user
      • restore

        public void restore​(long folderId,
                            long parentId,
                            FolderHistory transaction)
                     throws PersistenceException
        Description copied from interface: FolderDAO
        Restores a previously deleted folder
        Specified by:
        restore in interface FolderDAO
        Parameters:
        folderId - The folder identifier
        parentId - The parent folder to restore in
        transaction - Current session informations
        Throws:
        PersistenceException - in case of database error
      • getEnabledPermissions

        public Set<Permission> getEnabledPermissions​(long folderId,
                                                     long userId)
        Description copied from interface: FolderDAO
        Finds all permissions of a user enabled on the specified folder
        Specified by:
        getEnabledPermissions in interface FolderDAO
        Parameters:
        folderId - ID of the folder
        userId - ID of the user
        Returns:
        Collection of enabled permissions
      • findFolderIdByUserIdInPath

        public Collection<Long> findFolderIdByUserIdInPath​(long userId,
                                                           Long parentId)
        Description copied from interface: FolderDAO
        This method selects only the folder ID from the folders for which a user is authorized.
        Specified by:
        findFolderIdByUserIdInPath in interface FolderDAO
        Parameters:
        userId - ID of the user.
        parentId - The id of the parent folder to inspect (optional)
        Returns:
        List of selected folder IDs.
      • findFolderIdByUserIdAndPermission

        public Collection<Long> findFolderIdByUserIdAndPermission​(long userId,
                                                                  Permission permission,
                                                                  Long parentId,
                                                                  boolean tree)
        Description copied from interface: FolderDAO
        Finds all folders ids with a specific permission enabled on the specifies user
        Specified by:
        findFolderIdByUserIdAndPermission in interface FolderDAO
        Parameters:
        userId - The user identifier
        permission - The permission to check
        parentId - The id of the parent folder to inspect (optional)
        tree - If true, the parentId will be interpreted as the root of a tree
        Returns:
        List of selected folder IDs.
      • deleteAll

        public void deleteAll​(Collection<Folder> folders,
                              int code,
                              FolderHistory transaction)
                       throws PersistenceException
        Description copied from interface: FolderDAO
        For each folder, save the folder delete history entry for each folder and delete the folder
        Specified by:
        deleteAll in interface FolderDAO
        Parameters:
        folders - List of folder to be delete
        code - The deletion code
        transaction - entry to log the event on each folder
        Throws:
        PersistenceException - in case of database error
      • delete

        public boolean delete​(long folderId,
                              FolderHistory transaction)
                       throws PersistenceException
        Description copied from interface: FolderDAO
        Shortcut for delete(id, 1, transaction)
        Specified by:
        delete in interface FolderDAO
        Parameters:
        folderId - the folder identifier
        transaction - the session informations
        Returns:
        if the folde has been succesfully deleted
        Throws:
        PersistenceException - in case of database error
      • delete

        public boolean delete​(long folderId,
                              int delCode,
                              FolderHistory transaction)
                       throws PersistenceException
        Description copied from interface: FolderDAO
        This method deletes the folder object and insert a new folder history entry
        Specified by:
        delete in interface FolderDAO
        Parameters:
        folderId - The id of the folder to delete
        delCode - The deletion code
        transaction - entry to log the event
        Returns:
        True if successfully deleted from the database
        Throws:
        PersistenceException - in case of database error
      • applyRightToTree

        public boolean applyRightToTree​(long rootId,
                                        FolderHistory transaction)
        Description copied from interface: FolderDAO
        Propagates the security policies of a node to the whole subtree
        Specified by:
        applyRightToTree in interface FolderDAO
        Parameters:
        rootId - identifier of the root folder
        transaction - session informations
        Returns:
        if the rights have been correctly applied
      • createAlias

        public Folder createAlias​(long parentId,
                                  long foldRef,
                                  FolderHistory transaction)
                           throws PersistenceException
        Description copied from interface: FolderDAO
        Creates a new folder folder alias
        Specified by:
        createAlias in interface FolderDAO
        Parameters:
        parentId - The parent folder
        foldRef - The referenced folder
        transaction - optional transaction entry to log the event
        Returns:
        The newly created alias
        Throws:
        PersistenceException - in case of database error
      • create

        public Folder create​(Folder parent,
                             Folder folderVO,
                             boolean inheritSecurity,
                             FolderHistory transaction)
                      throws PersistenceException
        Description copied from interface: FolderDAO
        Creates a new folder in the parent Folder
        Specified by:
        create in interface FolderDAO
        Parameters:
        parent - The parent folder
        folderVO - The folder's metadata
        inheritSecurity - If true the new folder will 'point' to the parent for the security policies.
        transaction - optional transaction entry to log the event
        Returns:
        The newly created folder
        Throws:
        PersistenceException - in case of database error
      • createPath

        public Folder createPath​(Folder parent,
                                 String path,
                                 boolean inheritSecurity,
                                 FolderHistory transaction)
                          throws PersistenceException
        Description copied from interface: FolderDAO
        Creates the folder for the specified path. All unexisting nodes specified in the path will be created. The path must be in any case inside a workspace, if not, the Default one will be used.
        Specified by:
        createPath in interface FolderDAO
        Parameters:
        parent - The parent folder
        path - The folder path(for example /dog/cat/mouse)
        inheritSecurity - If true the new folders will 'point' to the parent for the security policies.
        transaction - optional transaction entry to log the event
        Returns:
        The created folder
        Throws:
        PersistenceException - in case of database error
      • findByPathExtended

        public Folder findByPathExtended​(String pathExtended,
                                         long tenantId)
        Description copied from interface: FolderDAO
        Retrieval of a folder by the extended path
        Specified by:
        findByPathExtended in interface FolderDAO
        Parameters:
        pathExtended - the path extended
        tenantId - identifier of the tenant
        Returns:
        The folder that matched the given path
      • copy

        public Folder copy​(Folder source,
                           Folder target,
                           boolean foldersOnly,
                           boolean inheritSecurity,
                           FolderHistory transaction)
                    throws PersistenceException
        Description copied from interface: FolderDAO
        Copies a folder into another folder
        Specified by:
        copy in interface FolderDAO
        Parameters:
        source - The folder to copy
        target - The target folder
        foldersOnly - True if only the folders tree has to be copied; if false, the documents will also be copied
        inheritSecurity - If true the new folder will 'point' to the parent for the security policies.
        transaction - entry to log the event (set the user)
        Returns:
        The new folder created
        Throws:
        PersistenceException - in case of database error
      • deleteTree

        public List<Folder> deleteTree​(long folderId,
                                       FolderHistory transaction)
                                throws Exception
        Description copied from interface: FolderDAO
        Shortcut for deleteTree(folderId, 1, transaction)
        Specified by:
        deleteTree in interface FolderDAO
        Parameters:
        folderId - Folder to delete
        transaction - entry to log the event (set the user)
        Returns:
        List of folders that the user cannot delete(permissions, o immutable documents presents)
        Throws:
        Exception - in case of any error
      • deleteTree

        public List<Folder> deleteTree​(long folderId,
                                       int delCode,
                                       FolderHistory transaction)
                                throws Exception
        Description copied from interface: FolderDAO
        Delete a folder and all its sub-folders that a user can delete. After recovering of all sub-folders inside the folder, will be canceled all folders for which the user has the delete permission or there isn't an immutable document inside it.
        Important: All the contained documents will be deleted
        Specified by:
        deleteTree in interface FolderDAO
        Parameters:
        folderId - Folder to delete
        delCode - The deletion code
        transaction - entry to log the event (set the user)
        Returns:
        List of folders that the user cannot delete(permissions, o immutable documents presents)
        Throws:
        Exception - in case of any error
      • deleteTree

        public List<Folder> deleteTree​(Folder folder,
                                       int delCode,
                                       FolderHistory transaction)
                                throws PersistenceException
        Description copied from interface: FolderDAO
        Deletes a folder and all its sub-folders that a user can delete. After recovering of all sub-folders inside the folder, will be canceled all folders for which the user has the delete permission or there isn't an immutable document inside it.
        Important: Remember to delete orphaned documents.
        Specified by:
        deleteTree in interface FolderDAO
        Parameters:
        folder - Folder to delete
        delCode - The deletion code
        transaction - entry to log the event (set the user)
        Returns:
        List of folders that the user cannot delete(permissions, o immutable documents presents)
        Throws:
        PersistenceException - in case of database error
      • findFolderIdInTree

        public Set<Long> findFolderIdInTree​(long rootId,
                                            boolean includeDeleted)
        Description copied from interface: FolderDAO
        Retrieve all the ids of the folders in a given tree
        Specified by:
        findFolderIdInTree in interface FolderDAO
        Parameters:
        rootId - Root of the tree
        includeDeleted - True if the deleted records need to be loaded
        Returns:
        List of selected folder IDs.
      • findFolderIdInPath

        public Set<Long> findFolderIdInPath​(long rootId,
                                            boolean includeDeleted)
        Description copied from interface: FolderDAO
        Retrieve all the ids of the folder in a given tree using the path attribute
        Specified by:
        findFolderIdInPath in interface FolderDAO
        Parameters:
        rootId - Root of the folder
        includeDeleted - True if the deleted records need to be loaded
        Returns:
        List of selected folder IDs.
      • find

        public List<Folder> find​(String name,
                                 Long tenantId)
        Description copied from interface: FolderDAO
        Useful method that allows to find all folders that contains the given name into their text.
        Specified by:
        find in interface FolderDAO
        Parameters:
        name - The name to be found
        tenantId - The tenant to search in
        Returns:
        List of folders that contains the given name into their text.
      • isInPath

        public boolean isInPath​(long folderId,
                                long targetId)
        Description copied from interface: FolderDAO
        Checks if a folder with the given folderId is parent of the folder with the given targetId
        Specified by:
        isInPath in interface FolderDAO
        Parameters:
        folderId - The folder to be checked
        targetId - The target folder
        Returns:
        True if the folder with the given folderId is parent of the folder with the given targetId
      • count

        public int count​(boolean computeDeleted)
        Description copied from interface: FolderDAO
        Counts the number of folders
        Specified by:
        count in interface FolderDAO
        Parameters:
        computeDeleted - if the deleted folders have to be taken int account
        Returns:
        the number of folders
      • findWorkspaces

        public List<Folder> findWorkspaces​(long tenantId)
        Description copied from interface: FolderDAO
        Retrieves all the workspaces in the system, that are the first-level folders of type Folder.TYPE_WORKSPACE
        Specified by:
        findWorkspaces in interface FolderDAO
        Parameters:
        tenantId - identifier of the tenant
        Returns:
        list of folders
      • findDeleted

        public List<Folder> findDeleted​(long userId,
                                        Integer maxHits)
        Description copied from interface: FolderDAO
        Finds all deleted folders of a specific user.
        Specified by:
        findDeleted in interface FolderDAO
        Parameters:
        userId - The user that performed the deletion
        maxHits - Optional defines the max number of returned hits
        Returns:
        The folders list
      • findRoot

        public Folder findRoot​(long tenantId)
        Description copied from interface: FolderDAO
        Retrieves the root folder of the given tenant
        Specified by:
        findRoot in interface FolderDAO
        Parameters:
        tenantId - identifier of the tenant
        Returns:
        the root folder
      • findDefaultWorkspace

        public Folder findDefaultWorkspace​(long tenantId)
        Description copied from interface: FolderDAO
        Retrieves the Default workspace of the given tenant
        Specified by:
        findDefaultWorkspace in interface FolderDAO
        Parameters:
        tenantId - identifier of the tenant
        Returns:
        The default workspace
      • setStorer

        public void setStorer​(Storer storer)
      • updateSecurityRef

        public boolean updateSecurityRef​(long folderId,
                                         long rightsFolderId,
                                         FolderHistory transaction)
        Description copied from interface: FolderDAO
        Changes the securityRef of the given folder, all the other folders that inherits from this one will be changed accordingly.
        Specified by:
        updateSecurityRef in interface FolderDAO
        Parameters:
        folderId - identifier of the folder
        rightsFolderId - id of the folder to inherit from
        transaction - session informations
        Returns:
        is the update has been successful
      • countDocsInTree

        public long countDocsInTree​(long rootId)
        Description copied from interface: FolderDAO
        Counts the number of documents inside a given folder's tree (direct and indirect children)
        Specified by:
        countDocsInTree in interface FolderDAO
        Parameters:
        rootId - identifier of the root folder
        Returns:
        the number of documents contained in the tree
      • computeTreeSize

        public long computeTreeSize​(long rootId)
        Description copied from interface: FolderDAO
        Counts the number of documents inside a given folder's tree (direct and indirect children)
        Specified by:
        computeTreeSize in interface FolderDAO
        Parameters:
        rootId - identifier of the root folder
        Returns:
        sum of the sizes of the documents contained in the tree expressed in bytes
      • findAliases

        public List<Folder> findAliases​(Long foldRef,
                                        long tenantId)
        Description copied from interface: FolderDAO
        Finds all the aliases
        Specified by:
        findAliases in interface FolderDAO
        Parameters:
        foldRef - The referenced folder
        tenantId - The tenant
        Returns:
        Collection of aliases
      • findFolder

        public Folder findFolder​(long folderId)
        Description copied from interface: FolderDAO
        Gets a folder by a given ID if it is an alias, the referenced folder is returned.
        Specified by:
        findFolder in interface FolderDAO
        Parameters:
        folderId - The ID
        Returns:
        A real folder that is referenced by the given ID
      • applyMetadataToTree

        public boolean applyMetadataToTree​(long id,
                                           FolderHistory transaction)
        Description copied from interface: FolderDAO
        Propagates the template metadata to the whole subree
        Specified by:
        applyMetadataToTree in interface FolderDAO
        Parameters:
        id - identifier of the folder
        transaction - session informations
        Returns:
        is the update has been successful
      • applyTagsToTree

        public boolean applyTagsToTree​(long id,
                                       FolderHistory transaction)
        Description copied from interface: FolderDAO
        Propagates the tags to the whole subree
        Specified by:
        applyTagsToTree in interface FolderDAO
        Parameters:
        id - identifier of the folder
        transaction - session informations
        Returns:
        is the update has been successful
      • applyGridToTree

        public boolean applyGridToTree​(long id,
                                       FolderHistory transaction)
        Description copied from interface: FolderDAO
        Propagates the grid layout of a node to the whole subtree
        Specified by:
        applyGridToTree in interface FolderDAO
        Parameters:
        id - identifier of the root folder
        transaction - session informations
        Returns:
        if the grid layout has been correctly replicated
      • applyOCRToTree

        public boolean applyOCRToTree​(long id,
                                      FolderHistory transaction)
                               throws PersistenceException
        Description copied from interface: FolderDAO
        Propagates the OCR settings to the whole subree
        Specified by:
        applyOCRToTree in interface FolderDAO
        Parameters:
        id - identifier of the folder
        transaction - session informations
        Returns:
        is the update has been successful
        Throws:
        PersistenceException - in case of database error
      • findFolderIdByTag

        public List<Long> findFolderIdByTag​(String tag)
      • findFolderIdByUserIdAndTag

        public List<Long> findFolderIdByUserIdAndTag​(long userId,
                                                     String tag)
      • findByUserIdAndTag

        public List<Folder> findByUserIdAndTag​(long userId,
                                               String tag,
                                               Integer max)
        Description copied from interface: FolderDAO
        Finds authorized folders for a user having a specified tag.
        Specified by:
        findByUserIdAndTag in interface FolderDAO
        Parameters:
        userId - ID of the user
        tag - Tag of the folder
        max - Optional, defines the maximum records number
        Returns:
        Collection of found folders
      • findTags

        public List<String> findTags​(long folderId)
        Description copied from interface: FolderDAO
        Retrieves the alphabetically ordered list of all the folder's tags
        Specified by:
        findTags in interface FolderDAO
        Parameters:
        folderId - identifier of the folder
        Returns:
        list of tags