Class BoxDocument


  • public class BoxDocument
    extends Object
    Represents a document in box including metadata and dependencies. This object contains an internal document in the form of a ObjectNode. This internal document is the data of this object and all other fields are metadata.
    Author:
    Charles Draper
    • Constructor Detail

      • BoxDocument

        protected BoxDocument()
        Creates a new empty document.
      • BoxDocument

        public BoxDocument​(String id)
        Creates a new document initially in an UNPROCESSED state.
        Parameters:
        id - the unique id of the document
      • BoxDocument

        public BoxDocument​(String id,
                           BoxDocument.Status status)
        Creates a new document with the given state.
        Parameters:
        id - the unique id of the document
        status - the status of the document
      • BoxDocument

        public BoxDocument​(String id,
                           com.fasterxml.jackson.databind.node.ObjectNode document)
        Creates a new document initially in a READY state with the given internal document.
        Parameters:
        id - the unique id of the document
        document - the processed document
      • BoxDocument

        public BoxDocument​(BoxDocument boxDocument)
        Copy Constructor.
        Parameters:
        boxDocument - the box document to copy
    • Method Detail

      • toJson

        public com.fasterxml.jackson.databind.node.ObjectNode toJson()
        Serializes to an ObjectNode.
        Returns:
        a json representation of this document
      • parse

        public static BoxDocument parse​(InputStream json)
        Creates a new box document from the given json.
        Parameters:
        json - the json to parse
        Returns:
        the parsed box document
      • parse

        public static BoxDocument parse​(String json)
        Creates a new box document from the given json.
        Parameters:
        json - the json to parse
        Returns:
        the parsed box document
      • parse

        public static BoxDocument parse​(com.fasterxml.jackson.databind.node.ObjectNode json)
        Creates a new box document from the given json.
        Parameters:
        json - the json to parse
        Returns:
        the parsed box document
      • hasDifferentDependencies

        public boolean hasDifferentDependencies​(BoxDocument o)
        Whether or not this document's dependencies differ from the give document's.
        Parameters:
        o - the document to compare
        Returns:
        whether or not the dependencies differ
      • isProcessed

        public boolean isProcessed()
        Whether or not this document's processing has completed. That is whether the document is in a READY or DELETED state.
        Returns:
        if in a ready or deleted state
      • isUnProcessed

        public boolean isUnProcessed()
        Whether or not this document is in the UNPROCESSED state.
        Returns:
        if in the UNPROCESSED state
      • isDeleted

        public boolean isDeleted()
        Whether or not this document is in the DELETED state.
        Returns:
        if in the DELETED state
      • isError

        public boolean isError()
        Whether or not this document is in the ERROR state.
        Returns:
        if in the ERROR state
      • isReady

        public boolean isReady()
        Whether or not this document is in the READY state.
        Returns:
        if in the READY state
      • matches

        public boolean matches​(Collection<Facet> facets)
        Determines if this document matches (or should be included in a result set) given the supplied facets. In order to match, the document must have at least one facet from each facet group represented in the supplied facets. If the supplied facet list is empty, the document will match.
        Parameters:
        facets - the facets to test the document against
        Returns:
        whether or not this document matches the given facets
      • setAsDeleted

        public BoxDocument setAsDeleted()
        Explicitly sets the status to deleted.
        Returns:
        this
      • setAsUnprocessed

        public BoxDocument setAsUnprocessed()
        Explicitly sets the status to unprocessed.
        Returns:
        this
      • setAsReady

        public BoxDocument setAsReady()
        Explicitly sets the status to ready.
        Returns:
        this
      • setAsError

        public BoxDocument setAsError()
        Explicitly sets the status to error.
        Returns:
        this
      • setAsError

        public BoxDocument setAsError​(String message)
        Explicitly sets the status to error and includes an error message.
        Parameters:
        message - the error message
        Returns:
        this
      • addDependency

        public BoxDocument addDependency​(String sourceName,
                                         String id)
        Adds a dependency for this document.
        Parameters:
        sourceName - the sourceName of the dependency to add.
        id - the id of the dependency to add.
        Returns:
        this
      • addDependencies

        public BoxDocument addDependencies​(DocumentId... dependencies)
        Adds dependencies for this document.
        Parameters:
        dependencies - the dependencies to add.
        Returns:
        this
      • addDependencies

        public BoxDocument addDependencies​(Collection<? extends DocumentId> dependencies)
        Adds dependencies for this document.
        Parameters:
        dependencies - the dependencies to add.
        Returns:
        this
      • setDependencies

        public BoxDocument setDependencies​(Collection<? extends DocumentId> dependencies)
        Clears dependencies and then adds these dependencies for this document.
        Parameters:
        dependencies - the dependencies to add.
        Returns:
        this
      • addFacet

        public BoxDocument addFacet​(String name,
                                    String value)
        Adds a facet to this document.
        Parameters:
        name - name of the facet group
        value - value of the facet
        Returns:
        this
      • addFacets

        public BoxDocument addFacets​(String name,
                                     String... values)
        Adds multiple facets to the document.
        Parameters:
        name - name of the facet group
        values - value(s) of the facet
        Returns:
        this
      • addFacets

        public BoxDocument addFacets​(String name,
                                     Collection<String> values)
        Adds multiple facets to the document.
        Parameters:
        name - name of the facet group
        values - values of the facet
        Returns:
        this
      • addFacets

        public BoxDocument addFacets​(Facet... facets)
        Adds multiple facets to the document.
        Parameters:
        facets - the facets to add
        Returns:
        this
      • addFacets

        public BoxDocument addFacets​(Collection<? extends Facet> facets)
        Adds multiple facets to the document.
        Parameters:
        facets - the facets to add
        Returns:
        this
      • setFacets

        public BoxDocument setFacets​(Collection<? extends Facet> facets)
        Clears existing facets and then adds these facets to the document.
        Parameters:
        facets - the facets to add
        Returns:
        this
      • addFacetsByQuery

        public BoxDocument addFacetsByQuery​(String name,
                                            String path)
        Adds a facet by querying the internal document using the given path.
        Parameters:
        name - name of facet
        path - path to field value in dot notation
        Returns:
        this
      • addFacetsByQuery

        public BoxDocument addFacetsByQuery​(Map<String,​Set<String>> paths)
        Adds facets by querying the internal document using the given paths.
        Parameters:
        paths - the paths to the field values in dot notation, key is name of facet, value is set of paths
        Returns:
        this
      • getId

        public String getId()
        Returns the unique id of the document.
        Returns:
        the unique id of the document
      • setId

        public BoxDocument setId​(String id)
        Set the unique id of the document.
        Parameters:
        id - the id of the document
        Returns:
        this
      • getDocument

        public com.fasterxml.jackson.databind.node.ObjectNode getDocument()
        Returns the internal document. Initialized to an empty object.
        Returns:
        the internal document
      • setDocument

        public BoxDocument setDocument​(com.fasterxml.jackson.databind.node.ObjectNode document)
        Sets the internal document and modifies the status to READY if state not explicitly set elsewhere.
        Parameters:
        document - the document to set
        Returns:
        this
      • withDocument

        public com.fasterxml.jackson.databind.node.ObjectNode withDocument()
        Sets the status to READY if state not explicitly set elsewhere and returns the internal document. The internal documents is initially empty if not already set elsewhere.
        Returns:
        internal document
      • getCursor

        public Optional<Long> getCursor()
        Returns the cursor.
        Returns:
        the cursor
      • setCursor

        public BoxDocument setCursor​(Long cursor)
        Sets the cursor.

        When processing a document, this should only be updated if the box document actually changed since last time. This should generally be left blank because Box will make that determination and set it appropriately when saving. If it's not blank, Box will honor the set value.

        Parameters:
        cursor - the cursor to set
        Returns:
        this
      • getModified

        public Optional<Instant> getModified()
        Returns the modified date.
        Returns:
        when the document was last modified
      • setModified

        public BoxDocument setModified​(Instant modified)
        Sets the modified date.

        When processing a document, this should only be updated if the box document actually changed since last time. This should generally be left blank because Box will make that determination and set it appropriately when saving. If it's not blank, Box will honor the set value.

        Parameters:
        modified - the modified to set
        Returns:
        this
      • getProcessed

        public Optional<Instant> getProcessed()
        Returns the processed date.
        Returns:
        the processed
      • setProcessed

        public BoxDocument setProcessed​(Instant processed)
        Sets the processed date.

        When processing a document, this can be left blank because Box will set it appropriately when saving. If it's not blank, Box will honor the set value.

        Parameters:
        processed - the processed to set
        Returns:
        this
      • getMessage

        public Optional<String> getMessage()
        Return the error message.
        Returns:
        the error
      • setMessage

        public BoxDocument setMessage​(String message)
        Sets the message if an error occurred.
        Parameters:
        message - the message to set if an error occurred
        Returns:
        this
      • getFacets

        public Set<Facet> getFacets()
        Returns the facets.
        Returns:
        the facets
      • getDependencies

        public Set<DocumentId> getDependencies()
        Returns the dependencies.
        Returns:
        the dependencies
      • getGroupId

        public Optional<String> getGroupId()
        Returns the groupId.
        Returns:
        the groupId
      • setGroupId

        public BoxDocument setGroupId​(String groupId)
        Sets this document's group (used for orphan cleanup).
        Parameters:
        groupId - the groupId to set
        Returns:
        this
      • getStatus

        public BoxDocument.Status getStatus()
        Returns the status.
        Returns:
        the status
      • setStatus

        public BoxDocument setStatus​(BoxDocument.Status status)
        Explicitly sets the status.
        Parameters:
        status - the status to set
        Returns:
        this
      • clearFacets

        public BoxDocument clearFacets()
        Clears the set of facets.
        Returns:
        this
      • clearDependencies

        public BoxDocument clearDependencies()
        Clears the set of dependencies.
        Returns:
        this