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.