Interface Session

  • All Superinterfaces:
    AutoCloseable
    All Known Implementing Classes:
    SessionImpl

    public interface Session
    extends AutoCloseable
    The session is the main high level access point to data from the underlying database.
    Author:
    Florent Guillaume
    • Method Detail

      • getMapper

        Mapper getMapper()
        Gets the low-level Mapper for this session.
        Returns:
        the mapper
      • getRepositoryName

        String getRepositoryName()
        Gets the session repository name.
        Returns:
        the repository name
      • getModel

        Model getModel()
        Gets the Model associated to this session.
        Returns:
        the model
      • save

        void save()
        Saves the modifications to persistent storage.

        Modifications will be actually written only upon transaction commit.

      • getRootNode

        Node getRootNode()
        Gets the root node of the repository.
        Returns:
        the root node
      • getNodeById

        Node getNodeById​(Serializable id)
        Gets a node given its id.
        Parameters:
        id - the id
        Returns:
        the node, or null if not found
      • getNodesByIds

        List<Node> getNodesByIds​(Collection<Serializable> ids)
        Gets several nodes given their ids.
        Parameters:
        ids - the ids
        Returns:
        the nodes, in the same order as the ids, with elements being null if not found
      • getNodeByPath

        Node getNodeByPath​(String path,
                           Node node)
        Gets a node given its absolute path, or given an existing node and a relative path.
        Parameters:
        path - the path
        node - the node (ignored for absolute paths)
        Returns:
        the node, or null if not found
      • addMixinType

        boolean addMixinType​(Node node,
                             String mixin)
        Adds a mixin to a node.

        Does nothing if the mixin was already present on the node.

        Parameters:
        node - the node
        mixin - the mixin name
        Returns:
        true if the mixin was added, or false if it is already present
        Since:
        5.8
      • removeMixinType

        boolean removeMixinType​(Node node,
                                String mixin)
        Removes a mixin from a node.

        It's not possible to remove a mixin coming from the primary type.

        Parameters:
        node - the node
        mixin - the mixin
        Returns:
        true if the mixin was removed, or false if it isn't present or is present on the type or does not exist
        Since:
        5.8
      • scroll

        ScrollResult<String> scroll​(String query,
                                    int batchSize,
                                    int keepAliveSeconds)
        Executes the given query and returns the first batch of results containing id of documents, next batch must be requested within the keepAliveSeconds delay.
        Since:
        8.4
      • scroll

        ScrollResult<String> scroll​(String query,
                                    QueryFilter queryFilter,
                                    int batchSize,
                                    int keepAliveSeconds)
        Executes the given query and returns the first batch of results containing id of documents, next batch must be requested within the keepAliveSeconds delay.
        Since:
        10.3
      • scroll

        ScrollResult<String> scroll​(String scrollId)
        Get the next batch of results containing id of documents, the scrollId is part of the previous ScrollResult response.
        Since:
        8.4
      • getParentNode

        Node getParentNode​(Node node)
        Gets the parent of a node.

        The root has a null parent.

        Parameters:
        node - the node
        Returns:
        the parent node, or null for the root's parent
      • getPath

        String getPath​(Node node)
        Gets the absolute path of a node.
        Parameters:
        node - the node
        Returns:
        the path
      • hasChildNode

        boolean hasChildNode​(Node parent,
                             String name,
                             boolean complexProp)
        Checks if a child node with the given name exists.

        There are two kinds of children, the regular children documents and the complex properties. The boolean complexProp allows a choice between those.

        Parameters:
        parent - the parent node
        name - the child name
        complexProp - whether to check complex properties or regular children
        Returns:
        true if a child node with that name exists
      • getChildNode

        Node getChildNode​(Node parent,
                          String name,
                          boolean complexProp)
        Gets a child node given its parent and name.
        Parameters:
        parent - the parent node
        name - the child name
        complexProp - whether to check complex properties or regular children
        Returns:
        the child node, or null is not found
      • hasChildren

        boolean hasChildren​(Node parent,
                            boolean complexProp)
        Checks it a node has children.
        Parameters:
        parent - the parent node
        complexProp - whether to check complex properties or regular children
        Returns:
        true if the parent has children
      • getChildren

        List<Node> getChildren​(Node parent,
                               String name,
                               boolean complexProp)
        Gets the children of a node.
        Parameters:
        parent - the parent node
        name - the children name to get (for lists of complex properties), or null for all
        complexProp - whether to check complex properties or regular children
        Returns:
        the collection of children
      • addChildNode

        Node addChildNode​(Node parent,
                          String name,
                          Long pos,
                          String typeName,
                          boolean complexProp)
        Creates a new child node.
        Parameters:
        parent - the parent to which the child is added
        name - the child name
        pos - the child position, or null
        typeName - the child type
        complexProp - whether this is a complex property (true) or a regular child (false)
        Returns:
        the new node
      • addChildNode

        Node addChildNode​(Serializable id,
                          Node parent,
                          String name,
                          Long pos,
                          String typeName,
                          boolean complexProp)
        Creates a new child node with given id (used for import).
        Parameters:
        id - the id
        parent - the parent to which the child is added
        name - the child name
        pos - the child position, or null
        typeName - the child type
        complexProp - whether this is a complex property (true) or a regular child (false)
        Returns:
        the new node
      • addProxy

        Node addProxy​(Serializable targetId,
                      Serializable versionSeriesId,
                      Node parent,
                      String name,
                      Long pos)
        Creates a proxy for a version node.
        Parameters:
        targetId - the target id
        versionSeriesId - the version series id
        parent - the parent to which the proxy is added
        name - the proxy name
        pos - the proxy position
        Returns:
        the new proxy node
      • setProxyTarget

        void setProxyTarget​(Node proxy,
                            Serializable targetId)
        Sets a proxies' target.
        Parameters:
        proxy - the proxy
        targetId - the new target id
        Since:
        5.5
      • orderBefore

        void orderBefore​(Node parent,
                         Node source,
                         Node dest)
        Order the given source child node before the destination child node. The source node will be placed before the destination one. If destination is null, the source node will be appended at the end of the children list.
        Parameters:
        parent - the parent node
        source - the child node to move
        dest - the child node before which to place the source node, or null to move at the end
      • move

        Node move​(Node source,
                  Node parent,
                  String name)
        Moves a node to a new location with a new name.

        A save() is automatically done first.

        Parameters:
        source - the node to move
        parent - the new parent to which the node is moved
        name - the new node name
        Returns:
        the moved node
      • copy

        default Node copy​(Node source,
                          Node parent,
                          String name)
        Copies a node to a new location with a new name.

        A save() is automatically done first.

        Parameters:
        source - the node to copy
        parent - the new parent to which the node is copied
        name - the new node name
        Returns:
        the copied node
      • copy

        Node copy​(Node source,
                  Node parent,
                  String name,
                  Consumer<Node> afterRecordCopy)
        Copies a node to a new location with a new name.

        A save() is automatically done first.

        Parameters:
        source - the node to copy
        parent - the new parent to which the node is copied
        name - the new node name
        afterRecordCopy - a consumer called on nodes that were records before copy
        Returns:
        the copied node
        Since:
        11.1
      • checkIn

        Node checkIn​(Node node,
                     String label,
                     String checkinComment)
        Checks in a checked-out node: creates a new version with a copy of its information.

        A save() is automatically done first.

        Parameters:
        node - the node to check in
        label - the label for the version
        checkinComment - the description for the version
        Returns:
        the created version
      • checkOut

        void checkOut​(Node node)
        Checks out a checked-in node.
        Parameters:
        node - the node to check out
      • restore

        void restore​(Node node,
                     Node version)
        Restores a node to a given version.

        The restored node is checked in.

        Parameters:
        node - the node to restore
        version - the version to restore from
      • getVersionByLabel

        Node getVersionByLabel​(Serializable versionSeriesId,
                               String label)
        Gets a version given its version series id and label.
        Parameters:
        versionSeriesId - the version series id
        label - the label
        Returns:
        the version node, or null if not found
      • getVersions

        List<Node> getVersions​(Serializable versionSeriesId)
        Gets all the versions for a given version series id.

        A save() is automatically done first.

        Parameters:
        versionSeriesId - the version series id
        Returns:
        the list of versions
      • getLastVersion

        Node getLastVersion​(Serializable versionSeriesId)
        Gets the last version for a given version series id.

        A save() is automatically done first.

        Parameters:
        versionSeriesId - the version series id
        Returns:
        the last version, or null if no versions exist
      • getProxies

        List<Node> getProxies​(Node document,
                              Node parent)
        Finds the proxies for a document. If the parent is not null, the search will be limited to its direct children.

        If the document is a version, then only proxies to that version will be looked up.

        Otherwise all proxies to the same version series than the document are retrieved.

        A save() is automatically done first.

        Parameters:
        document - the document
        parent - the parent, or null
        Returns:
        the list of proxies
      • getProxies

        List<Node> getProxies​(Node document)
        Finds the proxies for a document. (The document may be a version or a live document)
        Parameters:
        document - the document
        Returns:
        the list of proxies, or an empty list
        Since:
        10.2
      • query

        PartialList<Serializable> query​(String query,
                                        QueryFilter queryFilter,
                                        boolean countTotal)
        Makes a NXQL query to the database.
        Parameters:
        query - the query
        queryFilter - the query filter
        countTotal - if true, also count the total size without offset/limit
        Returns:
        the resulting list with total size included
      • query

        PartialList<Serializable> query​(String query,
                                        String queryType,
                                        QueryFilter queryFilter,
                                        long countUpTo)
        Makes a query to the database.
        Parameters:
        query - the query
        queryType - the query type
        queryFilter - the query filter
        countUpTo - if -1, also count the total size without offset/limit.
        If 0, don't count the total size.
        If n, count the total number if there are less than n documents otherwise set the size to -1.
        Returns:
        the resulting list with total size included
        Since:
        5.6
      • queryAndFetch

        IterableQueryResult queryAndFetch​(String query,
                                          String queryType,
                                          QueryFilter queryFilter,
                                          Object... params)
        Makes a query to the database and returns an iterable (which must be closed when done).
        Parameters:
        query - the query
        queryType - the query type
        queryFilter - the query filter
        params - optional query-type-dependent parameters
        Returns:
        an iterable, which must be closed when done
      • queryAndFetch

        IterableQueryResult queryAndFetch​(String query,
                                          String queryType,
                                          QueryFilter queryFilter,
                                          boolean distinctDocuments,
                                          Object... params)
        Makes a query to the database and returns an iterable (which must be closed when done).
        Parameters:
        query - the query
        queryType - the query type
        queryFilter - the query filter
        distinctDocuments - if true then a maximum of one row per document will be returned
        params - optional query-type-dependent parameters
        Returns:
        an iterable, which must be closed when done
        Since:
        7.10-HF04, 8.2
      • queryProjection

        PartialList<Map<String,​Serializable>> queryProjection​(String query,
                                                                    String queryType,
                                                                    QueryFilter queryFilter,
                                                                    boolean distinctDocuments,
                                                                    long countUpTo,
                                                                    Object[] params)
        Makes a query to the database.
        Parameters:
        query - the query
        queryType - the query type
        queryFilter - the query filter
        distinctDocuments - if true then a maximum of one row per document will be returned
        countUpTo - if -1, also count the total size without offset/limit.
        If 0, don't count the total size.
        If n, count the total number if there are less than n documents otherwise set the size to -1.
        params - optional query-type-dependent parameters
        Returns:
        a projection
        Since:
        7.10-HF-25, 8.10-HF06, 9.2
      • getLockManager

        LockManager getLockManager()
        Gets the lock manager for this session.
        Returns:
        the lock manager
        Since:
        7.4
      • requireReadAclsUpdate

        void requireReadAclsUpdate()
        Read ACLs are optimized ACLs for the read permission, they need to be updated after document creation or ACL change.

        This method flag the current session, the read ACLs update will be done automatically at save time.

      • updateReadAcls

        void updateReadAcls()
        Update only the read ACLs that have changed.
      • rebuildReadAcls

        void rebuildReadAcls()
        Rebuild the read ACLs for the whole repository.
      • isFulltextStoredInBlob

        boolean isFulltextStoredInBlob()
        Checks if fulltext extracted from the binary fields is internally stored as a blob.
        Returns:
        true if fulltext from binaries is store as a blob
        Since:
        11.1
      • isChangeTokenEnabled

        boolean isChangeTokenEnabled()
        Checks if change token management is enabled.
        Since:
        9.1
      • markUserChange

        void markUserChange​(Serializable id)
        Marks the document as being modified by a user change.

        This causes an additional change token increment and check during save.

        Parameters:
        id - the document id
        Since:
        9.2