Class TreePreOrderIterable<TItem,TIdentifier>

java.lang.Object
de.xima.fc.workflow.TreePreOrderIterable<TItem,TIdentifier>
Type Parameters:
TItem - Type of the items in the tree.
TIdentifier - Type of the identifier that identifiers the items in the tree.
All Implemented Interfaces:
Iterable<TItem>

public class TreePreOrderIterable<TItem,TIdentifier> extends Object implements Iterable<TItem>
An iterable that iterates over a tree-like graph, starting at a given node. Throws an exception in case the graph is not a tree, thus also preventing endless cycles when the graph is cyclic.
Since:
7.0.0
Author:
XIMA MEDIA GmbH
  • Constructor Details

    • TreePreOrderIterable

      public TreePreOrderIterable(Iterable<TItem> startItems, ITreeAccessor<TItem,TIdentifier> treeAccessor)
      Returns a new iterable over the items in the tree starting at the given item.
      Parameters:
      startItems - Root items where to start the traversal. These items are included in the traversal.
      treeAccessor - Handler for accessing the children of a node, and its identifier
    • TreePreOrderIterable

      public TreePreOrderIterable(Iterable<TItem> startItems, ITreeAccessor<TItem,TIdentifier> treeAccessor, boolean limitRecursion)
      Returns a new iterable over the items in the tree starting at the given item.
      Parameters:
      startItems - Root items where to start the traversal. These items are included in the traversal.
      treeAccessor - Handler for accessing the children of a node, and its identifier
      limitRecursion - If true, stops iterating when an item is encountered for the second time (as determined by Object.hashCode(), Object.equals(Object)) and throws an IllegalStateException.
      Since:
      7.2.1
    • TreePreOrderIterable

      public TreePreOrderIterable(TItem startItem, ITreeAccessor<TItem,TIdentifier> treeAccessor)
      Returns a new iterable over the items in the tree starting at the given item.
      Parameters:
      startItem - Item where to start the traversal. This item is included in the traversal.
      treeAccessor - Handler for accessing the children of a node, and its identifier
    • TreePreOrderIterable

      public TreePreOrderIterable(TItem startItem, ITreeAccessor<TItem,TIdentifier> treeAccessor, boolean limitRecursion)
      Returns a new iterable over the items in the tree starting at the given item.
      Parameters:
      startItem - Item where to start the traversal. This item is included in the traversal.
      treeAccessor - Handler for accessing the children of a node, and its identifier
      limitRecursion - If true, stops iterating when an item is encountered for the second time (as determined by Object.hashCode(), Object.equals(Object)) and throws an IllegalStateException.
      Since:
      7.2.1
  • Method Details

    • iterator

      public Iterator<TItem> iterator()
      Specified by:
      iterator in interface Iterable<TItem>
    • toList

      public static <TItem> List<TItem> toList(TItem startItem, ITreeAccessor<TItem,?> treeAccessor)
      Iterates over the node and its children, and returns a list of all iterated nodes.
      Type Parameters:
      TItem - Type of the items in the tree.
      Parameters:
      startItem - Node where to start the traversal. This item is included in the returned list.
      treeAccessor - Handler for accessing the children of a node, and its identifier.
      Returns:
      A list with the given start item and all its children.