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 Details

    • close

      void close()
      Specified by:
      close in interface AutoCloseable
    • 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
    • removeNode

      default void removeNode(Node node)
      Removes a node from the storage.

      This is much more complex that removing a property node ( removePropertyNode(org.nuxeo.ecm.core.storage.sql.Node)).

      Parameters:
      node - the node to remove
      See Also:
    • removeNode

      void removeNode(Node node, Consumer<Node> beforeRecordRemove)
      Removes a node from the storage.

      This is much more complex than removing a property node (removePropertyNode(org.nuxeo.ecm.core.storage.sql.Node)).

      Parameters:
      node - the node to remove
      beforeRecordRemove - a consumer called on nodes of records before they are removed
      Since:
      11.1
      See Also:
    • removePropertyNode

      void removePropertyNode(Node node)
      Removes a property node from the storage.

      This is much less complex that removing a generic document node ( removeNode(org.nuxeo.ecm.core.storage.sql.Node)).

      Parameters:
      node - the property node to remove
      See Also:
    • 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
    • getBinaryFulltext

      Map<String,String> getBinaryFulltext(Serializable id, Document doc)
      Gets the fulltext extracted from the binary fields.
      Since:
      11.1
    • getBinaryFulltext

      @Deprecated default Map<String,String> getBinaryFulltext(Serializable id)
      Deprecated.
      Gets the fulltext extracted from the binary fields.
      Since:
      5.9.3
    • 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