com.vaadin.flow.data.provider.
Class AbstractDataView<T>
- java.lang.Object
-
- com.vaadin.flow.data.provider.AbstractDataView<T>
-
Type Parameters:
T
- data typeAll Implemented Interfaces:
DataView<T>
,Serializable
Direct Known Subclasses:
AbstractLazyDataView
,AbstractListDataView
,CheckboxGroupDataView
,ComboBoxDataView
,GridDataView
,ListBoxDataView
,RadioButtonGroupDataView
,SelectDataView
public abstract class AbstractDataView<T> extends Object implements DataView<T>
Abstract data view implementation which handles parts that apply for any type of data.
See Also:
-
-
Field Summary
Fields Modifier and Type Field Description protected Component
component
protected SerializableSupplier<? extends DataProvider<T,?>>
dataProviderSupplier
protected static String
NULL_IDENTIFIER_ERROR_MESSAGE
protected static String
NULL_ITEM_ERROR_MESSAGE
-
Constructor Summary
Constructors Constructor Description AbstractDataView(SerializableSupplier<? extends DataProvider<T,?>> dataProviderSupplier, Component component)
Creates a new instance of
AbstractDataView
subclass and verifies the passed data provider is compatible with this data view implementation.
-
Method Summary
All Methods Modifier and Type Method Description Registration
addItemCountChangeListener(ComponentEventListener<ItemCountChangeEvent<?>> listener)
Add an item count change listener that is fired when the item count changes.
protected boolean
equals(T item, T compareTo)
protected IdentifierProvider<T>
getIdentifierProvider()
Stream<T>
getItems()
Get the full data available to the component.
protected abstract Class<?>
getSupportedDataProviderType()
Returns supported
DataProvider
type for thisDataView
.void
refreshAll()
Notifies the component that all the items should be refreshed.
void
refreshItem(T item)
Notifies the component that the item has been updated and thus should be refreshed.
void
setIdentifierProvider(IdentifierProvider<T> identifierProvider)
Sets an identifier provider, which returns an identifier for the given item.
protected void
verifyDataProviderType(Class<?> dataProviderType)
Verifies an obtained
DataProvider
type is appropriate for current Data View type.
-
-
-
Field Detail
-
NULL_ITEM_ERROR_MESSAGE
protected static final String NULL_ITEM_ERROR_MESSAGE
See Also:
-
NULL_IDENTIFIER_ERROR_MESSAGE
protected static final String NULL_IDENTIFIER_ERROR_MESSAGE
See Also:
-
dataProviderSupplier
protected SerializableSupplier<? extends DataProvider<T,?>> dataProviderSupplier
-
component
protected Component component
-
-
Constructor Detail
-
AbstractDataView
public AbstractDataView(SerializableSupplier<? extends DataProvider<T,?>> dataProviderSupplier, Component component)
Creates a new instance of
AbstractDataView
subclass and verifies the passed data provider is compatible with this data view implementation.Parameters:
dataProviderSupplier
- supplier from which the DataProvider can be gottencomponent
- the component that the dataView is bound to
-
-
Method Detail
-
addItemCountChangeListener
public Registration addItemCountChangeListener(ComponentEventListener<ItemCountChangeEvent<?>> listener)
Description copied from interface:
DataView
Add an item count change listener that is fired when the item count changes. This can happen for instance when filtering the items.
Item count change listener is bound to the component and will be retained even if the data changes by setting of a new items or
DataProvider
to component.NOTE: when the component supports lazy loading (implements
HasLazyDataView
) and a count callback has not been provided, an estimate of the item count is used and increased until the actual count has been reached. When the estimate is used, the event is fired with theItemCountChangeEvent.isItemCountEstimated()
returningtrue
.Specified by:
addItemCountChangeListener
in interfaceDataView<T>
Parameters:
listener
- item count change listener to registerReturns:
registration for removing the listener
-
getSupportedDataProviderType
protected abstract Class<?> getSupportedDataProviderType()
Returns supported
DataProvider
type for thisDataView
.Returns:
supported data provider type
-
verifyDataProviderType
protected final void verifyDataProviderType(Class<?> dataProviderType)
Verifies an obtained
DataProvider
type is appropriate for current Data View type.Parameters:
dataProviderType
- data provider type to be verifiedThrows:
IllegalStateException
- if data provider type is incompatible with data view type
-
getItems
public Stream<T> getItems()
Description copied from interface:
DataView
Get the full data available to the component. Data is filtered and sorted the same way as in the component.
-
refreshItem
public void refreshItem(T item)
Description copied from interface:
DataView
Notifies the component that the item has been updated and thus should be refreshed.
For this to work properly, the item must either implement
Object.equals(Object)
andObject.hashCode()
to consider both the old and the new item instances to be equal, or alternatively use theDataView.setIdentifierProvider(IdentifierProvider)
to set an appropriate item's identifier.This method delegates the update to
DataProvider.refreshItem(Object)
.Specified by:
refreshItem
in interfaceDataView<T>
Parameters:
item
- item containing updated stateSee Also:
-
refreshAll
public void refreshAll()
Description copied from interface:
DataView
Notifies the component that all the items should be refreshed.
Specified by:
refreshAll
in interfaceDataView<T>
-
setIdentifierProvider
public void setIdentifierProvider(IdentifierProvider<T> identifierProvider)
Description copied from interface:
DataView
Sets an identifier provider, which returns an identifier for the given item. The identifier is used for comparing the equality of items. Usage example:
dataView.setIdentifiedProvider(Item::getId);
.Specified by:
setIdentifierProvider
in interfaceDataView<T>
Parameters:
identifierProvider
- function that returns the non-null identifier for a given item
-
getIdentifierProvider
protected IdentifierProvider<T> getIdentifierProvider()
-
-