Class DnNode<N>
- java.lang.Object
-
- org.apache.directory.api.ldap.util.tree.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
-
-
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.booleancontains(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)DngetDn()NgetElement()NgetElement(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.RdngetRdn()booleanhasChildren()Tells if the current DnNode has some children or notbooleanhasChildren(Dn dn)Tells if a node has some children or not.booleanhasDescendantElement(Dn dn)booleanhasElement()booleanhasElement(Dn dn)booleanhasParent()booleanhasParent(Dn dn)Tells if there is a parent for a given Dn,.booleanhasParentElement(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.booleanisLeaf()Tells if the implementation is a leaf node.booleanisLeaf(Dn dn)Tells if the implementation is a leaf node.voidmove(Dn newParent)move the DnNode's Dnvoidremove(Dn dn)Removes a node from the tree.voidrename(Rdn newRdn)rename the DnNode's Dnintsize()Returns the number of entries under this node.StringtoString()
-
-
-
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
-
-
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:
trueif 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:
trueif 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<N> getDescendantElements(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:
trueif 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:
trueif 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<N> add(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<N> add(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 Dnelement- 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:
trueif the tree instance contains this name
-
getChild
public DnNode<N> getChild(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<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.
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<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.
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<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.
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
-
-