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.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 notboolean
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 Dnvoid
remove(Dn dn)
Removes a node from the tree.void
rename(Rdn newRdn)
rename the DnNode's Dnint
size()
Returns the number of entries under this node.String
toString()
-
-
-
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<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:
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
-
getChildren
public Map<String,DnNode<N>> getChildren()
- Returns:
- The list of DnNode
-
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:
true
if 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.
-
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
-
-