Interface NavigationService


public interface NavigationService
  • Method Details

    • loadNavigation

      NavigationContext loadNavigation(SiteKey key)
      Find and returns a navigation, if no such site exist, null is returned instead.
      Parameters:
      key - the navigation key
      Returns:
      the matching navigation
    • saveNavigation

      void saveNavigation(NavigationContext navigation)
      Create, update a navigation. When the navigation state is not null, the navigation will be created or updated depending on whether or not the navigation already exists.
      Parameters:
      navigation - the navigation
    • destroyNavigation

      boolean destroyNavigation(NavigationContext navigation)
      Delete a navigation for a given site
      Parameters:
      navigation - the navigation
      Returns:
      true if the navigation was destroyed
    • destroyNavigation

      boolean destroyNavigation(SiteKey siteKey)
      Delete a navigation for a given site
      Parameters:
      siteKey - SiteKey
      Returns:
      true if the navigation was destroyed
    • loadNode

      <N> NodeContext<N> loadNode(NodeModel<N> model, NavigationContext navigation, Scope scope, NodeChangeListener<NodeContext<N>> listener)
      Load a navigation node from a specified navigation. The returned context will be the root node of the navigation.
      Type Parameters:
      N - the node generic type
      Parameters:
      model - the node model
      navigation - the navigation
      scope - the scope
      listener - the optional listener
      Returns:
      the loaded node
    • loadNode

      <N> NodeContext<NodeContext<N>> loadNode(SiteKey siteKey)
      Loads root node of a designated Site
      Type Parameters:
      N - the node generic type
      Parameters:
      siteKey - SiteKey
      Returns:
      the loaded node
    • loadNode

      <N> NodeContext<NodeContext<N>> loadNode(SiteKey siteKey, String navUri)
      Loads a specific node of a Site identitifed by its relative URI (from root node until node)
      Type Parameters:
      N - the node generic type
      Parameters:
      siteKey -
      navUri -
      Returns:
      the loaded node
    • loadNodeById

      default <N> NodeContext<N> loadNodeById(NodeModel<N> model, String nodeId, Scope scope, NodeChangeListener<NodeContext<N>> listener)
      Load a navigation node from a specified navigation by its id
      Type Parameters:
      N - the node generic type
      Parameters:
      model - the node model
      nodeId - the node id
      scope - the scope
      listener - the optional listener
      Returns:
      the loaded node
    • saveNode

      <N> void saveNode(NodeContext<N> context, NodeChangeListener<NodeContext<N>> listener)

      Save the specified context state to the persistent storage. The operation takes the pending changes done to the tree and attempt to save them to the persistent storage. When conflicts happens, a merge will be attempted however it can lead to a failure.

      Parameters:
      context - the context to save
      listener - the optional listener
    • updateNode

      <N> void updateNode(NodeContext<N> context, Scope scope, NodeChangeListener<NodeContext<N>> listener)

      Update the specified context argument with the most recent state. The update operation will affect the entire tree even if the context argument is not the root of the tree. The context argument determines the root from which the scope argument applies to.

      The update operation compares the actual tree and the most recent version of the same tree. When the scope argument is not null, it will be used to augment the tree with new nodes. During the operation, any modification done to the tree wil be reported as a change to the optional listener argument.

      The update operates recursively by doing a comparison of the node intrisic state (name or state) and its structural state (the children). The comparison between the children of two nodes is done thanks to the Longest Common Subsequence algorithm to minimize the number of changes to perform. The operation assumes that no changes have been performed on the actual tree.

      Type Parameters:
      N - the node generic type
      Parameters:
      context - the context to update
      scope - the optional scope
      listener - the optional node change listener
    • rebaseNode

      <N> void rebaseNode(NodeContext<N> context, Scope scope, NodeChangeListener<NodeContext<N>> listener)

      Rebase the specified context argument with the most recent state. The rebase operation will affect the entire tree even if the context argument is not the root of the tree. The context argument determines the root from which the scope argument applies to.

      The rebase operation compares the actual tree and the most recent version of the same tree. When the scope argument is not null, it will be used to augment the tree with new nodes. During the operation, any modification done to the tree wil be reported as a change to the optional listener argument.

      The rebase operates in a similar way of the update operation, however it assumes that it can have pending changes done to the tree (i.e changes that have not been saved). Actually a rebase operation with no changes will do the same than an update operation. The rebase operation attempts to bring the most recent changes to the tree, by doing a rebase of the pending operations on the actual tree. When conflicting changes exist, a merge will be attempted, however it could fail and lead to a non resolvable situation.

      Type Parameters:
      N - the node generic type
      Parameters:
      context - the context to rebase
      scope - the optional scope
      listener - the option node change listener @throws NullPointerException if the context argument is null
    • deleteNode

      void deleteNode(Long nodeId)
      Delete a navigation node with a given node id
      Parameters:
      nodeId - the node id to be deleted
    • getNodeById

      NodeData getNodeById(Long nodeId)
      Get a navigation node with a given node id
      Parameters:
      nodeId - the node id
    • moveNode

      void moveNode(Long targetId, Long fromId, Long toId, Long previousId)
      Move the given navigation node
      Parameters:
      targetId - the node id
      fromId - the parent node id
      toId - destination parent node id
      previousId - the previous node id
    • createNode

      NodeData[] createNode(Long parentId, Long previousId, String name, NodeState state)
      Create a navigation node
      Parameters:
      parentId - the parent node id
      previousId - the previous node id
      name - node name
      state - node state
    • updateNode

      void updateNode(Long nodeId, NodeState state)
      Update a navigation node
      Parameters:
      nodeId - the node id
      state - node state
    • saveNavigationFromTemplate

      void saveNavigationFromTemplate(SiteKey sourceSiteTemplate, SiteKey targetSiteKey) throws org.exoplatform.commons.exception.ObjectNotFoundException
      Parameters:
      sourceSiteTemplate - SiteKey of template
      targetSiteKey - SiteKey to create
      Throws:
      org.exoplatform.commons.exception.ObjectNotFoundException - when Site Template isn't found