T
- row/item model object typepublic interface IDataSource<T>
extends org.apache.wicket.model.IDetachable, org.apache.wicket.util.io.IClusterable
An example of situation when the row count can be determined:
IDataSource<User> source = new IDataSource<User>() { public void query(IQuery query, IQueryResult<User> result) { UserDao dao = DaoManager.getUserDao(); // code to get a DAO or service object result.setTotalCount(dao.getUserCount()); Collection<User> users = dao.getUsers(query.getFrom(), query.getCount()); result.setItems(users.iterator()); } public IModel<User> model(User object) { return new DetachableUserModel(object); } }An example of situation when the row count can't be determined. The pagination then only allows to advance by one page. The idea is to retrieve n + 1 rows when n rows are requested to decide whether the next page should be available:
IDataSource<User> source = new IDataSource<User>() { public void query(IQuery query, IQueryResult<User> result) { UserDao dao = DaoManager.getUserDao(); // code to get a DAO or service object Collection<User> users = dao.getUsers(query.getFrom(), query.getCount() + 1); if (users.size() < query.getCount() + 1) { result.setTotalCount(IQueryResult.NO_MORE_ITEMS); } else { result.setTotalCount(IQueryResult.MORE_ITEMS); } result.setItems(users.iterator()); } public IModel<User> model(User object) { return new DetachableUserModel(object); } }
Modifier and Type | Interface and Description |
---|---|
static interface |
IDataSource.IQuery
Specifies the subset of data to be loaded.
|
static interface |
IDataSource.IQueryResult<T>
Used to pass the total row count and the loaded item to the caller of
query(IDataSource.IQuery, IDataSource.IQueryResult) method. |
Modifier and Type | Method and Description |
---|---|
org.apache.wicket.model.IModel<T> |
model(T object)
Allows wrapping the object in a model which will be set as model of the appropriate row.
|
void |
query(IDataSource.IQuery query,
IDataSource.IQueryResult<T> result)
Implementation of this method should load subset of the data specified by
query.getFrom() and query.getCount() . |
void query(IDataSource.IQuery query, IDataSource.IQueryResult<T> result)
query.getFrom()
and query.getCount()
. Also if the total item count
can be determined, it should be passed to result
.query
- Specified the amount and position of items to be queriedresult
- Allows to set the total item count and result itemsCopyright © 2015. All rights reserved.