Class TreeTableImpl

All Implemented Interfaces:
LogOutputAppendable, LivenessManager, LivenessNode, LivenessReferent, AttributeMap<TreeTable>, GridAttributes<TreeTable>, HierarchicalTable<TreeTable>, TreeTable, Serializable

public class TreeTableImpl extends HierarchicalTableImpl<TreeTable,TreeTableImpl> implements TreeTable
RollupTable implementation.
See Also:
  • Method Details

    • getDescription

      public String getDescription()
      Description copied from interface: HierarchicalTable
      Get a description of this HierarchicalTable.
      Specified by:
      getDescription in interface HierarchicalTable<TreeTable>
      Returns:
      The description
    • getEmptyExpansionsTable

      public Table getEmptyExpansionsTable()
      Description copied from interface: HierarchicalTable
      Get a re-usable, static key Table with zero rows that will cause a snapshot to expand only the default nodes.
      Specified by:
      getEmptyExpansionsTable in interface HierarchicalTable<TreeTable>
      Returns:
      An empty key Table for default expansions
    • getIdentifierColumn

      public ColumnName getIdentifierColumn()
      Description copied from interface: TreeTable
      Get the identifier column from the tree operation.
      Specified by:
      getIdentifierColumn in interface TreeTable
      Returns:
      The identifier column
    • getParentIdentifierColumn

      public ColumnName getParentIdentifierColumn()
      Description copied from interface: TreeTable
      Get the parent identifier column from the {tree operation.
      Specified by:
      getParentIdentifierColumn in interface TreeTable
      Returns:
      The parent identifier column
    • getNodeDefinition

      public TableDefinition getNodeDefinition()
      Description copied from interface: TreeTable
      Get the TableDefinition that should be exposed to node table consumers, e.g. UI-driven snapshots. This excludes "internal" columns used to organize the tree or support operations, as well as the row-depth column and row-expanded column, but includes formatting columns.
      Specified by:
      getNodeDefinition in interface TreeTable
      Returns:
      The externally-visible node TableDefinition
    • getAvailableColumnDefinitions

      public List<ColumnDefinition<?>> getAvailableColumnDefinitions()
      Description copied from interface: HierarchicalTable
      Get the definitions for all available columns that may be requested in a snapshot.

      The result will always begin with the structural columns, which are then followed by type-specific node-level columns.

      Specified by:
      getAvailableColumnDefinitions in interface HierarchicalTable<TreeTable>
      Returns:
      A list of definitions for all available columns that may be requested in a snapshot
    • withNodeFilterColumns

      public TreeTable withNodeFilterColumns(@NotNull @NotNull Collection<? extends ColumnName> columns)
      Description copied from interface: TreeTable
      Get a new TreeTable with columns designated for node-level filtering, in addition to any columns already so-designated on this TreeTable.

      Filters specified via TreeTable.withFilter(Filter), typically from the UI, that only use the designated node-level filtering columns will be applied to the nodes during snapshots. If no node-filter columns are designated, no filters will be handled at node level.

      Filters that include other columns are handled by filtering the source table in a ancestor-preserving manner and re-applying the tree operation to the result to produce a new TreeTable. Users of orphan promotion or other strategies to govern the structure of the tree should carefully consider the structure of their data before specifying node-filter columns.

      Specifying node-filter columns represents a trade-off between performance (which is expected to be much better for node-level filtering) and tree structural integrity (which may be lost since node-level filters are not ancestor-preserving).

      Specified by:
      withNodeFilterColumns in interface TreeTable
      Parameters:
      columns - The columns to designate
      Returns:
      The new TreeTable
    • withFilter

      public TreeTable withFilter(@NotNull @NotNull Filter filter)
      Description copied from interface: TreeTable
      Apply a filter to the columns of this TreeTable in order to produce a new TreeTable.
      Specified by:
      withFilter in interface TreeTable
      Parameters:
      filter - The filter to apply
      Returns:
      The new TreeTable
    • makeNodeOperationsRecorder

      public TreeTable.NodeOperationsRecorder makeNodeOperationsRecorder()
      Description copied from interface: TreeTable
      Get a recorder for per-node operations to apply during snapshots.
      Specified by:
      makeNodeOperationsRecorder in interface TreeTable
      Returns:
      The new recorder
    • withNodeOperations

      public TreeTable withNodeOperations(@NotNull @NotNull TreeTable.NodeOperationsRecorder nodeOperations)
      Description copied from interface: TreeTable
      Get a new TreeTable that will apply the recorded operations to nodes when gathering snapshots.
      Specified by:
      withNodeOperations in interface TreeTable
      Parameters:
      nodeOperations - The node-level operations to apply. Must have been initially supplied by TreeTable.makeNodeOperationsRecorder() from this TreeTable.
      Returns:
      The new TreeTable
    • copy

      protected TreeTableImpl copy()
      Description copied from class: LiveAttributeMap
      Create a copy of this with initially-shared LiveAttributeMap.mutableAttributes.
      Specified by:
      copy in class LiveAttributeMap<TreeTable,TreeTableImpl>
    • rebase

      public TreeTable rebase(@NotNull @NotNull Table newSource)
      Description copied from interface: TreeTable
      Create a new TreeTable based on newSource, inheriting this TreeTable's identifier column, parent column, node filter columns, and node operations.
      Specified by:
      rebase in interface TreeTable
      Parameters:
      newSource - A new source table that must have the same definition as the source of this tree; that is newSource.getDefinition().equals(getSource().getDefinition()) must be true
      Returns:
      The new TreeTable
    • makeTree

      public static TreeTable makeTree(@NotNull @NotNull QueryTable source, @NotNull @NotNull ColumnName identifierColumn, @NotNull @NotNull ColumnName parentIdentifierColumn)