public class RpcDataSourceConnector.RpcDataSource extends AbstractRemoteDataSource<elemental.json.JsonObject>
AbstractRemoteDataSource.RequestRowsCallback<T>, AbstractRemoteDataSource.RowHandleImpl
DataSource.RowHandle<T>
Modifier | Constructor and Description |
---|---|
protected |
RpcDataSource() |
Modifier and Type | Method and Description |
---|---|
protected boolean |
canFetchData()
Checks if it is possible to currently fetch data from the remote data
source.
|
void |
ensureAvailability(int firstRowIndex,
int numberOfRows)
Informs the data source that data for the given range is needed.
|
DataSource.RowHandle<elemental.json.JsonObject> |
getHandleByKey(Object key) |
String |
getRowKey(elemental.json.JsonObject row)
Gets a stable key for the row object.
|
protected void |
onDropFromCache(int rowIndex,
elemental.json.JsonObject row)
A hook that can be overridden to do something whenever a row has been
dropped from the cache.
|
protected void |
requestRows(int firstRowIndex,
int numberOfRows,
AbstractRemoteDataSource.RequestRowsCallback<elemental.json.JsonObject> callback)
Triggers fetching rows from the remote data source.
|
protected void |
setRowData(int firstRowIndex,
List<elemental.json.JsonObject> rowData)
Informs this data source that updated data has been sent from the server.
|
protected void |
unpinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
Unpins a previously pinned row with given handle.
|
protected void |
updateRowData(elemental.json.JsonObject row)
Updates row data based on row key.
|
getCachedRange, getHandle, getRequestedAvailability, getRow, indexOf, indexOfKey, insertRowData, isPinned, isWaitingForData, onDropFromCache, pinHandle, removeRowData, resetDataAndSize, setCacheStrategy, setDataChangeHandler, size
protected void requestRows(int firstRowIndex, int numberOfRows, AbstractRemoteDataSource.RequestRowsCallback<elemental.json.JsonObject> callback)
AbstractRemoteDataSource
requestRows
in class AbstractRemoteDataSource<elemental.json.JsonObject>
firstRowIndex
- the index of the first row to fetchnumberOfRows
- the number of rows to fetchcallback
- callback to inform when the requested rows are availablepublic void ensureAvailability(int firstRowIndex, int numberOfRows)
DataSource
This method triggers lazy loading of data if necessary. The change
handler registered using DataSource.setDataChangeHandler(DataChangeHandler)
is informed when new data has been loaded.
After any possible lazy loading and updates are done, the change handler is informed that new data is available.
ensureAvailability
in interface DataSource<elemental.json.JsonObject>
ensureAvailability
in class AbstractRemoteDataSource<elemental.json.JsonObject>
firstRowIndex
- the index of the first needed rownumberOfRows
- the number of needed rowspublic String getRowKey(elemental.json.JsonObject row)
AbstractRemoteDataSource
This method is a workaround for the fact that there is no means to force
proper implementations for Object.hashCode()
and
Object.equals(Object)
methods.
Since the same row object will be created several times for the same logical data, the DataSource needs a mechanism to be able to compare two objects, and figure out whether or not they represent the same data. Even if all the fields of an entity would be changed, it still could represent the very same thing (say, a person changes all of her names.)
A very usual and simple example what this could be, is an unique ID for this object that would also be stored in a database.
getRowKey
in class AbstractRemoteDataSource<elemental.json.JsonObject>
row
- the row object for which to get the keypublic DataSource.RowHandle<elemental.json.JsonObject> getHandleByKey(Object key)
protected void unpinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
AbstractRemoteDataSource
unpinHandle
in class AbstractRemoteDataSource<elemental.json.JsonObject>
handle
- row handle to unpinprotected void setRowData(int firstRowIndex, List<elemental.json.JsonObject> rowData)
AbstractRemoteDataSource
setRowData
in class AbstractRemoteDataSource<elemental.json.JsonObject>
firstRowIndex
- the index of the first received rowrowData
- a list of rows, starting from firstRowIndex
protected void updateRowData(elemental.json.JsonObject row)
row
- new row objectprotected void onDropFromCache(int rowIndex, elemental.json.JsonObject row)
AbstractRemoteDataSource
onDropFromCache
in class AbstractRemoteDataSource<elemental.json.JsonObject>
rowIndex
- the index of the dropped rowrow
- the removed row objectprotected boolean canFetchData()
AbstractRemoteDataSource
canFetchData
in class AbstractRemoteDataSource<elemental.json.JsonObject>
true
if it is ok to try to fetch data,
false
if it is known that fetching data will fail
and should not be tried right now.Copyright © 2023 Vaadin Ltd. All rights reserved.