com.vaadin.flow.data.provider.hierarchy.

Interface HierarchicalDataProvider<T,F>

Type Parameters:

T - data type

F - filter type

All Superinterfaces:

DataProvider<T,F>, Serializable

All Known Subinterfaces:

BackEndHierarchicalDataProvider<T,F>, HierarchicalConfigurableFilterDataProvider<T,Q,C>

All Known Implementing Classes:

AbstractBackEndHierarchicalDataProvider, AbstractHierarchicalDataProvider, TreeDataProvider

public interface HierarchicalDataProvider<T,F> extends DataProvider<T,F>

A common interface for fetching hierarchical data from a data source, such as an in-memory collection or a backend database.

Since:

1.2

Author:

Vaadin Ltd

  • Method Details

    • size

      default int size(Query<T,F> query)

      Get the number of immediate child data items for the parent item returned by a given query.

      Specified by:

      size in interface DataProvider<T,F>

      Parameters:

      query - given query to request the count for

      Returns:

      the count of child data items for the data item HierarchicalQuery.getParent()

      Throws:

      IllegalArgumentException - if the query is not of type HierarchicalQuery

    • fetch

      default Stream<T> fetch(Query<T,F> query)

      Fetches data from this HierarchicalDataProvider using given query. Only the immediate children of HierarchicalQuery.getParent() will be returned.

      Specified by:

      fetch in interface DataProvider<T,F>

      Parameters:

      query - given query to request data with

      Returns:

      a stream of data objects resulting from the query

      Throws:

      IllegalArgumentException - if the query is not of type HierarchicalQuery

    • getChildCount

      int getChildCount(HierarchicalQuery<T,F> query)

      Get the number of immediate child data items for the parent item returned by a given query.

      Parameters:

      query - given query to request the count for

      Returns:

      the count of child data items for the data item HierarchicalQuery.getParent()

    • fetchChildren

      Stream<T> fetchChildren(HierarchicalQuery<T,F> query)

      Fetches data from this HierarchicalDataProvider using given query. Only the immediate children of HierarchicalQuery.getParent() will be returned.

      Parameters:

      query - given query to request data with

      Returns:

      a stream of data objects resulting from the query

    • hasChildren

      boolean hasChildren(T item)

      Check whether a given item has any children associated with it.

      Parameters:

      item - the item to check for children

      Returns:

      whether the given item has children

    • withConfigurableFilter

      default <Q, C> HierarchicalConfigurableFilterDataProvider<T,Q,C> withConfigurableFilter(SerializableBiFunction<Q,C,F> filterCombiner)

      Description copied from interface: DataProvider

      Wraps this data provider to create a data provider that supports programmatically setting a filter that will be combined with a filter provided through the query.

      Specified by:

      withConfigurableFilter in interface DataProvider<T,F>

      Type Parameters:

      Q - the query filter type

      C - the configurable filter type

      Parameters:

      filterCombiner - a callback for combining and the configured filter with the filter from the query to get a filter to pass to the wrapped provider. Either parameter might be null, but the callback will not be invoked at all if both would be null. Not null.

      Returns:

      a data provider with a configurable filter, not null

      See Also:

    • withConvertedFilter

      default <C> HierarchicalDataProvider<T,C> withConvertedFilter(SerializableFunction<C,F> filterConverter)

      Description copied from interface: DataProvider

      Wraps this data provider to create a data provider that uses a different filter type. This can be used for adapting this data provider to a filter type provided by a Component such as ComboBox.

      For example receiving a String from ComboBox and making a Predicate based on it:

       DataProvider<Person, Predicate<Person>> dataProvider;
       // ComboBox uses String as the filter type
       DataProvider<Person, String> wrappedProvider = dataProvider
               .withConvertedFilter(filterText -> {
                   Predicate<Person> predicate = person -> person.getName()
                           .startsWith(filterText);
                   return predicate;
               });
       comboBox.setDataProvider(wrappedProvider);
       

      Specified by:

      withConvertedFilter in interface DataProvider<T,F>

      Type Parameters:

      C - the filter type that the wrapped data provider accepts; typically provided by a Component

      Parameters:

      filterConverter - callback that converts the filter in the query of the wrapped data provider into a filter supported by this data provider. Will only be called if the query contains a filter. Not null

      Returns:

      wrapped data provider, not null

    • withConfigurableFilter

      default HierarchicalConfigurableFilterDataProvider<T,Void,F> withConfigurableFilter()

      Description copied from interface: DataProvider

      Wraps this data provider to create a data provider that supports programmatically setting a filter but no filtering through the query.

      Specified by:

      withConfigurableFilter in interface DataProvider<T,F>

      Returns:

      a data provider with a configurable filter, not null

      See Also: