Interface HierarchicalDataProvider<T,​F>

    • Method Detail

      • 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
      • 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