Interface HierarchicalDataProvider<T,F>
- Type Parameters:
T
- data typeF
- 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
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 Summary
Modifier and TypeMethodDescriptionFetches data from this HierarchicalDataProvider using givenquery
.fetchChildren
(HierarchicalQuery<T, F> query) Fetches data from this HierarchicalDataProvider using givenquery
.int
getChildCount
(HierarchicalQuery<T, F> query) Get the number of immediate child data items for the parent item returned by a given query.boolean
hasChildren
(T item) Check whether a given item has any children associated with it.default int
Get the number of immediate child data items for the parent item returned by a given query.default HierarchicalConfigurableFilterDataProvider<T,
Void, F> Wraps this data provider to create a data provider that supports programmatically setting a filter but no filtering through the query.default <Q,
C> HierarchicalConfigurableFilterDataProvider<T, Q, C> withConfigurableFilter
(SerializableBiFunction<Q, C, F> filterCombiner) 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.default <C> HierarchicalDataProvider<T,
C> withConvertedFilter
(SerializableFunction<C, F> filterConverter) Wraps this data provider to create a data provider that uses a different filter type.Methods inherited from interface com.vaadin.flow.data.provider.DataProvider
addDataProviderListener, getId, isInMemory, refreshAll, refreshItem, refreshItem
-
Method Details
-
size
Get the number of immediate child data items for the parent item returned by a given query.- Specified by:
size
in interfaceDataProvider<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
Fetches data from this HierarchicalDataProvider using givenquery
. Only the immediate children ofHierarchicalQuery.getParent()
will be returned.- Specified by:
fetch
in interfaceDataProvider<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
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
Fetches data from this HierarchicalDataProvider using givenquery
. Only the immediate children ofHierarchicalQuery.getParent()
will be returned.- Parameters:
query
- given query to request data with- Returns:
- a stream of data objects resulting from the query
-
hasChildren
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, withConfigurableFilterC> (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 interfaceDataProvider<T,
F> - Type Parameters:
Q
- the query filter typeC
- 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 benull
, but the callback will not be invoked at all if both would benull
. Notnull
.- 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 interfaceDataProvider<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. Notnull
- Returns:
- wrapped data provider, not
null
-
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 interfaceDataProvider<T,
F> - Returns:
- a data provider with a configurable filter, not
null
- See Also:
-