You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by se...@apache.org on 2005/09/12 15:44:07 UTC

svn commit: r280339 - in /db/torque: runtime/trunk/src/java/org/apache/torque/util/LargeSelect.java test/trunk/test-project/src/java/org/apache/torque/util/LargeSelectTest.java

Author: seade
Date: Mon Sep 12 06:43:59 2005
New Revision: 280339

URL: http://svn.apache.org/viewcvs?rev=280339&view=rev
Log:
Closer to an actual Serializable LargeSelect.
Serialization of Criteria needs to be addressed before this can progress any further.

Modified:
    db/torque/runtime/trunk/src/java/org/apache/torque/util/LargeSelect.java
    db/torque/test/trunk/test-project/src/java/org/apache/torque/util/LargeSelectTest.java

Modified: db/torque/runtime/trunk/src/java/org/apache/torque/util/LargeSelect.java
URL: http://svn.apache.org/viewcvs/db/torque/runtime/trunk/src/java/org/apache/torque/util/LargeSelect.java?rev=280339&r1=280338&r2=280339&view=diff
==============================================================================
--- db/torque/runtime/trunk/src/java/org/apache/torque/util/LargeSelect.java (original)
+++ db/torque/runtime/trunk/src/java/org/apache/torque/util/LargeSelect.java Mon Sep 12 06:43:59 2005
@@ -24,6 +24,8 @@
 import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.Set;
+import java.io.IOException;
+import java.io.ObjectInputStream;
 import java.io.Serializable;
 import java.lang.reflect.Method;
 
@@ -111,16 +113,15 @@
  * <p>In your template you will then use something along the lines of:
  *
  * <pre>
- *    #set ($largeSelect = $data.User.getTemp("someName"))
- *    #set ($searchop = $data.Parameters.getString("searchop"))
- *    #if ($searchop.equals("prev"))
- *      #set ($recs = $largeSelect.PreviousResults)
+ *    #set($largeSelect = $data.User.getTemp("someName"))
+ *    #set($searchop = $data.Parameters.getString("searchop"))
+ *    #if($searchop.equals("prev"))
+ *      #set($recs = $largeSelect.PreviousResults)
  *    #else
- *      #if ($searchop.equals("goto"))
- *        #set ($recs
- *                = $largeSelect.getPage($data.Parameters.getInt("page", 1)))
+ *      #if($searchop.equals("goto"))
+ *        #set($recs = $largeSelect.getPage($data.Parameters.getInt("page", 1)))
  *      #else
- *        #set ($recs = $largeSelect.NextResults)
+ *        #set($recs = $largeSelect.NextResults)
  *      #end
  *    #end
  * </pre>
@@ -141,9 +142,9 @@
     private int memoryLimit;
 
     /** The record number of the first record in memory. */
-    private int blockBegin = 0;
+    private transient int blockBegin = 0;
     /** The record number of the last record in memory. */
-    private int blockEnd;
+    private transient int blockEnd;
     /** How much of the memory block is currently occupied with result data. */
     private volatile int currentlyFilledTo = -1;
 
@@ -151,31 +152,29 @@
     private String query;
     /** The database name to get from Torque. */
     private String dbName;
-    /** Used to retrieve query results from Village. */
-    private QueryDataSet qds = null;
 
     /** The memory store of records. */
-    private List results = null;
+    private transient List results = null;
 
     /** The thread that executes the query. */
-    private Thread thread = null;
+    private transient Thread thread = null;
     /**
      * A flag used to kill the thread when the currently executing query is no
      * longer required.
      */
-    private volatile boolean killThread = false;
+    private transient volatile boolean killThread = false;
     /** A flag that indicates whether or not the query thread is running. */
-    private volatile boolean threadRunning = false;
+    private transient volatile boolean threadRunning = false;
     /**
      * An indication of whether or not the current query has completed
      * processing.
      */
-    private volatile boolean queryCompleted = false;
+    private transient volatile boolean queryCompleted = false;
     /**
      * An indication of whether or not the totals (records and pages) are at
      * their final values.
      */
-    private boolean totalsFinalized = false;
+    private transient boolean totalsFinalized = false;
 
     /** The cursor position in the result set. */
     private int position;
@@ -183,13 +182,11 @@
     private int totalPages = -1;
     /** The total number of records known to exist. */
     private int totalRecords = 0;
-    /** The number of the page that was last retrieved. */
-    private int currentPageNumber = 0;
 
     /** The criteria used for the query. */
     private Criteria criteria = null;
     /** The last page of results that were returned. */
-    private List lastResults;
+    private transient List lastResults;
 
     /**
      * The class that is possibly used to construct the criteria and used
@@ -200,24 +197,31 @@
      * A reference to the method in the return builder class that will
      * convert the Village Records to the desired class.
      */
-    private Method populateObjectsMethod = null;
+    private transient Method populateObjectsMethod = null;
 
     /**
      * The default value ("&gt;") used to indicate that the total number of
-     * records or pages is unknown. You can use <code>setMoreIndicator()</code>
-     * to change this to whatever value you like (e.g. "more than").
+     * records or pages is unknown.
      */
     public static final String DEFAULT_MORE_INDICATOR = "&gt;";
 
+    /**
+     * The value used to indicate that the total number of records or pages is
+     * unknown (default: "&gt;"). You can use <code>setMoreIndicator()</code>
+     * to change this to whatever value you like (e.g. "more than").
+     */
     private static String moreIndicator = DEFAULT_MORE_INDICATOR;
 
     /**
      * The default value for the maximum number of pages of data to be retained
-     * in memory - you can provide your own default value using
-     * <code>setMemoryPageLimit()</code>.
+     * in memory.
      */
     public static final int DEFAULT_MEMORY_LIMIT_PAGES = 5;
 
+    /**
+     * The maximum number of pages of data to be retained in memory.  Use
+     * <code>setMemoryPageLimit()</code> to provide your own value.
+     */
     private static int memoryPageLimit = DEFAULT_MEMORY_LIMIT_PAGES;
 
     /** A place to store search parameters that relate to this query. */
@@ -354,11 +358,6 @@
                 selectColumnAdder.invoke(returnBuilderClass.newInstance(),
                         theArgs);
             }
-
-            // Locate the populateObjects() method - this will be used later
-            Class[] argTypes = { List.class };
-            populateObjectsMethod =
-                returnBuilderClass.getMethod("populateObjects", argTypes);
         }
         catch (Exception e)
         {
@@ -371,6 +370,21 @@
     }
 
     /**
+     * Access the populateObjects method.
+     */
+    private Method getPopulateObjectsMethod()
+            throws SecurityException, NoSuchMethodException
+    {
+        if (null == populateObjectsMethod)
+        {
+            Class[] argTypes = { List.class };
+            populateObjectsMethod
+                    = returnBuilderClass.getMethod("populateObjects", argTypes);
+        }
+        return populateObjectsMethod;
+    }
+
+    /**
      * Called by the constructors to start the query.
      *
      * @param criteria Object used by <code>BasePeer</code> to build the query.
@@ -430,10 +444,9 @@
     {
         if (pageNumber < 1)
         {
-            throw new IllegalArgumentException("pageNumber must be greater "
-                    + "than zero.");
+            throw new IllegalArgumentException(
+                    "pageNumber must be greater than zero.");
         }
-        currentPageNumber = pageNumber;
         return getResults((pageNumber - 1) * pageSize);
     }
 
@@ -451,7 +464,6 @@
         {
             return getCurrentPageResults();
         }
-        currentPageNumber++;
         return getResults(position);
     }
 
@@ -460,10 +472,13 @@
      *
      * @return a <code>List</code> of query results containing a maximum of
      * <code>pageSize</code> reslts.
+     * @throws TorqueException if invoking the <code>populateObjects()<code>
+     * method runs into problems or a sleep is unexpectedly interrupted.
      */
-    public List getCurrentPageResults()
+    public List getCurrentPageResults() throws TorqueException
     {
-        return lastResults;
+        return null == lastResults && position > 0
+                ? getResults(position) : lastResults;
     }
 
     /**
@@ -485,12 +500,10 @@
         if (position - 2 * pageSize < 0)
         {
             start = 0;
-            currentPageNumber = 1;
         }
         else
         {
             start = position - 2 * pageSize;
-            currentPageNumber--;
         }
         return getResults(start);
     }
@@ -638,10 +651,8 @@
             Object[] theArgs = { returnResults };
             try
             {
-                returnResults =
-                    (List) populateObjectsMethod.invoke(
-                        returnBuilderClass.newInstance(),
-                        theArgs);
+                returnResults = (List) getPopulateObjectsMethod().invoke(
+                        returnBuilderClass.newInstance(), theArgs);
             }
             catch (Exception e)
             {
@@ -661,6 +672,8 @@
         int size = pageSize;
         /* The connection to the database. */
         Connection conn = null;
+        /** Used to retrieve query results from Village. */
+        QueryDataSet qds = null;
 
         try
         {
@@ -854,7 +867,7 @@
      */
     public int getCurrentPageNumber()
     {
-        return currentPageNumber;
+        return position / pageSize;
     }
 
     /**
@@ -905,8 +918,7 @@
             return totalPages;
         }
 
-        int tempPageCount =
-            getTotalRecords() / pageSize
+        int tempPageCount =  getTotalRecords() / pageSize
                 + (getTotalRecords() % pageSize > 0 ? 1 : 0);
 
         if (getTotalsFinalized())
@@ -1009,14 +1021,16 @@
      *
      * @return the number of records that are included on the current page of
      * results.
+     * @throws TorqueException if invoking the <code>populateObjects()<code>
+     * method runs into problems or a sleep is unexpectedly interrupted.
      */
-    public int getCurrentPageSize()
+    public int getCurrentPageSize() throws TorqueException
     {
-        if (null == lastResults)
+        if (null == getCurrentPageResults())
         {
             return 0;
         }
-        return lastResults.size();
+        return getCurrentPageResults().size();
     }
 
     /**
@@ -1030,17 +1044,19 @@
         {
             return 0;
         }
-        return getCurrentPageNumber() * getPageSize() - getPageSize() + 1;
+        return (getCurrentPageNumber() - 1) * getPageSize() + 1;
     }
 
     /**
      * Provide the record number of the last row included on the current page.
      *
      * @return the record number of the last row of the current page.
+     * @throws TorqueException if invoking the <code>populateObjects()<code>
+     * method runs into problems or a sleep is unexpectedly interrupted.
      */
-    public int getLastRecordNoForPage()
+    public int getLastRecordNoForPage() throws TorqueException
     {
-        if (0 == currentPageNumber)
+        if (0 == getCurrentPageNumber())
         {
             return 0;
         }
@@ -1054,8 +1070,10 @@
      *
      * @return progress text in the form of "26 - 50 of &gt; 250" where "&gt;"
      * can be configured using <code>setMoreIndicator()</code>.
+     * @throws TorqueException if invoking the <code>populateObjects()<code>
+     * method runs into problems or a sleep is unexpectedly interrupted.
      */
-    public String getRecordProgressText()
+    public String getRecordProgressText() throws TorqueException
     {
         StringBuffer result = new StringBuffer();
         result.append(getFirstRecordNoForPage());
@@ -1122,15 +1140,13 @@
         blockBegin = 0;
         blockEnd = 0;
         currentlyFilledTo = -1;
-        qds = null;
         results = null;
+        // TODO Perhaps store the oldPosition and immediately restart the
+        // query.
+        // oldPosition = position;
         position = 0;
         totalPages = -1;
         totalRecords = 0;
-        // todo Perhaps store the oldPageNumber and immediately restart the
-        // query.
-        // oldPageNumber = currentPageNumber;
-        currentPageNumber = 0;
         queryCompleted = false;
         totalsFinalized = false;
         lastResults = null;
@@ -1209,6 +1225,20 @@
         {
             params.remove(name);
         }
+    }
+
+    /**
+     * Deserialize this LargeSelect instance.
+     *
+     * @param inputStream The serialization input stream.
+     * @throws IOException
+     * @throws ClassNotFoundException
+     */
+    private void readObject(ObjectInputStream inputStream)
+            throws IOException, ClassNotFoundException
+    {
+        inputStream.defaultReadObject();
+        startQuery(pageSize);
     }
 
     /**

Modified: db/torque/test/trunk/test-project/src/java/org/apache/torque/util/LargeSelectTest.java
URL: http://svn.apache.org/viewcvs/db/torque/test/trunk/test-project/src/java/org/apache/torque/util/LargeSelectTest.java?rev=280339&r1=280338&r2=280339&view=diff
==============================================================================
--- db/torque/test/trunk/test-project/src/java/org/apache/torque/util/LargeSelectTest.java (original)
+++ db/torque/test/trunk/test-project/src/java/org/apache/torque/util/LargeSelectTest.java Mon Sep 12 06:43:59 2005
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import org.apache.commons.lang.SerializationUtils;
 import org.apache.torque.BaseRuntimeTestCase;
 import org.apache.torque.TorqueException;
 import org.apache.torque.test.Author;
@@ -217,12 +218,12 @@
 
         // Page 0
         assertEquals("Current page number", 0, ls.getCurrentPageNumber());
-        assertEquals("Previous results available", false, ls.getPreviousResultsAvailable());
+        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
         assertTrue("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", 0, ls.getCurrentPageSize());
         assertEquals("First record for page", 0, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 0, ls.getLastRecordNoForPage());
-        assertEquals("Totals finalised", false, ls.getTotalsFinalized());
+        assertFalse("Totals finalised", ls.getTotalsFinalized());
         assertEquals("Total pages", 0, ls.getTotalPages());
         assertEquals("Total records", 0, ls.getTotalRecords());
         assertEquals("Page progress text", "0 of &gt; 0", ls.getPageProgressText());
@@ -232,12 +233,12 @@
         // Page 1
         assertEquals("results.size()", TEST_PAGE_SIZE, results.size());
         assertEquals("Current page number", 1, ls.getCurrentPageNumber());
-        assertEquals("Previous results available", false, ls.getPreviousResultsAvailable());
+        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
         assertTrue("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", TEST_PAGE_SIZE, ls.getCurrentPageSize());
         assertEquals("First record for page", 1, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 9, ls.getLastRecordNoForPage());
-        assertEquals("Totals finalised", false, ls.getTotalsFinalized());
+        assertFalse("Totals finalised", ls.getTotalsFinalized());
         assertEquals("Total pages", 5, ls.getTotalPages());
         assertEquals("Total records", 45, ls.getTotalRecords());
         assertEquals("Page progress text", "1 of &gt; 5", ls.getPageProgressText());
@@ -252,7 +253,7 @@
         assertEquals("Current page size", TEST_PAGE_SIZE, ls.getCurrentPageSize());
         assertEquals("First record for page", 37, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 45, ls.getLastRecordNoForPage());
-        assertEquals("Totals finalised", false, ls.getTotalsFinalized());
+        assertFalse("Totals finalised", ls.getTotalsFinalized());
         assertEquals("Total pages", 5, ls.getTotalPages());
         assertEquals("Total records", 45, ls.getTotalRecords());
         assertEquals("Page progress text", "5 of &gt; 5", ls.getPageProgressText());
@@ -282,7 +283,7 @@
         assertEquals("results.size()", TEST_PAGE_SIZE, results.size());
         assertEquals("Current page number", 9, ls.getCurrentPageNumber());
         assertTrue("Previous results available", ls.getPreviousResultsAvailable());
-        assertEquals("Next results available", false, ls.getNextResultsAvailable());
+        assertFalse("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", TEST_PAGE_SIZE, ls.getCurrentPageSize());
         assertEquals("First record for page", 73, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 81, ls.getLastRecordNoForPage());
@@ -315,7 +316,7 @@
         // Page 1
         assertEquals("results.size()", TEST_PAGE_SIZE, results.size());
         assertEquals("Current page number", 1, ls.getCurrentPageNumber());
-        assertEquals("Previous results available", false, ls.getPreviousResultsAvailable());
+        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
         assertTrue("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", TEST_PAGE_SIZE, ls.getCurrentPageSize());
         assertEquals("First record for page", 1, ls.getFirstRecordNoForPage());
@@ -341,11 +342,11 @@
         // Page 1
         List results = ls.getNextResults();
         assertTrue("Totals finalised", ls.getTotalsFinalized());
-        assertEquals("Paginated", false, ls.getPaginated());
+        assertFalse("Paginated", ls.getPaginated());
         assertEquals("results.size()", 1, results.size());
         assertEquals("Current page number", 1, ls.getCurrentPageNumber());
-        assertEquals("Previous results available", false, ls.getPreviousResultsAvailable());
-        assertEquals("Next results available", false, ls.getNextResultsAvailable());
+        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
+        assertFalse("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", 1, ls.getCurrentPageSize());
         assertEquals("First record for page", 1, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 1, ls.getLastRecordNoForPage());
@@ -369,12 +370,12 @@
 
         // Page 0
         assertEquals("Current page number", 0, ls.getCurrentPageNumber());
-        assertEquals("Previous results available", false, ls.getPreviousResultsAvailable());
+        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
         assertTrue("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", 0, ls.getCurrentPageSize());
         assertEquals("First record for page", 0, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 0, ls.getLastRecordNoForPage());
-        assertEquals("Totals finalised", false, ls.getTotalsFinalized());
+        assertFalse("Totals finalised", ls.getTotalsFinalized());
         assertEquals("Total pages", 0, ls.getTotalPages());
         assertEquals("Total records", 0, ls.getTotalRecords());
         assertEquals("Page progress text", "0 of &gt; 0", ls.getPageProgressText());
@@ -384,12 +385,12 @@
         // Page 1
         assertEquals("results.size()", TEST_PAGE_SIZE, results.size());
         assertEquals("Current page number", 1, ls.getCurrentPageNumber());
-        assertEquals("Previous results available", false, ls.getPreviousResultsAvailable());
+        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
         assertTrue("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", TEST_PAGE_SIZE, ls.getCurrentPageSize());
         assertEquals("First record for page", 1, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 9, ls.getLastRecordNoForPage());
-        assertEquals("Totals finalised", false, ls.getTotalsFinalized());
+        assertFalse("Totals finalised", ls.getTotalsFinalized());
         assertEquals("Total pages", 5, ls.getTotalPages());
         assertEquals("Total records", 45, ls.getTotalRecords());
         assertEquals("Page progress text", "1 of &gt; 5", ls.getPageProgressText());
@@ -402,12 +403,12 @@
 
         // Page 0
         assertEquals("Current page number", 0, ls.getCurrentPageNumber());
-        assertEquals("Previous results available", false, ls.getPreviousResultsAvailable());
+        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
         assertTrue("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", 0, ls.getCurrentPageSize());
         assertEquals("First record for page", 0, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 0, ls.getLastRecordNoForPage());
-        assertEquals("Totals finalised", false, ls.getTotalsFinalized());
+        assertFalse("Totals finalised", ls.getTotalsFinalized());
         assertEquals("Total pages", 0, ls.getTotalPages());
         assertEquals("Total records", 0, ls.getTotalRecords());
         assertEquals("Page progress text", "0 of &gt; 0", ls.getPageProgressText());
@@ -417,17 +418,71 @@
         // Page 1
         assertEquals("results.size()", TEST_PAGE_SIZE, results.size());
         assertEquals("Current page number", 1, ls.getCurrentPageNumber());
-        assertEquals("Previous results available", false, ls.getPreviousResultsAvailable());
+        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
         assertTrue("Next results available", ls.getNextResultsAvailable());
         assertEquals("Current page size", TEST_PAGE_SIZE, ls.getCurrentPageSize());
         assertEquals("First record for page", 1, ls.getFirstRecordNoForPage());
         assertEquals("Last record for page", 9, ls.getLastRecordNoForPage());
-        assertEquals("Totals finalised", false, ls.getTotalsFinalized());
+        assertFalse("Totals finalised", ls.getTotalsFinalized());
         assertEquals("Total pages", 5, ls.getTotalPages());
         assertEquals("Total records", 45, ls.getTotalRecords());
         assertEquals("Page progress text", "1 of &gt; 5", ls.getPageProgressText());
         assertEquals("Record progress text", "1 - 9 of &gt; 45", ls.getRecordProgressText());
     }
+
+//    /**
+//     * A basic serialization test.  Cannot continue implementation until
+//     * serialization of Criteria has been implemented correctly.
+//     * 
+//     * @throws TorqueException
+//     */
+//    public void testSerialization() throws TorqueException
+//    {
+//        // TODO  Serialization needs to be reviewed for LargeSelect
+//        // userDataSet should be marked transient and all access should be wrapped for detect and handle null _or_ readObject should rerun the query.
+//
+//        System.out.println("criteria (before LS created) = " + criteria);
+//        LargeSelect ls = new LargeSelect(criteria, TEST_PAGE_SIZE,
+//                "org.apache.torque.test.AuthorPeer");
+//
+//        assertEquals("Page size", TEST_PAGE_SIZE, ls.getPageSize());
+//        assertTrue("Paginated", ls.getPaginated());
+//        
+//        List results = ls.getNextResults();
+//        // Page 1
+//        assertEquals("results.size()", TEST_PAGE_SIZE, results.size());
+//        assertEquals("Current page number", 1, ls.getCurrentPageNumber());
+//        assertFalse("Previous results available", ls.getPreviousResultsAvailable());
+//        assertTrue("Next results available", ls.getNextResultsAvailable());
+//        assertEquals("Current page size", TEST_PAGE_SIZE, ls.getCurrentPageSize());
+//        assertEquals("First record for page", 1, ls.getFirstRecordNoForPage());
+//        assertEquals("Last record for page", 9, ls.getLastRecordNoForPage());
+//        assertFalse("Totals finalised", ls.getTotalsFinalized());
+//        assertEquals("Total pages", 5, ls.getTotalPages());
+//        assertEquals("Total records", 45, ls.getTotalRecords());
+//        assertEquals("Page progress text", "1 of &gt; 5", ls.getPageProgressText());
+//        assertEquals("Record progress text", "1 - 9 of &gt; 45", ls.getRecordProgressText());
+//        
+//        LargeSelect lsCopy = (LargeSelect) SerializationUtils.clone(ls);
+//        
+//        assertEquals("Page size", TEST_PAGE_SIZE, lsCopy.getPageSize());
+//        assertTrue("Paginated", lsCopy.getPaginated());
+//        
+//        // Page 1
+//        results = lsCopy.getCurrentPageResults();
+//        assertEquals("results.size()", TEST_PAGE_SIZE, results.size());
+//        assertEquals("Current page number", 1, lsCopy.getCurrentPageNumber());
+//        assertFalse("Previous results available", lsCopy.getPreviousResultsAvailable());
+//        assertTrue("Next results available", lsCopy.getNextResultsAvailable());
+//        assertEquals("Current page size", TEST_PAGE_SIZE, lsCopy.getCurrentPageSize());
+//        assertEquals("First record for page", 1, lsCopy.getFirstRecordNoForPage());
+//        assertEquals("Last record for page", 9, lsCopy.getLastRecordNoForPage());
+//        assertFalse("Totals finalised", lsCopy.getTotalsFinalized());
+//        assertEquals("Total pages", 5, lsCopy.getTotalPages());
+//        assertEquals("Total records", 45, lsCopy.getTotalRecords());
+//        assertEquals("Page progress text", "1 of &gt; 5", lsCopy.getPageProgressText());
+//        assertEquals("Record progress text", "1 - 9 of &gt; 45", lsCopy.getRecordProgressText());
+//    }
 
     // todo Add a test for getPaginated() - was previously returning false when 6 results and pageSize 5
 



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org