Package edu.byu.hbll.box
Class BoxDocument
- java.lang.Object
-
- edu.byu.hbll.box.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 aObjectNode
. This internal document is the data of this object and all other fields are metadata.- Author:
- Charles Draper
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
BoxDocument.Deserializer
Deserializer of BoxDocument for Jackson.static class
BoxDocument.Serializer
Serializer of BoxDocument for Jackson.static class
BoxDocument.Status
Status of the document.
-
Constructor Summary
Constructors Modifier Constructor Description protected
BoxDocument()
Creates a new empty document.BoxDocument(BoxDocument boxDocument)
Copy Constructor.BoxDocument(String id)
Creates a new document initially in an UNPROCESSED state.BoxDocument(String id, com.fasterxml.jackson.databind.node.ObjectNode document)
Creates a new document initially in a READY state with the given internal document.BoxDocument(String id, BoxDocument.Status status)
Creates a new document with the given state.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description BoxDocument
addDependencies(DocumentId... dependencies)
Adds dependencies for this document.BoxDocument
addDependencies(Collection<? extends DocumentId> dependencies)
Adds dependencies for this document.BoxDocument
addDependency(String sourceName, String id)
Adds a dependency for this document.BoxDocument
addFacet(String name, String value)
Adds a facet to this document.BoxDocument
addFacets(Facet... facets)
Adds multiple facets to the document.BoxDocument
addFacets(String name, String... values)
Adds multiple facets to the document.BoxDocument
addFacets(String name, Collection<String> values)
Adds multiple facets to the document.BoxDocument
addFacets(Collection<? extends Facet> facets)
Adds multiple facets to the document.BoxDocument
addFacetsByQuery(String name, String path)
Adds a facet by querying the internal document using the given path.BoxDocument
addFacetsByQuery(Map<String,Set<String>> paths)
Adds facets by querying the internal document using the given paths.BoxDocument
clearDependencies()
Clears the set of dependencies.BoxDocument
clearFacets()
Clears the set of facets.Optional<Long>
getCursor()
Returns the cursor.Set<DocumentId>
getDependencies()
Returns the dependencies.com.fasterxml.jackson.databind.node.ObjectNode
getDocument()
Returns the internal document.Set<Facet>
getFacets()
Returns the facets.Optional<String>
getGroupId()
Returns the groupId.String
getId()
Returns the unique id of the document.Optional<String>
getMessage()
Return the error message.Optional<Instant>
getModified()
Returns the modified date.Optional<Instant>
getProcessed()
Returns the processed date.BoxDocument.Status
getStatus()
Returns the status.boolean
hasDifferentDependencies(BoxDocument o)
Whether or not this document's dependencies differ from the give document's.boolean
isDeleted()
Whether or not this document is in the DELETED state.boolean
isError()
Whether or not this document is in the ERROR state.boolean
isProcessed()
Whether or not this document's processing has completed.boolean
isReady()
Whether or not this document is in the READY state.boolean
isUnProcessed()
Whether or not this document is in the UNPROCESSED state.boolean
matches(Collection<Facet> facets)
Determines if this document matches (or should be included in a result set) given the supplied facets.static BoxDocument
parse(com.fasterxml.jackson.databind.node.ObjectNode json)
Creates a new box document from the given json.static BoxDocument
parse(InputStream json)
Creates a new box document from the given json.static BoxDocument
parse(String json)
Creates a new box document from the given json.BoxDocument
setAsDeleted()
Explicitly sets the status to deleted.BoxDocument
setAsError()
Explicitly sets the status to error.BoxDocument
setAsError(String message)
Explicitly sets the status to error and includes an error message.BoxDocument
setAsReady()
Explicitly sets the status to ready.BoxDocument
setAsUnprocessed()
Explicitly sets the status to unprocessed.BoxDocument
setCursor(Long cursor)
Sets the cursor.BoxDocument
setDependencies(Collection<? extends DocumentId> dependencies)
Clears dependencies and then adds these dependencies for this document.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.BoxDocument
setFacets(Collection<? extends Facet> facets)
Clears existing facets and then adds these facets to the document.BoxDocument
setGroupId(String groupId)
Sets this document's group (used for orphan cleanup).BoxDocument
setId(String id)
Set the unique id of the document.BoxDocument
setMessage(String message)
Sets the message if an error occurred.BoxDocument
setModified(Instant modified)
Sets the modified date.BoxDocument
setProcessed(Instant processed)
Sets the processed date.BoxDocument
setStatus(BoxDocument.Status status)
Explicitly sets the status.com.fasterxml.jackson.databind.node.ObjectNode
toJson()
Serializes to anObjectNode
.String
toString()
com.fasterxml.jackson.databind.node.ObjectNode
withDocument()
Sets the status to READY if state not explicitly set elsewhere and returns the internal document.
-
-
-
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 documentstatus
- 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 documentdocument
- 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 anObjectNode
.- 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 groupvalue
- 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 groupvalues
- 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 groupvalues
- 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 facetpath
- 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
-
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
-
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
-
getDependencies
public Set<DocumentId> getDependencies()
Returns the dependencies.- Returns:
- the dependencies
-
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
-
-