Class HierarchicalDataCommunicator<T>

    • Constructor Detail

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

      • reset

        public void reset()
        Resets all the data.

        It effectively resends all available data.

        Overrides:
        reset 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)
      • 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
      • 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