>> you mentioned that you implemented such a repeater yourself. didn't you
use
>> any navigation or did you write that yourself? just wondering.

>i implemented a simple prev/next pager which is all that was required
>or that usecase.


Matej's implementation from inMethods works perfectly. I suggest you use
that Stefan if you need such a thing.
(Thanks Matej!)




On Thu, Nov 27, 2008 at 7:51 PM, Igor Vaynberg <[EMAIL PROTECTED]>wrote:

> On Thu, Nov 27, 2008 at 10:28 AM, Stefan Fußenegger
> <[EMAIL PROTECTED]> wrote:
> >
> > Hi Igor,
> >
> > thanks for implementing this minimal version. i totally agree with your
> > reasoning. Is there any chance though that this goes into 1.3 branch as
> > well? I'd really appreciate that.
>
> done
>
> > you mentioned that you implemented such a repeater yourself. didn't you
> use
> > any navigation or did you write that yourself? just wondering.
>
> i implemented a simple prev/next pager which is all that was required
> for that usecase.
>
> > shall i open a ticket against 1.5 to track this issue/enhancement?
>
> i added it to the wishlist wiki page. if you add a jira ticket please
> add the number to the wiki page.
>
> -igor
>
> >
> > best regards, stefan
> >
> >
> >
> > igor.vaynberg wrote:
> >>
> >> On Thu, Nov 27, 2008 at 12:46 AM, Stefan Fußenegger
> >> <[EMAIL PROTECTED]> wrote:
> >>>
> >>> I don't think IDataProvider is only about databases.
> >>
> >> you started off with your core assumption being wrong. idataprovider
> >> was written exclusively for accessing databases. my thinking, at the
> >> time, was that 99% of people use wicket to build applications that
> >> access databases, and i dare say it was a good guess because in its ~3
> >> years of existence only a handful of people had a problem with the way
> >> it works.
> >>
> >>> There are other data
> >>> sources and some return the total amount and the desired subset at the
> >>> same
> >>> time (Lucene as a famous example). Such data sources would really
> benefit
> >>> of
> >>> a single-query-approach.
> >>
> >> i am not disputing this fact. i am simply saying that we are not going
> >> to fix this right now because this is not a bug. you are trying to use
> >> the components for something they were not designed to be used. in 1.5
> >> we may address this.
> >>
> >>> I faced this issue myself in a search (read Lucene)
> >>> centered application. I successfully went down the road of implementing
> a
> >>> custom repeater.
> >>
> >> i had to do the same myself.
> >>
> >>> But when the repeater was working as desired, I figured out
> >>> that PagingNavigationLink is the real showstopper, not IDataProvider
> (see
> >>> my
> >>> JIRA comment [0]). The fix would be rather trivial, as
> >>> PagingNavigationLink
> >>> is doing something it needn't do (checking the requested page against
> the
> >>> valid range of pages).
> >>>
> >>> Let me answer 2 possible questions in advance:
> >>>
> >>> Q: Why is this check in PagingNavigationLink a problem?
> >>> A: Obviously, you can't fetch size and data as long as the page isn't
> >>> known.
> >>
> >> the check is there because we code defensively. we do not assume that
> >> every implementation of ipageable will cull the number when you call
> >> setcurrentpage(x).
> >>
> >>> Q: How would a custom repeater that fetches data and size at the same
> >>> tame
> >>> handle invalid (out of range) pages?
> >>> A: Out of range pages will return the size and an empty dataset. In
> this
> >>> case, the repeater would change the page number to the last valid and
> do
> >>> a
> >>> second query. Yeah, two queries again. But this should only happen
> rarely
> >>> though.
> >>
> >> this will change the existing behavior. if you are on page 5 and click
> >> page 10 (which happens to not exist) you would end up back on 5 with
> >> your suggestion where as currently you would properly end up on 9.
> >>
> >> looking at WICKET-1784, i extracted the code you want into an
> >> overridable int cullPageNumber(int x). so feel free to subclass the
> >> link and override that to return x without any extra checks.
> >>
> >> we may properly fix this in 1.5, but for right now this is too big a
> >> refactor because it changes the basic assumptions with which the code
> >> was written.
> >>
> >> -igor
> >>
> >>>
> >>> Best regards, Stefan
> >>>
> >>> [0]
> >>>
> https://issues.apache.org/jira/browse/WICKET-1784?focusedCommentId=12651278#action_12651278
> >>>
> >>>
> >>> igor.vaynberg wrote:
> >>>>
> >>>> On Wed, Nov 26, 2008 at 9:32 AM, Wayne Pope
> >>>> <[EMAIL PROTECTED]> wrote:
> >>>>>>so you think pushing all that extra data over the network is actually
> >>>>>>more efficient then doing another query???? wtf.
> >>>>> The point is I'd rather avoid 2 calls where 1 will do.
> >>>>> AbstractPageableView
> >>>>> will do fine I believe.
> >>>>
> >>>> the number of calls itself is meaningless, i dont comprehend why
> >>>> people have a hard time understanding this simple fact.
> >>>>
> >>>> if you have one call that takes 1000ms and ten calls that each take
> >>>> 10ms you should concentrate on the one call that takes a long time
> >>>> rather then eliminating all ten 10ms calls which only saves you 100ms.
> >>>> if you can optimize the 1000ms and shave off 20% then your eleven
> >>>> calls are still faster then the one call.
> >>>>
> >>>> and since connection pools have been inventind many years ago there is
> >>>> no more overhead of establishing network connections, just pushing
> >>>> bits around. maybe that is still a problem in php, but in java it has
> >>>> been solved a long time ago.
> >>>>
> >>>> -igor
> >>>>
> >>>>
> >>>>>
> >>>>>>i can only assume that you have actually profiled your app and that
> >>>>>>one select count() call was what was taking a significant chunk of
> >>>>>>processing time in the database server? to the point where
> eliminating
> >>>>>>it will actually reduce enough load on the database to increase your
> >>>>>>throughput?
> >>>>>
> >>>>> No I haven't, as mentioned before, I just want to avoid 2 calls when
> >>>>> one
> >>>>> will do.  I have however seen several times in production systems
> >>>>> waiting
> >>>>> on
> >>>>> i/o's reduces your scalability. I'd rather keep server count down as
> >>>>> money
> >>>>> is tight.
> >>>>> I'll be mindfull not to ask 'stupid' questions again.
> >>>>>
> >>>>>
> >>>>>
> >>>>> On Wed, Nov 26, 2008 at 6:19 PM, Igor Vaynberg
> >>>>> <[EMAIL PROTECTED]>wrote:
> >>>>>
> >>>>>> On Wed, Nov 26, 2008 at 9:06 AM, Wayne Pope
> >>>>>> <[EMAIL PROTECTED]> wrote:
> >>>>>> > Hi Igor,
> >>>>>> >
> >>>>>> >>what? why would you ever load the whole dataset?
> >>>>>> > just to avoid 2 calls on smallish datasets, especially when there
> >>>>>> are
> >>>>>> > multiple joins and database isnt on the same box.
> >>>>>>
> >>>>>> so you think pushing all that extra data over the network is
> actually
> >>>>>> more efficient then doing another query???? wtf.
> >>>>>>
> >>>>>> >>yeah. because select count() queries are the most expensive
> queries
> >>>>>> >>you can run on the database. you are right, its totally going to
> >>>>>> kill
> >>>>>> >>it. you know how all those sites on the internet that have a pager
> >>>>>> >>above the pageable view that shows you the number of the last
> >>>>>> >>available page...you know how those work without doing a select
> >>>>>> >>count()?
> >>>>>> >
> >>>>>> > Ouch.
> >>>>>> > I just want to limit calls if possible to the database as waiting
> >>>>>> for
> >>>>>> i/o's
> >>>>>> > is never great for scalability. I'm not 'having a go' at wicket or
> >>>>>> DataViews
> >>>>>> > or anything, just trying to understand it. I never claimed to be a
> >>>>>> guru -
> >>>>>> > far from it.
> >>>>>>
> >>>>>> i can only assume that you have actually profiled your app and that
> >>>>>> one select count() call was what was taking a significant chunk of
> >>>>>> processing time in the database server? to the point where
> eliminating
> >>>>>> it will actually reduce enough load on the database to increase your
> >>>>>> throughput?
> >>>>>>
> >>>>>> -igor
> >>>>>>
> >>>>>> >
> >>>>>> > Wayne
> >>>>>> >
> >>>>>> >
> >>>>>> > On Wed, Nov 26, 2008 at 5:58 PM, Igor Vaynberg
> >>>>>> <[EMAIL PROTECTED]
> >>>>>> >wrote:
> >>>>>> >
> >>>>>> >> On Wed, Nov 26, 2008 at 7:32 AM, Wayne Pope
> >>>>>> >> <[EMAIL PROTECTED]> wrote:
> >>>>>> >> > I'm sure I must be missing something still, as I can't beleive
> >>>>>> that
> >>>>>> we
> >>>>>> >> need
> >>>>>> >> > to either a) load the whole data set
> >>>>>> >>
> >>>>>> >> what? why would you ever load the whole dataset?
> >>>>>> >>
> >>>>>> >> b) call count on the Db , then load in
> >>>>>> >> > the iterator mehod. Thats going to kill the database in prod
> (or
> >>>>>> really
> >>>>>> >> not
> >>>>>> >> > help.)
> >>>>>> >>
> >>>>>> >> yeah. because select count() queries are the most expensive
> queries
> >>>>>> >> you can run on the database. you are right, its totally going to
> >>>>>> kill
> >>>>>> >> it. you know how all those sites on the internet that have a
> pager
> >>>>>> >> above the pageable view that shows you the number of the last
> >>>>>> >> available page...you know how those work without doing a select
> >>>>>> >> count()?
> >>>>>> >>
> >>>>>> >> -igor
> >>>>>> >>
> >>>>>> >>
> >>>>>> >>
> >>>>>> >>
> >>>>>> >>
> >>>>>> >>
> >>>>>> >> >
> >>>>>> >> > On Wed, Nov 26, 2008 at 3:58 PM, Michael Sparer <
> >>>>>> [EMAIL PROTECTED]
> >>>>>> >> >wrote:
> >>>>>> >> >
> >>>>>> >> >>
> >>>>>> >> >> have a look at
> https://issues.apache.org/jira/browse/WICKET-1784
> >>>>>> >> >>
> >>>>>> >> >>
> >>>>>> >> >> Wayne Pope-2 wrote:
> >>>>>> >> >> >
> >>>>>> >> >> > Ok,
> >>>>>> >> >> >
> >>>>>> >> >> > I was just having a bit of code clean up and I realized that
> >>>>>> in
> >>>>>> our
> >>>>>> >> >> > IDataProviders we are loading all rows for a given dataset.
> >>>>>> >> >> > So looking at the iterator method I see we can limit the
> >>>>>> result
> >>>>>> (and
> >>>>>> >> the
> >>>>>> >> >> > offset). Great I thought - however I see that that the
> size()
> >>>>>> method
> >>>>>> >> is
> >>>>>> >> >> > called as part of the getViewSize() in the
> >>>>>> AbstractPageableView.
> >>>>>> Thus
> >>>>>> >> I
> >>>>>> >> >> > need
> >>>>>> >> >> > to call the database here to figure out the size.
> >>>>>> >> >> >
> >>>>>> >> >> > Am I doing sonething wrong or have I got to hit the database
> >>>>>> twice
> >>>>>> for
> >>>>>> >> >> > each
> >>>>>> >> >> > DataProvider render.
> >>>>>> >> >> >
> >>>>>> >> >> > Obvously I don't want to hard code a size. Is there any
> other
> >>>>>> way ?
> >>>>>> >> >> >
> >>>>>> >> >> > Thanks
> >>>>>> >> >> > Wayne
> >>>>>> >> >> >
> >>>>>> >> >> >
> >>>>>> >> >>
> >>>>>> >> >>
> >>>>>> >> >> -----
> >>>>>> >> >> Michael Sparer
> >>>>>> >> >> http://talk-on-tech.blogspot.com
> >>>>>> >> >> --
> >>>>>> >> >> View this message in context:
> >>>>>> >> >>
> >>>>>> >>
> >>>>>>
> http://www.nabble.com/Is-there-any-other-way--DataProviders-must-hit-the-Db-twice-for-%28possible%29-large-datasets-tp20701684p20702476.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]
> >>>>>> >> >>
> >>>>>> >> >>
> >>>>>> >> >
> >>>>>> >>
> >>>>>> >>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>> >>
> >>>>>> >>
> >>>>>> >
> >>>>>>
> >>>>>>
> ---------------------------------------------------------------------
> >>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>>> ---------------------------------------------------------------------
> >>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>>> For additional commands, e-mail: [EMAIL PROTECTED]
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>> -----
> >>> -------
> >>> Stefan Fußenegger
> >>> http://talk-on-tech.blogspot.com // looking for a nicer domain ;)
> >>> --
> >>> View this message in context:
> >>>
> http://www.nabble.com/Is-there-any-other-way--DataProviders-must-hit-the-Db-twice-for-%28possible%29-large-datasets-tp20701684p20715382.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]
> >>>
> >>>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>
> >
> >
> > -----
> > -------
> > Stefan Fußenegger
> > http://talk-on-tech.blogspot.com // looking for a nicer domain ;)
> > --
> > View this message in context:
> http://www.nabble.com/Is-there-any-other-way--DataProviders-must-hit-the-Db-twice-for-%28possible%29-large-datasets-tp20701684p20723759.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]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to