Class DnNode<N>

  • Type Parameters:
    N - The type of node we store

    public class DnNode<N>
    extends Object
    A class storing nodes in a tree designed to map DNs.
    Branch nodes in this tree refers to child nodes. Leaf nodes in the tree don't have any children.
    A node may contain a reference to an object whose suffix is the path through the nodes of the tree from the root.
    A node may also have no attached element.
    Each child node is referenced by a Rdn, and holds the full Dn corresponding to its position
    Author:
    Apache Directory Project
    • Constructor Summary

      Constructors 
      Constructor Description
      DnNode()
      Creates a new instance of DnNode.
      DnNode​(N element)
      Creates a new instance of DnNode.
      DnNode​(Dn dn, N element)
      Creates a new instance of DnNode.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      DnNode<N> add​(Dn dn)
      Add a new node in the tree.
      DnNode<N> add​(Dn dn, N element)
      Add a new node in the tree.
      boolean contains​(Rdn rdn)
      Tells if the current DnBranchNode contains another node associated with an rdn.
      DnNode<N> getChild​(Rdn rdn)
      Get's a child using an rdn string.
      Map<String,​DnNode<N>> getChildren()  
      List<N> getDescendantElements​(Dn dn)  
      Dn getDn()  
      N getElement()  
      N getElement​(Dn dn)  
      DnNode<N> getNode​(Dn dn)
      Get the Node for a given Dn, if present in the tree.
      For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent, and dc=acme, dc=org will be returned.
      DnNode<N> getParent()  
      DnNode<N> getParentWithElement()
      Get the closest Node for a given Dn which has an element, if present in the tree.
      For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent, and dc=acme, dc=org will be returned if it has an associated element.
      DnNode<N> getParentWithElement​(Dn dn)
      Get the closest Node for a given Dn which has an element, if present in the tree.
      For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent, and dc=acme, dc=org will be returned if it has an associated element.
      Rdn getRdn()  
      boolean hasChildren()
      Tells if the current DnNode has some children or not
      boolean hasChildren​(Dn dn)
      Tells if a node has some children or not.
      boolean hasDescendantElement​(Dn dn)  
      boolean hasElement()  
      boolean hasElement​(Dn dn)  
      boolean hasParent()  
      boolean hasParent​(Dn dn)
      Tells if there is a parent for a given Dn,.
      boolean hasParentElement​(Dn dn)
      Get the closest Node for a given Dn which has an element, if present in the tree.
      For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent, and dc=acme, dc=org will be returned if it has an associated element.
      boolean isLeaf()
      Tells if the implementation is a leaf node.
      boolean isLeaf​(Dn dn)
      Tells if the implementation is a leaf node.
      void move​(Dn newParent)
      move the DnNode's Dn
      void remove​(Dn dn)
      Removes a node from the tree.
      void rename​(Rdn newRdn)
      rename the DnNode's Dn
      int size()
      Returns the number of entries under this node.
      String toString()
    • Constructor Detail

      • DnNode

        public DnNode()
        Creates a new instance of DnNode.
      • DnNode

        public DnNode​(N element)
        Creates a new instance of DnNode.
        Parameters:
        element - the element to store
      • DnNode

        public DnNode​(Dn dn,
                      N element)
        Creates a new instance of DnNode.
        Parameters:
        dn - the node's Dn
        element - the element to store
    • Method Detail

      • isLeaf

        public boolean isLeaf()
        Tells if the implementation is a leaf node. If it's a branch node then false is returned.
        Returns:
        true if the class is a leaf node, false otherwise.
      • isLeaf

        public boolean isLeaf​(Dn dn)
        Tells if the implementation is a leaf node. If it's a branch node then false is returned.
        Parameters:
        dn - The Dn we want to check
        Returns:
        true if this is a leaf node, false otherwise.
      • size

        public int size()
        Returns the number of entries under this node. It includes the node itself, plus the number of all it children and descendants.
        Returns:
        The number of descendents
      • getElement

        public N getElement()
        Returns:
        Return the stored element, if any
      • getElement

        public N getElement​(Dn dn)
        Parameters:
        dn - The Dn we want to get the element for
        Returns:
        Return the stored element, if any
      • hasElement

        public boolean hasElement()
        Returns:
        True if the Node stores an element. BranchNode may not hold any element.
      • hasElement

        public boolean hasElement​(Dn dn)
        Parameters:
        dn - The Dn we want to get the element for
        Returns:
        True if the Node stores an element. BranchNode may not hold any element.
      • hasDescendantElement

        public boolean hasDescendantElement​(Dn dn)
        Parameters:
        dn - The Dn we want to get the element for
        Returns:
        True if one of the node below the current node has one element, False otherwise
      • getDescendantElements

        public List<NgetDescendantElements​(Dn dn)
        Parameters:
        dn - The Dn we want to get the element for
        Returns:
        True if one of the node below the current node has one element, False otherwise
      • hasChildren

        public boolean hasChildren()
        Tells if the current DnNode has some children or not
        Returns:
        true if the node has some children
      • hasChildren

        public boolean hasChildren​(Dn dn)
                            throws LdapException
        Tells if a node has some children or not.
        Parameters:
        dn - the node's Dn
        Returns:
        true if the node has some children
        Throws:
        LdapException - if the Dn is null or empty
      • hasParent

        public boolean hasParent()
        Returns:
        True if the current DnNode has a parent
      • hasParent

        public boolean hasParent​(Dn dn)
        Tells if there is a parent for a given Dn,. This parent should be a subset of the given dn.
        For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent
        For the Dn ou=apache, dc=org, there is no parent, so false will be returned.
        Parameters:
        dn - the normalized distinguished name to resolve to a parent
        Returns:
        true if there is a parent associated with the normalized dn
      • add

        public DnNode<Nadd​(Dn dn)
                      throws LdapException
        Add a new node in the tree. The added node won't have any element.
        Parameters:
        dn - The node's Dn
        Returns:
        the corresponding node
        Throws:
        LdapException - if the Dn is null or empty
      • add

        public DnNode<Nadd​(Dn dn,
                             N element)
                      throws LdapException
        Add a new node in the tree. We can't add a node if its Dn is empty. The added element is attached to the node, which is named by the Dn's Rdn.
        Parameters:
        dn - The node's Dn
        element - The element to associate with this Node. Can be null.
        Returns:
        the corresponding node
        Throws:
        LdapException - if the Dn is null or empty
      • remove

        public void remove​(Dn dn)
                    throws LdapException
        Removes a node from the tree.
        Parameters:
        dn - the node's Dn
        Throws:
        LdapException - if the Dn is null or empty
      • contains

        public boolean contains​(Rdn rdn)
        Tells if the current DnBranchNode contains another node associated with an rdn.
        Parameters:
        rdn - The name we are looking for
        Returns:
        true if the tree instance contains this name
      • getChild

        public DnNode<NgetChild​(Rdn rdn)
        Get's a child using an rdn string.
        Parameters:
        rdn - the rdn to use as the node key
        Returns:
        the child node corresponding to the rdn.
      • getRdn

        public Rdn getRdn()
        Returns:
        The Node's Rdn
      • getNode

        public DnNode<NgetNode​(Dn dn)
        Get the Node for a given Dn, if present in the tree.
        For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent, and dc=acme, dc=org will be returned.
        For the Dn ou=apache, dc=org, there is no parent, so null will be returned.
        Parameters:
        dn - the normalized distinguished name to resolve to a parent
        Returns:
        the Node associated with the normalized dn
      • hasParentElement

        public boolean hasParentElement​(Dn dn)
        Get the closest Node for a given Dn which has an element, if present in the tree.
        For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent, and dc=acme, dc=org will be returned if it has an associated element.
        For the Dn ou=apache, dc=org, there is no parent, so null will be returned.
        Parameters:
        dn - the normalized distinguished name to resolve to a parent
        Returns:
        the Node associated with the normalized dn
      • getParentWithElement

        public DnNode<NgetParentWithElement​(Dn dn)
        Get the closest Node for a given Dn which has an element, if present in the tree.
        For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent, and dc=acme, dc=org will be returned if it has an associated element.
        For the Dn ou=apache, dc=org, there is no parent, so null will be returned.
        Parameters:
        dn - the normalized distinguished name to resolve to a parent
        Returns:
        the Node associated with the normalized dn
      • getParentWithElement

        public DnNode<NgetParentWithElement()
        Get the closest Node for a given Dn which has an element, if present in the tree.
        For instance, if we have stored dc=acme, dc=org into the tree, the Dn: ou=example, dc=acme, dc=org will have a parent, and dc=acme, dc=org will be returned if it has an associated element.
        For the Dn ou=apache, dc=org, there is no parent, so null will be returned.
        Returns:
        the Node associated with the normalized dn
      • rename

        public void rename​(Rdn newRdn)
                    throws LdapException
        rename the DnNode's Dn
        Parameters:
        newRdn - the new Rdn of this node
        Throws:
        LdapException - If the rename failed
      • move

        public void move​(Dn newParent)
                  throws LdapException
        move the DnNode's Dn
        Parameters:
        newParent - the new parent Dn
        Throws:
        LdapException - If the move failed
      • getDn

        public Dn getDn()
        Returns:
        the dn