Interface ContentStore

    • Method Detail

      • getBaseURL

        String getBaseURL()
        Gets the base URL pointing to the DuraCloud DuraStore REST API
      • getStoreId

        String getStoreId()
        Gets the ID of this content store
      • isWritable

        boolean isWritable()
        Indicates whether or not the content store is writable by non root users.
        Returns:
      • getSpaceContents

        Iterator<String> getSpaceContents​(String spaceId)
                                   throws ContentStoreException
        Retrieves the complete list of content items within a space. For spaces with many content items, the list is paged and updated automatically in order to retrieve the entire list. This method is equivalent to getSpaceContents(spaceId, null)
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        Returns:
        Iterator for content IDs
        Throws:
        NotFoundException - if the space does not exist
        ContentStoreException - if an error occurs
      • getSpaceContents

        Iterator<String> getSpaceContents​(String spaceId,
                                          String prefix)
                                   throws ContentStoreException
        Retrieves the complete list of content items within a space. For spaces with many content items, the list is paged and updated automatically in order to retrieve the entire list. Allows for limiting the content id list to items which start with a given prefix.
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        prefix - only retrieve content ids with this prefix (null for all content ids)
        Returns:
        Iterator for content IDs
        Throws:
        NotFoundException - if the space does not exist
        ContentStoreException - if an error occurs
      • getSpace

        Space getSpace​(String spaceId,
                       String prefix,
                       long maxResults,
                       String marker)
                throws ContentStoreException
        Provides a space, including the id and properties of the space as well as a limited list of the content items within a space. This call allows for manual paging of content IDs using the maxResults and marker parameters.
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        prefix - only retrieve content ids with this prefix (null for all content ids)
        maxResults - the maximum number of content ids to return in the list (0 indicates default - which is 1000)
        marker - the content id marking the last item in the previous set (null to specify first set of ids)
        Returns:
        Space
        Throws:
        NotFoundException - if the space does not exist
        ContentStoreException - if an error occurs
      • createSpace

        void createSpace​(String spaceId)
                  throws ContentStoreException
        Creates a new space. Depending on the storage implementation, the spaceId may be changed somewhat to comply with the naming rules of the underlying storage provider. The same spaceId value used here can be used in all other methods, as the conversion will be applied internally, however a call to getSpaces() may not include a space with exactly this same name.
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        Throws:
        InvalidIdException - if the space ID is not valid
        ContentStoreException - if the space already exists or cannot be created
      • setSpaceACLs

        void setSpaceACLs​(String spaceId,
                          Map<String,​AclType> spaceACLs)
                   throws ContentStoreException
        Sets the ACLs associated with a space. Only values included in the ACLs map will be saved, others will be removed.
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        spaceACLs - a map of ACL entries for the space (user|group -> right)
        Throws:
        NotFoundException - if the space does not exist
        ContentStoreException - if an error occurs
      • spaceExists

        boolean spaceExists​(String spaceId)
                     throws ContentStoreException
        Determines if a space exists
        Parameters:
        spaceId - the identifier of the DuraCloud Space to check
        Returns:
        true if the space exists, false otherwise
        Throws:
        ContentStoreException - if an error occurs
      • addContent

        String addContent​(String spaceId,
                          String contentId,
                          InputStream content,
                          long contentSize,
                          String contentMimeType,
                          String contentChecksum,
                          Map<String,​String> contentProperties)
                   throws ContentStoreException
        Adds content to a space. The contentId of the new content item can include "/" symbols to indicate a folder heirarchy. Returns the checksum of the content as computed by the underlying storage provider to facilitate comparison
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        contentId - the identifier of the new content item
        content - the new content as a stream
        contentSize - the size of the content
        contentMimeType - the MIME type of the content
        contentChecksum - the MD5 checksum of the content, or null if the checksum is not known
        contentProperties - a map of properties values to be linked to this content
        Returns:
        content checksum
        Throws:
        InvalidIdException - if the content ID is not valid
        NotFoundException - if the space does not exist
        ContentStoreException - if an error occurs
      • copyContent

        String copyContent​(String srcSpaceId,
                           String srcContentId,
                           String destSpaceId,
                           String destContentId)
                    throws ContentStoreException
        This method copies the content item found in source-space with the id of source-content-id into the dest-space, naming it to dest-content-id.
        Parameters:
        srcSpaceId - of content to copy
        srcContentId - of content to copy
        destSpaceId - where copied content will end up
        destContentId - given to copied content
        Returns:
        MD5 checksum of destination content item
        Throws:
        ContentStoreException - on error
      • copyContent

        String copyContent​(String srcSpaceId,
                           String srcContentId,
                           String destStoreId,
                           String destSpaceId,
                           String destContentId)
                    throws ContentStoreException
        This method provides a way to copy a content item to another content provider.
        Parameters:
        srcSpaceId - of content to copy
        srcContentId - of content to copy
        destStoreId - where the copied content will end up
        destSpaceId - where copied content will end up
        destContentId - given to copied content
        Returns:
        MD5 checksum of destination content item
        Throws:
        ContentStoreException - on error
      • moveContent

        String moveContent​(String srcSpaceId,
                           String srcContentId,
                           String destSpaceId,
                           String destContentId)
                    throws ContentStoreException
        This method moves the content item found in source-space with the id of source-content-id into the dest-space, naming it to dest-content-id.
        Parameters:
        srcSpaceId - of content to move
        srcContentId - of content to move
        destSpaceId - where moved content will end up
        destContentId - given to moved content
        Returns:
        MD5 checksum of destination content item
        Throws:
        ContentStoreException - on error
      • moveContent

        String moveContent​(String srcSpaceId,
                           String srcContentId,
                           String destStoreId,
                           String destSpaceId,
                           String destContentId)
                    throws ContentStoreException
        This method moves the content item found in source-space with the id of source-content-id into the dest-space, naming it to dest-content-id.
        Parameters:
        srcSpaceId - of content to move
        srcContentId - of content to move
        destStoreId - where moved content will end up
        destSpaceId - where moved content will end up
        destContentId - given to moved content
        Returns:
        MD5 checksum of destination content item
        Throws:
        ContentStoreException - on error
      • getContent

        Content getContent​(String spaceId,
                           String contentId,
                           Long startByte,
                           Long endByte)
                    throws ContentStoreException
        Gets a byte range of a content item from a space. The startByte must be greater than or equal to 0 and less than the content length. The endByte can be null which indicates you would like all bytes beginning with the specified start byte. Otherwise the endByte must be less than the content length and greater than the startByte.
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        contentId - the identifier of the content item
        startByte - the starting byte of the range.
        endByte - The end byte of the range.
        Returns:
        the content stream
        Throws:
        NotFoundException - if the space or content does not exist
        ContentStoreException - if an error occurs
      • setContentProperties

        void setContentProperties​(String spaceId,
                                  String contentId,
                                  Map<String,​String> contentProperties)
                           throws ContentStoreException
        Sets the properties associated with content. This effectively removes all of the current content properties and adds a new set of properties. Some properties, such as system properties provided by the underlying storage system, cannot be updated or removed. Some of the values which cannot be updated or removed: content-checksum, content-modified, content-size
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        contentId - the identifier of the content item
        contentProperties - a map of properties values to be linked to this content
        Throws:
        NotFoundException - if the space or content does not exist
        ContentStoreException - if an error occurs
      • getContentProperties

        Map<String,​String> getContentProperties​(String spaceId,
                                                      String contentId)
                                               throws ContentStoreException
        Retrieves the properties associated with content. This includes both properties generated by the underlying storage system and user defined properties
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        contentId - the identifier of the content item
        Returns:
        the map of properties values linked to the given contentId
        Throws:
        NotFoundException - if the space or content does not exist
        ContentStoreException - if an error occurs
      • contentExists

        boolean contentExists​(String spaceId,
                              String contentId)
                       throws ContentStoreException
        Determines if a content item exists in a given space
        Parameters:
        spaceId - the identifier of the DuraCloud Space
        contentId - the identifier of the content item to check
        Returns:
        true if the content item exists, false otherwise
        Throws:
        ContentStoreException - if an error occurs
      • validateSpaceId

        void validateSpaceId​(String spaceId)
                      throws InvalidIdException
        Checks a space ID to ensure that it conforms to all restrictions
        Parameters:
        spaceId - ID to validate
        Throws:
        InvalidIdException - if the space ID is invalid
      • validateContentId

        void validateContentId​(String contentId)
                        throws InvalidIdException
        Checks a content ID to ensure that it conforms to all restrictions
        Parameters:
        contentId - ID to validate
        Throws:
        InvalidIdException - if the content ID is invalid
      • getSupportedTasks

        List<String> getSupportedTasks()
                                throws ContentStoreException
        Gets a listing of the supported tasks. A task is an activity which is outside of the standard set of storage activites but is available through one or more storage providers.
        Returns:
        the return value of the task
        Throws:
        ContentStoreException
      • performTask

        String performTask​(String taskName,
                           String taskParameters)
                    throws ContentStoreException
        Perform a task (with retries on failure) which is outside of the standard set of storage activities but is available through one or more storage providers.
        Parameters:
        taskName - the name of the task to be performed
        taskParameters - the parameters of the task, what is included here and how the information is formatted is task-specific
        Returns:
        the return value of the task
        Throws:
        ContentStoreException
      • performTaskWithNoRetries

        String performTaskWithNoRetries​(String taskName,
                                        String taskParameters)
                                 throws ContentStoreException
        Perform a task (without retrying on failure) which is outside of the standard set of storage activities but is available through one or more storage providers.
        Parameters:
        taskName - the name of the task to be performed
        taskParameters - the parameters of the task, what is included here and how the information is formatted is task-specific
        Returns:
        the return value of the task
        Throws:
        ContentStoreException
      • setRetryExceptionHandler

        void setRetryExceptionHandler​(ExceptionHandler retryExceptionHandler)
        Sets the Exception Handler which will be used to process any Exceptions that are thrown when an action fails but will be retried. The default Exception handler logs the exception messages at the WARN level.
      • getAuditLog

        InputStream getAuditLog​(String spaceId)
                         throws ContentStoreException
        Gets an audit log for the specific space if one exists. If the space does not exist or the audit is empty, an exception will be thrown.
        Parameters:
        spaceId - the space id
        Returns:
        Throws:
        ContentStoreException
      • getStorageProviderStatsByDay

        SpaceStatsDTOList getStorageProviderStatsByDay​(Date date)
                                                throws ContentStoreException
        Returns stats for all spaces within a storage provider for a particular day, averaging bit and object counts between 0:00:00 and 23:59:59 UTC.
        Parameters:
        date -
        Returns:
        Throws:
        ContentStoreException