Hi Scott,
Voil� the Test Case (it's a stripped-down version of
my test class...)
/**
* Created on 12-set-2002
* $Id$
*
* To change this generated comment edit the template variable "filecomment":
* Window>Preferences>Java>Templates.
*/
package it.trento.trytorque;
/**
* @author $Author$
* @version $Revision$ $Date$
*
*/
import java.io.InputStreamReader;
import java.util.*;
import org.apache.torque.Torque;
import org.apache.torque.util.BasePeer;
import org.apache.torque.util.Criteria;
import org.apache.torque.util.LargeSelect;
import com.workingdogs.village.Record;
//My om, you can put here your own ...
import it.trento.comune.anagrafe.om.*;
public class Prova {
public static void main(String[] args) {
try {
/*
* Initializing Torque
*/
Torque.init("Torque.properties");
LargeSelect ls = null;
Criteria c = new Criteria();
//Retrieving only 2 columns ...
c.addSelectColumn(CITIZENPeer.CITIZEN_MATR);
c.addSelectColumn(CITIZENPeer.CITIZEN_NAME);
ls =
new LargeSelect(
c,
10,
1); //memoryLimit == pageSize
//Doesn't works!!!
//ls.setMemoryPageLimit(1);
java.io.BufferedReader br =
new java.io.BufferedReader(new InputStreamReader(System.in));
int nPage = 0;
String cmd = null;
boolean isEnd = false;
while (!isEnd) {
System.out.println("<- p previous |e : end| n -> next ");
cmd = br.readLine();
if (cmd.equals("n")) {
if (ls.getNextResultsAvailable()) {
nPage++;
System.out.println(
"=============\tPAGE " + nPage + "\t===============");
printPage(ls.getNextResults(), ls.getFirstRecordNoForPage());
}
}
else
if (cmd.equals("p")) {
if (ls.getPreviousResultsAvailable()) {
nPage--;
System.out.println(
"=============\tPAGE " + nPage + "\t===============");
printPage(ls.getPreviousResults(), ls.getFirstRecordNoForPage());
}
}
isEnd = (cmd.equals("e"));
}
}
catch (Exception e) {
e.printStackTrace();
}
}
private static void printPage(List recordList, int n) throws Exception
{
Iterator i = recordList.iterator();
while (i.hasNext()) {
Object obj = i.next();
if (obj instanceof Record){
System.out.println(
n++
+ ") "
+ ((Record) obj).getValue("CITIZEN_MATR")
+ " "
+ ((Record) obj).getValue("CITIZEN_NAME"));
}
System.out.println();
}
}
>-- Messaggio Originale --
>Reply-To: "Turbine Torque Developers List" <[EMAIL PROTECTED]>
>Date: Mon, 07 Oct 2002 19:30:22 +1000
>Subject: Re: LargeSelect bug?
>From: Scott Eade <[EMAIL PROTECTED]>
>To: Turbine Torque Developers List <[EMAIL PROTECTED]>
>
>
>> From: [EMAIL PROTECTED]
>>
>> I think there is a bug in class LargeSelect.
>> result set pagination cycles into the first memoryLimit block.
>> This is evident choosing memoryPageLimit=1 in LargeSelect constructor;
>> (by the way, method setMemoryPageLimit() does not works); in this
>> case, the page returned is alway the first.
>> In mehod getResults(int start, int size), fromIndex and toIndex
>> variables indicates results List portion to return as a page.
>> fromIndex is set to:
>> fromIndex = start - blockBegin; when block size is equal to
>> page size (memoryLimit == pageSize), fromIndex is always 0.
>> The page is always the same.
>> This would be correct if results List wolud contain ONLY block
>> results, but this is not true; results List contains all query
>> results, including current block.
>
>I will look into these when I get a free moment. It would help greatly
if
>you could provide some additional test cases that illustrate the problems
>and raise a defect issue in Scarab.
>
>Cheers,
>
>Scott
>--
>Scott Eade
>Backstage Technologies Pty. Ltd.
>http://www.backstagetech.com.au
>
>
>
>--
>To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
__________________________________________________________________
Tiscali ADSL, l'offerta su misura per te a partire da 24,95 euro al mese!
Scopri la tua adsl ideale con il TEST ON LINE
http://point.tiscali.it/adsl/
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>