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 fromHierarchicalDataProviderand sending it to client side.- Since:
- 1.2
- Author:
- Vaadin Ltd
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.vaadin.flow.data.provider.DataCommunicator
DataCommunicator.EmptyDataProvider<T1>, DataCommunicator.Filter<F>
-
-
Field Summary
-
Fields inherited from class com.vaadin.flow.data.provider.DataCommunicator
DEFAULT_PAGE_INCREASE_COUNT
-
-
Constructor Summary
Constructors Constructor Description 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 aTreeDataProvider.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Collection<T>collapse(Collection<T> items)Collapses the given items and removes its sub-hierarchy.voidcollapse(T item)Collapses the given item and removes its sub-hierarchy.protected voidcollapse(T item, boolean syncClient)Collapses the given item and removes its sub-hierarchy.voidconfirmUpdate(int id, String parentKey)protected <F> HierarchyMapper<T,F>createHierarchyMapper(HierarchicalDataProvider<T,F> dataProvider)Create newHierarchyMapperfor the given data provider.Collection<T>expand(Collection<T> items)Expands the given items.voidexpand(T item)Expands the given item.protected voidexpand(T item, boolean syncClient)Expands the given item.Stream<T>fetchFromProvider(int offset, int limit)Fetches a list of items from the DataProvider.HierarchicalDataProvider<T,?>getDataProvider()Gets the current data provider from this DataCommunicator.intgetDataProviderSize()Getter method for determining the item count of the data.intgetDepth(T item)Returns depth of item in the tree starting from zero representing a root.protected HierarchyMapper<T,?>getHierarchyMapper()Returns theHierarchyMapperused by this data communicator.IntegergetIndex(T item)Returns index for the row ornull.IntegergetParentIndex(T item)Returns parent index for the row ornull.TgetParentItem(T item)Returns parent item for the row ornull.protected voidhandleDataRefreshEvent(DataChangeEvent.DataRefreshEvent<T> event)booleanhasChildren(T item)Returns whether given item has children.booleanhasExpandedItems()Returns true if there is any expanded items.booleanisExpanded(T item)Returns whether given item is expanded.voidreset()Resets all the data.voidsetBackEndSorting(List<QuerySortOrder> sortOrder)Sets theQuerySortOrders to use with backend sorting.<F> SerializableConsumer<F>setDataProvider(DataProvider<T,F> dataProvider, F initialFilter)Set the current hierarchical data provider for this communicator.<F> SerializableConsumer<F>setDataProvider(HierarchicalDataProvider<T,F> dataProvider, F initialFilter)Set the current hierarchical data provider for this communicator.protected <F> voidsetFilter(F filter)voidsetInMemorySorting(SerializableComparator<T> comparator)Sets theComparatorto use with in-memory sorting.voidsetParentRequestedRange(int start, int length, T parentItem)-
Methods inherited from class com.vaadin.flow.data.provider.DataCommunicator
buildQuery, confirmUpdate, enablePushUpdates, getBackEndSorting, getFilter, getInMemorySorting, getItem, getItemCount, getItemCountEstimate, getItemCountEstimateIncrease, getKeyMapper, getPageSize, isDefinedSize, isFetchEnabled, isItemActive, isPagingEnabled, refresh, setCountCallback, setDataProvider, setDefinedSize, setFetchEnabled, setItemCountEstimate, setItemCountEstimateIncrease, setKeyMapper, setPageSize, setPagingEnabled, setRequestedRange
-
-
-
-
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 aTreeDataProvider.- Parameters:
dataGenerator- the data generator functionarrayUpdater- array updater strategydataUpdater- data updater strategystateNode- the state node used to communicate foruniqueKeyProviderSupplier- 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:
resetin classDataCommunicator<T>
-
handleDataRefreshEvent
protected void handleDataRefreshEvent(DataChangeEvent.DataRefreshEvent<T> event)
- Overrides:
handleDataRefreshEventin classDataCommunicator<T>
-
fetchFromProvider
public Stream<T> fetchFromProvider(int offset, int limit)
Description copied from class:DataCommunicatorFetches a list of items from the DataProvider.NOTE: the
limitparameter shows how many items the client wants to fetch, but the actual number of results may be greater, and vary from0 to pages * pageSize.- Overrides:
fetchFromProviderin classDataCommunicator<T>- Parameters:
offset- the starting index of the rangelimit- 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:DataCommunicatorGets the current data provider from this DataCommunicator.- Overrides:
getDataProviderin classDataCommunicator<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, notnullinitialFilter- the initial filter value to use, ornullto 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 newHierarchyMapperfor 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:
setDataProviderin classDataCommunicator<T>- Type Parameters:
F- the filter type- Parameters:
dataProvider- the data provider to set, must extendHierarchicalDataProvider, notnullinitialFilter- the initial filter value to use, ornullto 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.syncClientindicates whether the changes should be synchronized to the client.- Parameters:
item- the item to collapsesyncClient-trueif the changes should be synchronized to the client,falseotherwise.
-
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.syncClientindicates whether the changes should be synchronized to the client.- Parameters:
item- the item to expandsyncClient-trueif the changes should be synchronized to the client,falseotherwise.
-
hasChildren
public boolean hasChildren(T item)
Returns whether given item has children.- Parameters:
item- the item to test- Returns:
trueif item has children;falseif not
-
isExpanded
public boolean isExpanded(T item)
Returns whether given item is expanded.- Parameters:
item- the item to test- Returns:
trueif item is expanded;falseif not
-
getParentIndex
public Integer getParentIndex(T item)
Returns parent index for the row ornull.- Parameters:
item- the item to find the parent of- Returns:
- the parent index or
nullfor top-level items
-
getIndex
public Integer getIndex(T item)
Returns index for the row ornull.- Parameters:
item- the target item- Returns:
- the index or
nullfor top-level and non-existing items
-
getParentItem
public T getParentItem(T item)
Returns parent item for the row ornull.- Parameters:
item- the item to find the parent of- Returns:
- the parent item or
nullfor 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:DataCommunicatorGetter method for determining the item count of the data.This method should be used only with defined size, i.e. when
DataCommunicator.isDefinedSize()returnstrue.Can be overridden by a subclass that uses a specific type of DataProvider and/or query.
- Overrides:
getDataProviderSizein classDataCommunicator<T>- Returns:
- the size of data provider with current filter
-
setBackEndSorting
public void setBackEndSorting(List<QuerySortOrder> sortOrder)
Description copied from class:DataCommunicatorSets theQuerySortOrders to use with backend sorting.- Overrides:
setBackEndSortingin classDataCommunicator<T>- Parameters:
sortOrder- list of sort order information to pass to a query
-
setInMemorySorting
public void setInMemorySorting(SerializableComparator<T> comparator)
Description copied from class:DataCommunicatorSets theComparatorto use with in-memory sorting.- Overrides:
setInMemorySortingin classDataCommunicator<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:
trueif there is any expanded items.
-
getHierarchyMapper
protected HierarchyMapper<T,?> getHierarchyMapper()
Returns theHierarchyMapperused by this data communicator.- Returns:
- the hierarchy mapper used by this data communicator
-
-