|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.vaadin.client.data.AbstractRemoteDataSource<T>
T - the row typepublic abstract class AbstractRemoteDataSource<T>
Base implementation for data sources that fetch data from a remote system.
This class takes care of caching data and communicating with the data source
user. An implementation of this class should override
requestRows(int, int, RequestRowsCallback) to trigger asynchronously
loading of data and then pass the loaded data into the provided callback.
| Nested Class Summary | |
|---|---|
static class |
AbstractRemoteDataSource.RequestRowsCallback<T>
Callback used by requestRows(int, int, RequestRowsCallback)
to pass data to the underlying implementation when data has been fetched. |
protected class |
AbstractRemoteDataSource.RowHandleImpl
|
| Nested classes/interfaces inherited from interface com.vaadin.client.data.DataSource |
|---|
DataSource.RowHandle<T> |
| Constructor Summary | |
|---|---|
AbstractRemoteDataSource()
|
|
| Method Summary | |
|---|---|
void |
ensureAvailability(int firstRowIndex,
int numberOfRows)
Informs the data source that data for the given range is needed. |
com.vaadin.shared.ui.grid.Range |
getCachedRange()
Gets the current range of cached rows |
DataSource.RowHandle<T> |
getHandle(T row)
Gets a DataSource.RowHandle of a row object in the cache. |
com.vaadin.shared.ui.grid.Range |
getRequestedAvailability()
Gets the row index range that was requested by the previous call to ensureAvailability(int, int). |
T |
getRow(int rowIndex)
Retrieves the data for the row at the given index. |
abstract java.lang.Object |
getRowKey(T row)
Gets a stable key for the row object. |
int |
indexOf(T row)
Retrieves the index for given row object. |
protected int |
indexOfKey(java.lang.Object rowKey)
|
protected void |
insertRowData(int firstRowIndex,
int count)
Informs this data source that new data has been inserted from the server. |
protected boolean |
isPinned(T row)
|
boolean |
isWaitingForData()
Checks whether this data source is currently waiting for more rows to become available. |
protected void |
onDropFromCache(int rowIndex)
Deprecated. replaced by onDropFromCache(int, Object) |
protected void |
onDropFromCache(int rowIndex,
T removed)
A hook that can be overridden to do something whenever a row has been dropped from the cache. |
protected void |
pinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
Pins a row with given handle. |
protected void |
removeRowData(int firstRowIndex,
int count)
Informs this data source that the server has removed data. |
protected abstract void |
requestRows(int firstRowIndex,
int numberOfRows,
AbstractRemoteDataSource.RequestRowsCallback<T> callback)
Triggers fetching rows from the remote data source. |
protected void |
resetDataAndSize(int newSize)
Updates the size, discarding all cached data. |
void |
setCacheStrategy(CacheStrategy cacheStrategy)
Sets the cache strategy that is used to determine how much data is fetched and cached. |
void |
setDataChangeHandler(DataChangeHandler dataChangeHandler)
Sets a data change handler to inform when data is updated, added or removed. |
protected void |
setRowData(int firstRowIndex,
java.util.List<T> rowData)
Informs this data source that updated data has been sent from the server. |
int |
size()
Returns the number of rows in the data source. |
protected void |
unpinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
Unpins a previously pinned row with given handle. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public AbstractRemoteDataSource()
| Method Detail |
|---|
protected void pinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
handle - row handle to pin
protected void unpinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
throws java.lang.IllegalStateException
handle - row handle to unpin
java.lang.IllegalStateException - if given row handle has not been pinned before
public 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<T>firstRowIndex - the index of the first needed rownumberOfRows - the number of needed rowspublic com.vaadin.shared.ui.grid.Range getRequestedAvailability()
ensureAvailability(int, int).
public boolean isWaitingForData()
true if waiting for data; otherwise
false@Deprecated protected void onDropFromCache(int rowIndex)
onDropFromCache(int, Object)
NOTE: This method has been replaced. Override
onDropFromCache(int, Object) instead of this method.
rowIndex - the index of the dropped row
protected void onDropFromCache(int rowIndex,
T removed)
rowIndex - the index of the dropped rowremoved - the removed row object
protected abstract void requestRows(int firstRowIndex,
int numberOfRows,
AbstractRemoteDataSource.RequestRowsCallback<T> callback)
firstRowIndex - the index of the first row to fetchnumberOfRows - the number of rows to fetchcallback - callback to inform when the requested rows are availablepublic T getRow(int rowIndex)
DataSourcenull.
This method does not trigger loading of unavailable data.
DataSource.ensureAvailability(int, int) should be used to signal what data
will be needed.
getRow in interface DataSource<T>rowIndex - the index of the row to retrieve data for
null if no data is availablepublic int indexOf(T row)
Note: This method does not verify that the given row object exists at all in this DataSource.
row - the row object
-1 if row is not availablepublic void setDataChangeHandler(DataChangeHandler dataChangeHandler)
DataSource
setDataChangeHandler in interface DataSource<T>dataChangeHandler - the data change handler
protected void setRowData(int firstRowIndex,
java.util.List<T> rowData)
firstRowIndex - the index of the first received rowrowData - a list of rows, starting from firstRowIndex
protected void removeRowData(int firstRowIndex,
int count)
firstRowIndex - the index of the first removed rowcount - the number of removed rows, starting from
firstRowIndex
protected void insertRowData(int firstRowIndex,
int count)
firstRowIndex - the destination index of the new row datacount - the number of rows insertedpublic com.vaadin.shared.ui.grid.Range getCachedRange()
public void setCacheStrategy(CacheStrategy cacheStrategy)
The new strategy is immediately used to evaluate whether currently cached rows should be discarded or new rows should be fetched.
cacheStrategy - a cache strategy implementation, not null
public DataSource.RowHandle<T> getHandle(T row)
throws java.lang.IllegalStateException
DataSourceDataSource.RowHandle of a row object in the cache.
getHandle in interface DataSource<T>row - the row object for which to retrieve a row handle
null row handle of the given row object
java.lang.IllegalStateExceptionpublic abstract java.lang.Object getRowKey(T row)
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.
row - the row object for which to get the key
public int size()
DataSource
size in interface DataSource<T>protected void resetDataAndSize(int newSize)
If you have information about the structure of the change, use
insertRowData(int, int) or removeRowData(int, int) to
indicate where the inserted or removed rows are located.
newSize - the new size of the containerprotected int indexOfKey(java.lang.Object rowKey)
protected boolean isPinned(T row)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||