Once again, this has become a philosophical discussion.
I say tomato you say tomato.
This is going to live as a contrib package so it wont distrub anything,
people who prefer this style will use it.
Besides you can do
final List mylist;
new DataProvider() {
public int itemCount() { return mylist.size(); }
public Iterator iterator(int first, int count) { return
mylist.listIterator(first); }
public IModel model(Object o) { return new Model(o); }
}
And you have a list.
Or
new DataProvider() {
.....
public Iterator iterator(int first, int count) {
Session hibernateSession=...;
hibernateSession.createQuery(....).setFirstResult(first).setMaxResults(count
).iterate();
// nice and explicit without black magic in the paged list
// plus iterate here will use second level cache where as list()
will not so you don't have to reconstruct a list from an iterator
}
}
-Igor
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of
> Phil Kulak
> Sent: Friday, July 29, 2005 1:55 PM
> To: [email protected]
> Subject: Re: [Wicket-user] lists
>
> > > It's just as easy to build paging into a List as it is into the
> > > component itself.
> > > However, the way it is currently, my DAO can return a paging list
> > > and set up exactly how said List gets it's data each time
> it pages;
> > > exactly what a DAO is supposed to do.
> >
> > Unfortunately the only object that knows exactly how the
> paging should
> > be set up is the listview and not the dao. How does your
> dao know the
> > exact window size? If your window is too small you are issuing
> > multiple queries, if your window is too big you are getting
> more than
> > you need which is a waste of memory. In my app the user can
> change the
> > size of any listview and it was a pain to keep maintaing
> paged list window size.
> >
> > With this interface its transparent because you are getting all
> > information you need with every request.
>
> Look at OrderedPageableList in wicket-contrib-data. All the
> settings related to presentation (paging window) are set
> bean-style. That way, you get a list from the dao, then
> manipulate it to you likeing at any point. Since data is not
> fetched until a method from the List interface is called,
> this works just fine.
>
> > >And even
> > > though the list has a bunch of extra features for paging,
> sorting,
> > >or whatever, it's still a list, which is what you expect
> to get back
> > >when you call a method like findAll(). The way it's set up now is
> > >just a lovely way to separate the data access from components.
> >
> > I agree, it has an air of a more elegant approach, but
> there are a lot
> > of caveats. What if someone tries to sort the list using
> Collections?
> > Are you going to bring in 10000 rows with a window size of
> 20? Its too
> > easy to do something like that, there is no way to know
> where the list comes from.
>
> It's a read-only list that extends AbstractList. Like any
> other read-only list, an Unsupported OperationException is
> thrown if someone tries to sort it. If someone gets an
> iterator and wants to run through 10000 records, well, they
> should probably be a least a little bit familiar with the
> implementation. If I'm using a LinkedList I know that random
> access is slow and write my code accordingly, I don't see how
> this is any different.
>
>
> -------------------------------------------------------
> SF.Net email is sponsored by: Discover Easy Linux Migration
> Strategies from IBM. Find simple to follow Roadmaps,
> straightforward articles, informative Webcasts and more! Get
> everything you need to get up to speed, fast.
> http://ads.osdn.com/?ad_idt77&alloc_id492&op=ick
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>
>
>
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user