Thanks Igor and Doug, I'll check things out when the boss agrees bbrrr ... On Fri, Apr 25, 2008 at 12:39 AM, Doug Donohoe <[EMAIL PROTECTED]> wrote:
> > This may help. I am moving my DD Poker site to wicket and implemented an > IDataProvider around my database service as follows: > > private class HistoryData implements IDataProvider > { > private static final long serialVersionUID = 42L; > > private PokerUser user; > private int count; > > private HistoryData(PokerUser user) > { > this.user = user; > count = > histService.getAllTournamentHistoriesForProfileCount(user.getId()); > } > > @SuppressWarnings({"RawUseOfParameterizedType"}) > public Iterator iterator(int first, int pagesize) > { > return > histService.getAllTournamentHistoriesForProfile(user.getId(), count, > first, > pagesize).iterator(); > } > > public int size() > { > return count; > } > > public boolean isEmpty() > { > return count == 0; > } > > public IModel model(Object object) > { > return new CompoundPropertyModel(new EntityModel(object)); > } > > public void detach() > { > } > } > > Where EntityModel is: > > public class EntityModel extends CompoundPropertyModel > { > private static final long serialVersionUID = 42L; > > /** > * Constructor > * > * @param object The model object, which may or may not implement > IModel > */ > public EntityModel(Object object) > { > super(new NonLoadableDetachableModel(object)); > } > } > > and NonLoadableDetachableModel is > > public class NonLoadableDetachableModel extends LoadableDetachableModel > { > private static final long serialVersionUID = 42L; > > public NonLoadableDetachableModel(Object model) > { > super(model); > } > > @Override > protected Object load() > { > throw new UnsupportedOperationException("load should never be > called"); > } > } > > I created this last class because my pages are read-only and the result > set > is always fetched through the service. I didn't want to have my (JPA > based) > entities being serialized. > > The HistoryData class worked great with the base DataView class in Wicket. > > Note that I drew a lot of inspiration from: > > http://wicketstuff.org/wicket13/repeater/ > > and digging around in the source. > > I don't know if this will help you or not - hopefully so! > > -Doug > > > Eyal Golan wrote: > > > > Hi, > > Can anyone give me an explanation about paging with DetachableModel? > > > > My problem: > > We have records in the DB that can be a-lot. > > We also filter them sometimes. > > > > someone in the company created a non-standard paging. > > He doesn't use the Wicket's paging. > > > > The iterator method of the DataProvider he created returns only the > number > > of elements that should be displayed in the current page. > > Eg. suppose we decided we show 20 records per page. > > The DataProvider keeps track on which page we're at. > > Then he calculates the indexes of records. > > It's done in getVisibleTickets() method. > > int fromIndex = (currentPage - 1) * (ticketsPerPage); > > int toIndex = ticketsPerPage; > > > > And then he asks the DB for the records in this range (with the filter). > > This is the size() method: > > public int size() { > > if ((visibleTickets == null) || (update)) { > > getVisibleTickets(); > > } > > return visibleTickets.size(); > > } > > > > OK, I hope i was clear enough. > > I know that it might be done using Wicket's library. > > Can anyone explain? > > > > Thanks > > -- > > Eyal Golan > > [EMAIL PROTECTED] > > > > Visit: http://jvdrums.sourceforge.net/ > > > > > > -- > View this message in context: > http://www.nabble.com/intro-and-explanation-about-DataTable-and-DetachableModel-tp16852272p16853277.html > Sent from the Wicket - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Eyal Golan [EMAIL PROTECTED] Visit: http://jvdrums.sourceforge.net/