Interface TreeNode<Self extends TreeNode<? extends Self>>
- All Known Implementing Classes:
DefaultTreeNode
,ModelCriteriaNode
,TreeStorageNodeInstance
,TreeStorageNodePrescription
public interface TreeNode<Self extends TreeNode<? extends Self>>
Interface representing a node in a tree that has ID.
Think twice when adding a method here: if added method does not operate purely on nodes or a generic tree, it does not belong here.
- Author:
- hmlnarik
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a node as a child of this node, and sets the parent of thenode
to this node.void
Adds a node as a child of this node, and sets the parent of thenode
to this node.findFirstBfs
(Predicate<Self> visitor) Breadth-first search for a node.findFirstBottommostDfs
(Predicate<Self> visitor) Depth-first search for a node that is bottommost from those matching DFS.findFirstDfs
(Predicate<Self> visitor) Depth-first search for a node.void
forEachParent
(Consumer<Self> visitor) Calls the givenvisitor
on each node laying on the path from this node (exclusive) to the root of the tree (inclusive).Returns a node by ID.Returns the children of the current node.Parent-to-this-node edge properties.<V> Optional<V>
getEdgeProperty
(String key, Class<V> clazz) Convenience method for obtaining a single parent-to-this-node edge property.getId()
Returns ID of the node, which could match e.g.Properties of the this node.<V> Optional<V>
getNodeProperty
(String key, Class<V> clazz) Convenience method for obtaining a single property of this node.Returns parent node or an emptyOptional
if this node is a root node.Returns a stream of the nodes laying on the path from this node (exclusive) to the root of the tree (inclusive).getPathToRoot
(TreeNode.PathOrientation orientation) Returns the path (list of nodes) from this node to root node.Properties of the whole tree.<V> Optional<V>
getTreeProperty
(String key, Class<V> clazz) Convenience method for obtaining a single property of tree that this node belongs to.int
removeChild
(Predicate<Self> shouldRemove) Removes child nodes satisfying the given predicate.removeChild
(Self node) Removes the given child node.void
Sets the parent node to the givenparent
.void
Walks the tree with the given visitor in breadth-first search manner.void
Walks the tree with the given visitor in depth-first search manner.
-
Method Details
-
addChild
Adds a node as a child of this node, and sets the parent of thenode
to this node.- Parameters:
node
- Future child node. Ifnull
or the node is already amongst the children list, no action is done.
-
addChild
Adds a node as a child of this node, and sets the parent of thenode
to this node.- Parameters:
index
- Index at which the specified element is to be insertednode
- Future child node. Ifnull
or the node is already amongst the children list, no action is done.
-
getChild
Returns a node by ID. If there are more nodes with the same ID, any node from those may be returned.- Parameters:
id
-- Returns:
-
getChildren
Returns the children of the current node. Order does matter.- Returns:
- Read-only list of the children. Never returns
null
.
-
getEdgeProperties
Parent-to-this-node edge properties. For example, import/no-import mode or sync mode belongs here.- Returns:
- Returns properties of the edge from the parent to this node. Never returns
null
.
-
getEdgeProperty
Convenience method for obtaining a single parent-to-this-node edge property.- Type Parameters:
V
-- Parameters:
key
-clazz
-- Returns:
Optional
with a property value if it exists. Never returnsnull
-
getId
String getId()Returns ID of the node, which could match e.g. ID of the component with storage definition.- Returns:
- Node ID
-
getNodeProperties
Properties of the this node. In storage context, properties of the single map storage represented by this node, for example read-only/read-write flag.- Returns:
- Returns properties of the storage managed in this node. Never returns
null
.
-
getNodeProperty
Convenience method for obtaining a single property of this node.- Type Parameters:
V
-- Parameters:
key
-clazz
-- Returns:
Optional
with a property value if it exists. Never returnsnull
-
getTreeProperties
Properties of the whole tree. For example, kind of the stored objects, e.g. realms or clients.- Returns:
- Returns properties of the tree that contains in this node. Never returns
null
.
-
getTreeProperty
Convenience method for obtaining a single property of tree that this node belongs to.- Type Parameters:
V
-- Parameters:
key
-clazz
-- Returns:
Optional
with a property value if it exists. Never returnsnull
-
removeChild
Removes the given child node.- Parameters:
node
- Node to remove- Returns:
- Removed node
-
removeChild
Removes child nodes satisfying the given predicate.- Parameters:
node
- Predicate on node returningtrue
for each node that should be removed- Returns:
- Number of removed nodes
-
getParent
Returns parent node or an emptyOptional
if this node is a root node.- Returns:
- See description. Never returns
null
.
-
setParent
Sets the parent node to the givenparent
. If this node was a child of another node, also removes this node from the children of the previous parent.- Parameters:
parent
- New parent node ornull
if this node should be parentless.
-
findFirstDfs
Depth-first search for a node.- Parameters:
visitor
- Predicate on nodes, returnstrue
when a search condition is satisfied which terminates the search.- Returns:
- Leftmost first node that matches the predicate,
null
when no node matches.
-
findFirstBottommostDfs
Depth-first search for a node that is bottommost from those matching DFS.- Parameters:
visitor
- Predicate on nodes, returnstrue
when a search condition is satisfied which terminates the search.- Returns:
- Leftmost and bottommost node that matches the predicate,
null
when no node matches.
-
findFirstBfs
Breadth-first search for a node.- Parameters:
visitor
- Predicate on nodes, returnstrue
when a search condition is satisfied which terminates the search.- Returns:
- First node that matches the predicate,
null
when no node matches.
-
getPathToRoot
Returns the path (list of nodes) from this node to root node.- Parameters:
orientation
- Determines order of the nodes in the returned list - either this node is first and the root node is last, (TreeNode.PathOrientation.BOTTOM_FIRST
) or vice versa (TreeNode.PathOrientation.TOP_FIRST
).- Returns:
-
getParentsStream
Returns a stream of the nodes laying on the path from this node (exclusive) to the root of the tree (inclusive).- Returns:
-
forEachParent
Calls the givenvisitor
on each node laying on the path from this node (exclusive) to the root of the tree (inclusive).- Parameters:
visitor
-
-
walkDfs
Walks the tree with the given visitor in depth-first search manner.- Parameters:
visitorUponEntry
- Visitor called upon entry of the node. May benull
, in that case no action is performed.visitorAfterChildrenVisited
- Visitor called before exit of the node. May benull
, in that case no action is performed.
-
walkBfs
Walks the tree with the given visitor in breadth-first search manner.- Parameters:
visitor
-
-