Interface DocumentModel

  • All Superinterfaces:
    Serializable
    All Known Implementing Classes:
    DeletedDocumentModel, DocumentModelImpl, ShallowDocumentModel, SimpleDocumentModel

    public interface DocumentModel
    extends Serializable
    The document model is a serializable representation of a core document.

    The document model is made from several data models, each data model is bound to a schema. All the information about a document (like security) is expressed using schemas (and implicitly data models).

    Data models are lazily loaded as they are needed. At document model creation only data models corresponding to the default schemas are loaded. The default schemas are configured in the type manager through extension points.

    See Also:
    CoreSession
    • Method Detail

      • getDocumentType

        DocumentType getDocumentType()
        Gets the document type object.
        Returns:
        the document type object
      • getSessionId

        @Deprecated
        String getSessionId()
        Deprecated.
        since 11.1
        Returns the repository name and principal when the document is attached.
      • getPrincipal

        NuxeoPrincipal getPrincipal()
        Gets the principal attached to this document's session.
        Returns:
        the principal
        Since:
        11.1
      • getCoreSession

        CoreSession getCoreSession()
        Gets the core session to which this document is tied.

        This may be null if the document has been detached from a session.

        Returns:
        the core session
        Since:
        5.2.GA
      • detach

        void detach​(boolean loadAll)
        Detaches the documentImpl from its existing session, so that it can survive beyond the session's closing.
        Parameters:
        loadAll - if true, load all data and ACP from the session before detaching
        Since:
        5.6
      • attach

        void attach​(CoreSession coreSession)
        Reattaches a document to an existing session.
        Parameters:
        coreSession - the session to attach to
        Since:
        11.1
      • isAttached

        boolean isAttached()
        Checks whether this document is attached to a session.
        Returns:
        true if the document is attached to a session
        Since:
        11.1
      • getRef

        DocumentRef getRef()
        Gets a reference to the core document that can be used either remotely or locally (opens the core JVM).
        Returns:
        the document reference
      • getParentRef

        DocumentRef getParentRef()
        Retrieves the parent reference of the current document.
        Returns:
        the parent reference or null if no parent
      • getId

        String getId()
        Gets the document UUID.
        Returns:
        the document UUID
      • getName

        String getName()
        Gets the document name.
        Returns:
        the document name
      • getPos

        Long getPos()
        Gets the document's position in its containing folder (if ordered).
        Returns:
        the position, or null if the containing folder is not ordered
        Since:
        6.0
      • getTitle

        String getTitle()
        Get a text suitable to be shown in a UI for this document.
        Returns:
        the title or the internal name if no title could be found
      • getPathAsString

        String getPathAsString()
        Gets the document path as a string.
        Returns:
        the document path as string
      • getPath

        Path getPath()
        Gets the document path.
        Returns:
        the document path as string
      • getType

        String getType()
        Gets the document type name.
        Returns:
        the document type name
      • getSchemas

        String[] getSchemas()
        Gets the schemas available on this document (from the type and the facets).
        Returns:
        the schemas
        Since:
        5.4.2
      • hasSchema

        boolean hasSchema​(String schema)
        Checks if the document has the given schema, either from its type or added on the instance through a facet.
        Parameters:
        schema - the schema name
        Returns:
        true if the document has the schema
      • getFacets

        Set<String> getFacets()
        Gets the facets available on this document (from the type and the instance facets).
        Returns:
        the facets
        Since:
        5.4.2
      • hasFacet

        boolean hasFacet​(String facet)
        Checks if the document has a facet, either from its type or added on the instance.
        Parameters:
        facet - the facet name
        Returns:
        true if the document has the facet
      • addFacet

        boolean addFacet​(String facet)
        Adds a facet to the document instance.

        Does nothing if the facet was already present on the document.

        Parameters:
        facet - the facet name
        Returns:
        true if the facet was added, or false if it is already present
        Throws:
        IllegalArgumentException - if the facet does not exist
        Since:
        5.4.2
      • removeFacet

        boolean removeFacet​(String facet)
        Removes a facet from the document instance.

        It's not possible to remove a facet coming from the document type.

        Parameters:
        facet - the facet name
        Returns:
        true if the facet was removed, or false if it isn't present or is present on the type or does not exit
        Since:
        5.4.2
      • setPathInfo

        void setPathInfo​(String parentPath,
                         String name)
        Sets path info.

        path and ref attributes will be set according to info

      • setLock

        Lock setLock()
              throws LockException
        Sets a lock on the document.
        Returns:
        the lock info that was set
        Throws:
        LockException - if the document is already locked
        Since:
        5.4.2
      • removeLock

        Lock removeLock()
                 throws LockException
        Removes the lock on the document.

        The caller principal should be the same as the one who set the lock or to belongs to the administrator group, otherwise an exception will be throw.

        If the document was not locked, does nothing.

        Returns the previous lock info.

        Returns:
        the removed lock info, or null if there was no lock
        Throws:
        LockException - if the document is locked by someone else
        Since:
        5.4.2
      • isCheckedOut

        boolean isCheckedOut()
        Tests if the document is checked out.

        A checked out document can be modified normally. A checked in document is identical to the last version that it created, and not modifiable.

        Only applicable to documents that are live (not versions and not proxies).

        Returns:
        true if the document is checked out, false if it is checked in
        Since:
        5.4
      • checkOut

        void checkOut()
        Checks out a document.

        A checked out document can be modified normally.

        Only applicable to documents that are live (not versions and not proxies).

        Since:
        5.4
      • checkIn

        DocumentRef checkIn​(VersioningOption option,
                            String checkinComment)
        Checks in a document and returns the created version.

        A checked in document is identical to the last version that it created, and not modifiable.

        Only applicable to documents that are live (not versions and not proxies).

        Parameters:
        option - whether to do create a new VersioningOption.MINOR or VersioningOption.MAJOR version during check in
        checkinComment - the checkin comment
        Returns:
        the version just created
        Since:
        5.4
      • getVersionLabel

        String getVersionLabel()
        Returns the version label.

        The label returned is computed by the VersioningService.

        Returns:
        the version label, or null
      • getCheckinComment

        String getCheckinComment()
        Returns the checkin comment if the document model is a version.
        Returns:
        the checkin comment, or null
        Since:
        5.4
      • getCheckinDate

        Calendar getCheckinDate()
        Returns the checkin date (the date the version was created) if the document model is a version.
        Returns:
        the checkin date, or null
        Since:
        2023
      • getVersionSeriesId

        String getVersionSeriesId()
        Gets the version series id for this document.

        All documents and versions derived by a check in or checkout from the same original document share the same version series id.

        Returns:
        the version series id
        Since:
        5.4
      • isLatestVersion

        boolean isLatestVersion()
        Checks if a document is the latest version in the version series.
        Since:
        5.4
      • isMajorVersion

        boolean isMajorVersion()
        Checks if a document is a major version.
        Since:
        5.4
      • isLatestMajorVersion

        boolean isLatestMajorVersion()
        Checks if a document is the latest major version in the version series.
        Since:
        5.4
      • isVersionSeriesCheckedOut

        boolean isVersionSeriesCheckedOut()
        Checks if there is a checked out working copy for the version series of this document.
        Since:
        5.4
      • isRecord

        default boolean isRecord()
        Checks if the document is a record.
        Returns:
        true if the document is a record, false otherwise
        Since:
        11.1
      • isEnforcedRecord

        default boolean isEnforcedRecord()
        Checks if the document is an enforced record.
        Returns:
        true if the document is an enforced record, false otherwise
        Since:
        2023.1
      • isFlexibleRecord

        default boolean isFlexibleRecord()
        Checks if the document is a flexible record.
        Returns:
        true if the document is a flexible record, false otherwise
        Since:
        2023.1
      • getRetainedProperties

        default List<String> getRetainedProperties()
        Gets the retained properties of this document at the time it became a record.
        Returns:
        the retained properties
        Since:
        2021.32
      • hasLegalHold

        default boolean hasLegalHold()
        Checks if the document has a legal hold set.
        Returns:
        true if a legal hold has been set on the document, false otherwise
        Since:
        11.1
        See Also:
        isUnderRetentionOrLegalHold()
      • isUnderRetentionOrLegalHold

        default boolean isUnderRetentionOrLegalHold()
        Checks if the document has a retention date in the future or has a legal hold.
        Returns:
        true if the document has a retention date in the future or if it has a legal hold, false otherwise
        Since:
        11.1
        See Also:
        getRetainUntil(), hasLegalHold()
      • getACP

        ACP getACP()
        Gets the access control policy (ACP) for this document.

        Returns null if no security was defined on this document.

        The ACP can be used to introspect or to evaluate user privileges on this document.

        This is a wrapper for CoreSession.getACP(DocumentRef) but it is recommended since it caches the ACP for later usage.

        Returns:
        the security data model or null if none
      • getProperty

        Object getProperty​(String schemaName,
                           String name)
        Gets a property from the given schema.

        The data model owning the property will be fetched from the server if not already fetched.

        Parameters:
        schemaName - the schema name
        name - the property name
        Returns:
        the property value or null if no such property exists
      • getPropertyObject

        Property getPropertyObject​(String schema,
                                   String name)
        Gets a property object from the given schema.
        Parameters:
        schema - the schema name
        name - the property name
        Returns:
        the property, or null if no such property exists
        Since:
        8.4
      • setProperty

        void setProperty​(String schemaName,
                         String name,
                         Object value)
        Sets the property value from the given schema.

        This operation will not fetch the data model if not already fetched

        Parameters:
        schemaName - the schema name
        name - the property name
        value - the property value
      • getProperties

        Map<String,​Object> getProperties​(String schemaName)
        Gets the values from the given data model as a map.

        The operation will fetch the data model from the server if not already fetched.

        Parameters:
        schemaName - the data model schema name
        Returns:
        the values map
      • setProperties

        void setProperties​(String schemaName,
                           Map<String,​Object> data)
        Sets values for the given data model.

        This will not fetch the data model if not already fetched.

        Parameters:
        schemaName - the schema name
        data - the values to set
      • isTrashed

        boolean isTrashed()
        Checks if this document is in the trash.
        Returns:
        true if the document is in the trash, false otherwise.
        Since:
        10.1
      • isFolder

        boolean isFolder()
        Checks if this document is a folder.
        Returns:
        true if the document is a folder, false otherwise
      • isVersionable

        boolean isVersionable()
        Checks if this document can have versions.
        Returns:
        true if the document can have versions, false otherwise
      • isDownloadable

        boolean isDownloadable()
        Checks if this document can be downloaded.
        Returns:
        true if the document has downloadable content, false otherwise
      • isVersion

        boolean isVersion()
        Checks if this document is a version.
        Returns:
        true if the document is an older version of another document, false otherwise
      • isProxy

        boolean isProxy()
        Checks if this document is a proxy.
        Returns:
        true if the document is a proxy false otherwise
      • isImmutable

        boolean isImmutable()
        Checks if this document is immutable.
        Returns:
        true if the document is a version or a proxy to a version, false otherwise
        Since:
        1.6.1 (5.3.1)
      • isDirty

        boolean isDirty()
        Checks if the document has actual data to write (dirty parts).
        Since:
        5.5
      • accept

        void accept​(PropertyVisitor visitor,
                    Object arg)
        Method that implement the visitor pattern.

        The visitor must return null to stop visiting children otherwise a context object that will be passed as the arg argument to children

        Parameters:
        visitor - the visitor to accept
        arg - an argument passed to the visitor. This should be used by the visitor to carry on the visiting context.
        Since:
        5.5
      • getAdapter

        <T> T getAdapter​(Class<T> itf)
        Adapts the document to the given interface.

        Attention, the first computation will cache the adaptation result for later calls.

        Type Parameters:
        T - the interface type to adapt to
        Parameters:
        itf - the interface class
        Returns:
        the adapted document
      • getAdapter

        <T> T getAdapter​(Class<T> itf,
                         boolean refreshCache)
        Adapts the document to the given interface.
        Type Parameters:
        T - the interface type to adapt to
        Parameters:
        itf - the interface class
        refreshCache - : readapt and stores in cache if already exists.
        Returns:
        the adapted document
      • getCurrentLifeCycleState

        String getCurrentLifeCycleState()
        Returns the life cycle of the document.
        Returns:
        the life cycle as a string
        Implementation Note:
        See org.nuxeo.ecm.core.lifecycle package
      • getLifeCyclePolicy

        String getLifeCyclePolicy()
        Returns the life cycle policy of the document.
        Returns:
        the life cycle policy
        Implementation Note:
        See org.nuxeo.ecm.core.lifecycle package
      • followTransition

        boolean followTransition​(String transition)
        Follows a given life cycle transition.

        This will update the current life cycle of the document.

        Parameters:
        transition - the name of the transition to follow
        Returns:
        a boolean representing the status if the operation
      • getAllowedStateTransitions

        Collection<String> getAllowedStateTransitions()
        Gets the allowed state transitions for this document.
        Returns:
        a collection of state transitions as string
      • getContextData

        Map<String,​Serializable> getContextData()
        Gets the context data associated to this document.
        Returns:
        a map of context data
      • getContextData

        Serializable getContextData​(String key)
        Gets the context data using the default scope.
        Parameters:
        key - the context data key
        Returns:
        the value
      • putContextData

        void putContextData​(String key,
                            Serializable value)
        Sets a context data in the default scope.
        Parameters:
        key - the context data key
        value - the value
      • copyContextData

        void copyContextData​(DocumentModel otherDocument)
        Copies the context data from given document to this document.
      • copyContent

        void copyContent​(DocumentModel sourceDoc)
        Copies all the data from a source document.
      • getRepositoryName

        String getRepositoryName()
        Returns the name of the repository in which the document is stored.
        Returns:
        the repository name as a string.
      • getCacheKey

        String getCacheKey()
        Returns a cache key.

        Cache key will be computed like this : docUUID + "-" + sessionId + "-" + timestamp

        We will use the last modification time if present for the timestamp.

        Since 5.6, the timestamp does not hold milliseconds anymore as some databases do not store them, which could interfere with cache key comparisons.

        Returns:
        the cache key as a string
      • getSourceId

        String getSourceId()
        Returns the source document identifier.

        This is useful when not interested about the repository UUID itself. Technically, this is the current version UUID.

        Returns:
        the source id as a string.
      • isPrefetched

        @Deprecated
        boolean isPrefetched​(String xpath)
        Deprecated.
        since 10.1, will always return false
        Checks if a property is prefetched.
        Parameters:
        xpath - the property xpath
        Returns:
        true if it is prefetched
        Since:
        5.5
      • isPrefetched

        @Deprecated
        boolean isPrefetched​(String schemaName,
                             String name)
        Deprecated.
        since 10.1, will always return false
        Checks if a property is prefetched.
        Parameters:
        schemaName - the schema name
        name - the property name
        Returns:
        true if it is prefetched
        Since:
        5.5
      • prefetchCurrentLifecycleState

        void prefetchCurrentLifecycleState​(String lifecycle)
        Used to set lifecycle state along with prefetching other properties.
      • prefetchLifeCyclePolicy

        void prefetchLifeCyclePolicy​(String lifeCyclePolicy)
        Used to set lifecycle policy along with prefetching other properties.
      • isLifeCycleLoaded

        boolean isLifeCycleLoaded()
      • getSystemProp

        <T extends Serializable> T getSystemProp​(String systemProperty,
                                                 Class<T> type)
        Gets system property of the specified type. This is not a lazy loaded property, thus the request is made directly to the server. This is needed as some critical system properties might be changed directly in the core.
      • getPropertyObjects

        Collection<Property> getPropertyObjects​(String schema)
        Gets the Property objects for the given schema.

        An empty list is returned if the document doesn't have the schema.

        Parameters:
        schema - the schema
        Returns:
        the properties
        Since:
        8.4
      • getProperty

        Property getProperty​(String xpath)
                      throws PropertyException
        Gets a property given a xpath.

        Note that what's called xpath in this context is not an actual XPath as specified by the w3c. Main differences are that in our xpath:

        • Indexes start at 0 instead of 1
        • You can express foo/bar[i]/baz as foo/i/baz
        The latter is possible because in Nuxeo lists of complex elements are homogenous, so the name of the second-level element is implied.
        Throws:
        PropertyException
      • getPropertyValue

        Serializable getPropertyValue​(String xpath)
                               throws PropertyException
        Gets a property value given a xpath.

        Note that what's called xpath in this context is not an actual XPath as specified by the w3c. Main differences are that in our xpath:

        • Indexes start at 0 instead of 1
        • You can express foo/bar[i]/baz as foo/i/baz
        The latter is possible because in Nuxeo lists of complex elements are homogenous, so the name of the second-level element is implied.
        Throws:
        PropertyException
      • reset

        void reset()
        Clears any prefetched or cached document data.

        This will force the document to lazily update its data when required.

      • refresh

        void refresh​(int refreshFlags,
                     String[] schemas)
        Refresh document data from server.

        The data models will be removed and all prefetch and system data will be refreshed from the server

        The refreshed data contains:

        • document life cycle
        • document lock state, acp if required
        • acp if required - otherwise acp info will be cleared so that it will be refetched in lazy way
        • document parts if required - otherwise parts data will be removed to be refreshed lazy
        The refresh flags are: If XX_IF_LOADED is used then XX will be refreshed only if already loaded in the document - otherwise a lazy refresh will be done
        Parameters:
        refreshFlags - the refresh flags
        schemas - the document parts (schemas) that should be refreshed now
      • refresh

        void refresh()
        Same as DocumentModel.refresh(REFRESH_DEFAULT).
      • getBinaryFulltext

        Map<String,​String> getBinaryFulltext()
        Gets the fulltext extracted from the binary fields.
        Since:
        5.9.3
      • getObjectResolver

        PropertyObjectResolver getObjectResolver​(String xpath)
        Parameters:
        xpath - the property xpath
        Returns:
        A PropertyObjectResolver to manage the property reference to external entities, null if this property's type has no resolver.
        Since:
        7.1