Class HierarchicalDataCommunicator<T>

java.lang.Object
com.vaadin.flow.data.provider.DataCommunicator<T>
com.vaadin.flow.data.provider.hierarchy.HierarchicalDataCommunicator<T>
Type Parameters:
T - the bean type
All Implemented Interfaces:
Serializable

public class HierarchicalDataCommunicator<T> extends DataCommunicator<T>
Data communicator that handles requesting hierarchical data from HierarchicalDataProvider and sending it to client side.
Since:
1.2
Author:
Vaadin Ltd
See Also:
  • Constructor Details

    • HierarchicalDataCommunicator

      public HierarchicalDataCommunicator(CompositeDataGenerator<T> dataGenerator, HierarchicalArrayUpdater arrayUpdater, SerializableConsumer<elemental.json.JsonArray> dataUpdater, StateNode stateNode, SerializableSupplier<ValueProvider<T,String>> uniqueKeyProviderSupplier)
      Construct a new hierarchical data communicator backed by a TreeDataProvider.
      Parameters:
      dataGenerator - the data generator function
      arrayUpdater - array updater strategy
      dataUpdater - data updater strategy
      stateNode - the state node used to communicate for
      uniqueKeyProviderSupplier - Unique key provider for a row. If null, then using Grid's default key generator.
  • Method Details

    • reset

      public void reset()
      Resets all the data.

      It effectively resends all available data.

      Overrides:
      reset in class DataCommunicator<T>
    • handleDataRefreshEvent

      protected void handleDataRefreshEvent(DataChangeEvent.DataRefreshEvent<T> event)
      Overrides:
      handleDataRefreshEvent in class DataCommunicator<T>
    • fetchFromProvider

      public Stream<T> fetchFromProvider(int offset, int limit)
      Description copied from class: DataCommunicator
      Fetches a list of items from the DataProvider.

      NOTE: the limit parameter shows how many items the client wants to fetch, but the actual number of results may be greater, and vary from 0 to pages * pageSize.

      Overrides:
      fetchFromProvider in class DataCommunicator<T>
      Parameters:
      offset - the starting index of the range
      limit - the desired number of results
      Returns:
      the list of items in given range
    • setParentRequestedRange

      public void setParentRequestedRange(int start, int length, T parentItem)
    • getDataProvider

      public HierarchicalDataProvider<T,?> getDataProvider()
      Description copied from class: DataCommunicator
      Gets the current data provider from this DataCommunicator.
      Overrides:
      getDataProvider in class DataCommunicator<T>
      Returns:
      the data provider
    • setDataProvider

      public <F> SerializableConsumer<F> setDataProvider(HierarchicalDataProvider<T,F> dataProvider, F initialFilter)
      Set the current hierarchical data provider for this communicator.
      Type Parameters:
      F - the filter type
      Parameters:
      dataProvider - the data provider to set, not null
      initialFilter - the initial filter value to use, or null to not use any initial filter value
      Returns:
      a consumer that accepts a new filter value to use
    • createHierarchyMapper

      protected <F> HierarchyMapper<T,F> createHierarchyMapper(HierarchicalDataProvider<T,F> dataProvider)
      Create new HierarchyMapper for the given data provider. May be overridden in subclasses.
      Type Parameters:
      F - Query type
      Parameters:
      dataProvider - the data provider
      Returns:
      new HierarchyMapper
    • setDataProvider

      public <F> SerializableConsumer<F> setDataProvider(DataProvider<T,F> dataProvider, F initialFilter)
      Set the current hierarchical data provider for this communicator.
      Overrides:
      setDataProvider in class DataCommunicator<T>
      Type Parameters:
      F - the filter type
      Parameters:
      dataProvider - the data provider to set, must extend HierarchicalDataProvider, not null
      initialFilter - the initial filter value to use, or null to not use any initial filter value
      Returns:
      a consumer that accepts a new filter value to use
    • confirmUpdate

      public void confirmUpdate(int id, String parentKey)
    • collapse

      public void collapse(T item)
      Collapses the given item and removes its sub-hierarchy. Calling this method will have no effect if the row is already collapsed.

      Changes are synchronized to the client.

      Parameters:
      item - the item to collapse
    • collapse

      protected void collapse(T item, boolean syncClient)
      Collapses the given item and removes its sub-hierarchy. Calling this method will have no effect if the row is already collapsed. syncClient indicates whether the changes should be synchronized to the client.
      Parameters:
      item - the item to collapse
      syncClient - true if the changes should be synchronized to the client, false otherwise.
    • collapse

      public Collection<T> collapse(Collection<T> items)
      Collapses the given items and removes its sub-hierarchy. Calling this method will have no effect if the row is already collapsed.

      Changes are synchronized to the client.

      Parameters:
      items - the items to collapse
      Returns:
      the collapsed items
    • expand

      public void expand(T item)
      Expands the given item. Calling this method will have no effect if the item is already expanded or if it has no children.

      Changes are synchronized to the client.

      Parameters:
      item - the item to expand
    • expand

      public Collection<T> expand(Collection<T> items)
      Expands the given items. Calling this method will have no effect if the item is already expanded or if it has no children.

      Changes are synchronized to the client.

      Parameters:
      items - the items to expand
      Returns:
      the expanded items
    • expand

      protected void expand(T item, boolean syncClient)
      Expands the given item. Calling this method will have no effect if the item is already expanded or if it has no children. syncClient indicates whether the changes should be synchronized to the client.
      Parameters:
      item - the item to expand
      syncClient - true if the changes should be synchronized to the client, false otherwise.
    • hasChildren

      public boolean hasChildren(T item)
      Returns whether given item has children.
      Parameters:
      item - the item to test
      Returns:
      true if item has children; false if not
    • isExpanded

      public boolean isExpanded(T item)
      Returns whether given item is expanded.
      Parameters:
      item - the item to test
      Returns:
      true if item is expanded; false if not
    • getParentIndex

      public Integer getParentIndex(T item)
      Returns parent index for the row or null.
      Parameters:
      item - the item to find the parent of
      Returns:
      the parent index or null for top-level items
    • getIndex

      public Integer getIndex(T item)
      Returns index for the row or null.
      Parameters:
      item - the target item
      Returns:
      the index or null for top-level and non-existing items
    • getParentItem

      public T getParentItem(T item)
      Returns parent item for the row or null.
      Parameters:
      item - the item to find the parent of
      Returns:
      the parent item or null for top-level items
    • getDepth

      public int getDepth(T item)
      Returns depth of item in the tree starting from zero representing a root.
      Parameters:
      item - Target item
      Returns:
      depth of item in the tree or -1 if item is null
    • getDataProviderSize

      public int getDataProviderSize()
      Description copied from class: DataCommunicator
      Getter method for determining the item count of the data.

      This method should be used only with defined size, i.e. when DataCommunicator.isDefinedSize() returns true.

      Can be overridden by a subclass that uses a specific type of DataProvider and/or query.

      Overrides:
      getDataProviderSize in class DataCommunicator<T>
      Returns:
      the size of data provider with current filter
    • setBackEndSorting

      public void setBackEndSorting(List<QuerySortOrder> sortOrder)
      Description copied from class: DataCommunicator
      Sets the QuerySortOrders to use with backend sorting.
      Overrides:
      setBackEndSorting in class DataCommunicator<T>
      Parameters:
      sortOrder - list of sort order information to pass to a query
    • setInMemorySorting

      public void setInMemorySorting(SerializableComparator<T> comparator)
      Description copied from class: DataCommunicator
      Sets the Comparator to use with in-memory sorting.
      Overrides:
      setInMemorySorting in class DataCommunicator<T>
      Parameters:
      comparator - comparator used to sort data
    • setFilter

      protected <F> void setFilter(F filter)
    • hasExpandedItems

      public boolean hasExpandedItems()
      Returns true if there is any expanded items.
      Returns:
      true if there is any expanded items.
    • getHierarchyMapper

      protected HierarchyMapper<T,?> getHierarchyMapper()
      Returns the HierarchyMapper used by this data communicator.
      Returns:
      the hierarchy mapper used by this data communicator
    • getPassivatedKeys

      protected Set<String> getPassivatedKeys(Set<String> oldActive)
      Overrides:
      getPassivatedKeys in class DataCommunicator<T>