[
https://issues.apache.org/jira/browse/WICKET-1784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12650587#action_12650587
]
Stefan Fussenegger commented on WICKET-1784:
--------------------------------------------
I've to admit, that I didn't read but scanned all the previous comments.
@ R. Goodwin:
Performing complex Lucene queries twice just to figure out the size in advance
is a problem for me as well. It really doubles the load on the index and the
time spent searching. I also tried to write a custom RepeatingView
implementation but stopped duplicating code when I hit the paging problem as I
didn't want to duplicate the whole PagingNavigationLink hierarchy.
@ Igor (and Johan):
Looks like a change in PagingNavigationLink.getPageNumber() would allow such a
custom AbstractPageableView replacement. Currently (1.3.5),
pageable.setCurrentPage(getPageNumber()) makes sure that the new page isn't
outside the valid range - something which is checked inside the repeater as
well. If this check (or at least the final modifier) is removed, such a
data-first PageableView could be used with the default Navigator.
Long story short ... wouldn't it be okay to remove the final modifier from
PagingNavigationLink.getPageNumber() and provide another method to access the
"raw" pageNumber? Or remove the check completely and rely on the IPageable -
not the PagingNavigationLink itself - to handle that special case (something
that default IPageable implementations already do).
> Enhance IDataProvider to support applications using the Transfer Object J2EE
> pattern
> ------------------------------------------------------------------------------------
>
> Key: WICKET-1784
> URL: https://issues.apache.org/jira/browse/WICKET-1784
> Project: Wicket
> Issue Type: Improvement
> Components: wicket
> Affects Versions: 1.3.3, 1.4-M3
> Environment: Wicket 1.3.3 and 1.4-M3
> Reporter: R. Goodwin
> Assignee: Igor Vaynberg
> Attachments: wicket-paging-experiment.zip
>
>
> In some environments searches are performed in 'single call' fashion, using a
> transfer object.
> E.g. two queries performed by the data services tier before returning
> combined results to the UI tier:
> i. Query for paged search results
> ii. Query for a 'count' value representing total possible results
> The contract between DataView and IDataProvider does not support a 'single
> call' environment as the give/take relationship between these classes is
> biased towards DataView.
> DataView expects IDataProvider to provide it's size before providing
> IDataProvider with its offset and count.
> * DataView may have good reasons for needing size before it can provide
> offset/count.
> * But IDataProvider has equally good reasons for needing offset/count before
> it can provide size.
> The circular dependency:
> 1. DataView calls IDataProvider.size()
> 2. IDataProvider cannot return size as it cannot start a query until it
> receives offset/count from DataView
> 3. These it does not receive until DataView calls IDataProvider.iterator()
> later on
> Others who experienced this problem (with CODE examples):
> * http://www.nabble.com/IDataProvider-and-Hibernate-Search-td15546101.html
> * http://www.mail-archive.com/[EMAIL PROTECTED]/msg14266.html
> ---
> The suggested solution of caching the combined search results and count value
> does not work if the search cannot begin until offset and count are
> available. And writing a custom DataView is not feasible either time wise as
> I understand that it cannot be done without needing to write a number of
> other classes too.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.