com.vaadin.client.connectors
Class RpcDataSourceConnector.RpcDataSource

java.lang.Object
  extended by com.vaadin.client.data.AbstractRemoteDataSource<elemental.json.JsonObject>
      extended by com.vaadin.client.connectors.RpcDataSourceConnector.RpcDataSource
All Implemented Interfaces:
DataSource<elemental.json.JsonObject>
Enclosing class:
RpcDataSourceConnector

public class RpcDataSourceConnector.RpcDataSource
extends AbstractRemoteDataSource<elemental.json.JsonObject>


Nested Class Summary
 
Nested classes/interfaces inherited from class com.vaadin.client.data.AbstractRemoteDataSource
AbstractRemoteDataSource.RequestRowsCallback<T>, AbstractRemoteDataSource.RowHandleImpl
 
Nested classes/interfaces inherited from interface com.vaadin.client.data.DataSource
DataSource.RowHandle<T>
 
Field Summary
 
Fields inherited from class com.vaadin.client.data.AbstractRemoteDataSource
temporarilyPinnedRows
 
Constructor Summary
protected RpcDataSourceConnector.RpcDataSource()
           
 
Method Summary
 void ensureAvailability(int firstRowIndex, int numberOfRows)
          Informs the data source that data for the given range is needed.
 DataSource.RowHandle<elemental.json.JsonObject> getHandleByKey(java.lang.Object key)
           
 java.lang.String getRowKey(elemental.json.JsonObject row)
          Gets a stable key for the row object.
protected  void pinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
          Pins a row with given handle.
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, java.util.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.
 
Methods inherited from class com.vaadin.client.data.AbstractRemoteDataSource
getCachedRange, getHandle, getRequestedAvailability, getRow, indexOf, insertRowData, isWaitingForData, onDropFromCache, removeRowData, resetDataAndSize, setCacheStrategy, setDataChangeHandler, size
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RpcDataSourceConnector.RpcDataSource

protected RpcDataSourceConnector.RpcDataSource()
Method Detail

requestRows

protected void requestRows(int firstRowIndex,
                           int numberOfRows,
                           AbstractRemoteDataSource.RequestRowsCallback<elemental.json.JsonObject> callback)
Description copied from class: AbstractRemoteDataSource
Triggers fetching rows from the remote data source. The provided callback should be informed when the requested rows have been received.

Specified by:
requestRows in class AbstractRemoteDataSource<elemental.json.JsonObject>
Parameters:
firstRowIndex - the index of the first row to fetch
numberOfRows - the number of rows to fetch
callback - callback to inform when the requested rows are available

ensureAvailability

public void ensureAvailability(int firstRowIndex,
                               int numberOfRows)
Description copied from interface: DataSource
Informs the data source that data for the given range is needed. A data source only has one active region at a time, so calling this method discards the previously set range.

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.

Specified by:
ensureAvailability in interface DataSource<elemental.json.JsonObject>
Overrides:
ensureAvailability in class AbstractRemoteDataSource<elemental.json.JsonObject>
Parameters:
firstRowIndex - the index of the first needed row
numberOfRows - the number of needed rows

getRowKey

public java.lang.String getRowKey(elemental.json.JsonObject row)
Description copied from class: AbstractRemoteDataSource
Gets a stable key for the row object.

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.

Specified by:
getRowKey in class AbstractRemoteDataSource<elemental.json.JsonObject>
Parameters:
row - the row object for which to get the key
Returns:
a non-null object that uniquely and consistently represents the row object

getHandleByKey

public DataSource.RowHandle<elemental.json.JsonObject> getHandleByKey(java.lang.Object key)

pinHandle

protected void pinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
Description copied from class: AbstractRemoteDataSource
Pins a row with given handle. This function can be overridden to do specific logic related to pinning rows.

Overrides:
pinHandle in class AbstractRemoteDataSource<elemental.json.JsonObject>
Parameters:
handle - row handle to pin

unpinHandle

protected void unpinHandle(AbstractRemoteDataSource.RowHandleImpl handle)
Description copied from class: AbstractRemoteDataSource
Unpins a previously pinned row with given handle. This function can be overridden to do specific logic related to unpinning rows.

Overrides:
unpinHandle in class AbstractRemoteDataSource<elemental.json.JsonObject>
Parameters:
handle - row handle to unpin

setRowData

protected void setRowData(int firstRowIndex,
                          java.util.List<elemental.json.JsonObject> rowData)
Description copied from class: AbstractRemoteDataSource
Informs this data source that updated data has been sent from the server.

Overrides:
setRowData in class AbstractRemoteDataSource<elemental.json.JsonObject>
Parameters:
firstRowIndex - the index of the first received row
rowData - a list of rows, starting from firstRowIndex


Copyright © 2000-2014 Vaadin Ltd. All Rights Reserved.