The pager taglib is not a good idea because it always the full resultset, then filter
the rest by using a for-next loop
-----Original Message-----
From: "Manuel Alzola" <[EMAIL PROTECTED]>
To: "OJB Users List" <[EMAIL PROTECTED]>
Date: Tue, 1 Apr 2003 06:24:03 +0200
Subject: Re: Webapp google queries: What is a good way to present multiple web pages
with query results ?
> I have used pager taglib with sucess. Easy to use
> Manuel Alzola
>
> ----- Original Message -----
> From: "Jacob Hookom" <[EMAIL PROTECTED]>
> To: "'OJB Users List'" <[EMAIL PROTECTED]>
> Sent: Saturday, March 29, 2003 5:31 AM
> Subject: RE: Webapp google queries: What is a good way to present
> multiple
> web pages with query results ?
>
>
> > I followed Scott's example and put one together for MySql, with
> setting up
> > start index, end index with limit:
> >
> > public final class MySqlGenerator extends SqlGeneratorDefaultImpl
> > {
> > /**
> > * @param arg0
> > */
> > public MySqlGenerator(Platform arg0)
> > {
> > super(arg0);
> > }
> >
> > public String getPreparedSelectStatement(Query q, ClassDescriptor
> > cd)
> > {
> > String result = super.getPreparedSelectStatement(q, cd);
> > return this.addOffsetLimit(q, result);
> > }
> >
> > public String getSelectStatementDep(Query q, ClassDescriptor cld)
> > {
> > String result = super.getSelectStatementDep(q, cld);
> > return this.addOffsetLimit(q, result);
> > }
> >
> > private String addOffsetLimit(Query q, String stmt)
> > {
> > int startIndex = q.getStartAtIndex();
> > int endIndex = q.getEndAtIndex() - startIndex;
> >
> > if (endIndex <= 0)
> > endIndex = -1;
> >
> > StringBuffer sb = new StringBuffer(stmt.length() + 16);
> > sb.append(stmt);
> > sb.append(" LIMIT ");
> > sb.append(startIndex);
> > sb.append(",");
> > sb.append(endIndex);
> >
> > System.out.println(sb.toString());
> > return sb.toString();
> > }
> > }
> >
> > | -----Original Message-----
> > | From: Scott Howlett [mailto:[EMAIL PROTECTED]
> > | Sent: Monday, March 24, 2003 10:28 AM
> > | To: OJB Users List
> > | Subject: RE: Webapp google queries: What is a good way to present
> multiple
> > | web pages with query results ?
> > |
> > | Mail list archive seems not to be working properly, otherwise I'd
> point
> > | you to previous postings....
> > |
> > | 1. Use query.setStartAtIndex() and setEndAtIndex() to specify which
> > | records you actually want to retrieve in the query.
> > |
> > | 2. Implement the functionality that translates these parameters
> into
> > | something your database can understand by providing your own
> > | SqlGenerator class and pointing to it OJB.properties.
> > |
> > | For example, I did it like this for PostgreSQL:
> > |
> > | My OJB.properties entry is:
> > |
> > | SqlGeneratorClass=PostgreSqlStatementGenerator
> > |
> > |
> > | My subclass code is:
> > |
> > | import
> org.apache.ojb.broker.accesslayer.sql.SqlGeneratorDefaultImpl;
> > | import org.apache.ojb.broker.metadata.ClassDescriptor;
> > | import org.apache.ojb.broker.platforms.Platform;
> > | import org.apache.ojb.broker.query.Query;
> > |
> > | public class PostgreSqlStatementGenerator extends
> > | SqlGeneratorDefaultImpl {
> > |
> > | public SqlStatementGenerator(Platform pf) {
> > | super(pf);
> > | }
> > |
> > | public String getPreparedSelectStatement(
> > | Query query,
> > | ClassDescriptor cld) {
> > | String result = super.getPreparedSelectStatement(query,
> cld);
> > | return addOffsetLimit(query, result);
> > | }
> > |
> > | public String getSelectStatementDep(Query query,
> ClassDescriptor
> > | cld) {
> > | String result = super.getSelectStatementDep(query, cld);
> > | return addOffsetLimit(query, result);
> > | }
> > |
> > | private String addOffsetLimit(Query q, String stmt) {
> > | int startIndex = q.getStartAtIndex();
> > | int endIndex = q.getEndAtIndex();
> > | if (endIndex > 0) {
> > | if (startIndex < 0 || startIndex >= endIndex) {
> > | startIndex = 0;
> > | }
> > | stmt += " LIMIT " + (endIndex - startIndex);
> > | }
> > | if (startIndex > 0) {
> > | stmt += " OFFSET " + startIndex;
> > | }
> > | return stmt;
> > | }
> > |
> > | }
> > |
> > | Hope that helps,
> > | Scott Howlett
> > |
> > |
> > |
> > | -----Original Message-----
> > | From: Theo Niemeijer [mailto:[EMAIL PROTECTED]
> > | Sent: Friday, March 21, 2003 5:08 AM
> > | To: OJB Users List
> > | Subject: Webapp google queries: What is a good way to present
> multiple
> > | web pages with query results ?
> > |
> > |
> > |
> > | Maybe someone has a suggestion for me:
> > |
> > | The problem I am facing is that a user can have a very long list of
> > | results, and that list of items is presented in multiple pages of
> HTML
> > | (like Google :->)
> > |
> > | Let's assume that a query will have 10.000 resultitems, and I
> display 20
> > | items per HTML page with a Next and a Previous button.
> > |
> > | - When I use a QueryIterator and for each next page just iterate 20
> > | items further
> > | I assume that it will tie the database connection up for quite some
> > | time,
> > | and I can not even be sure that the user will ask for the next page
> of
> > | results !
> > |
> > | - When I just get all the items in a large collection it will cost
> me a
> > | lot of "materialisation" time and a lot of memory.
> > |
> > | - When I only ask for the object identities and then get the pages
> by
> > | making a query
> > | for 20 identies in a kind of "select ... where id's in [....]" then
> the
> > | user would have to wait for that query, but it may be mcuh faster
> than
> > | the original query.
> > |
> > | - When I just re-submit the query for each page, and iterate to the
> > | correct 20 items then the user would have to wait for the query
> each
> > | time, but it may actually be fast because only 20 items would be
> > | "materialised".
> > |
> > |
> > | Anyone having experience with this problem and wanting to share
> best
> > | practices ?
> > |
> > | Regards,
> > | Theo Niemeijer
> > |
> > |
> ---------------------------------------------------------------------
> > | 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]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]