You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@click.apache.org by sa...@apache.org on 2009/07/16 16:46:57 UTC

svn commit: r794699 - in /incubator/click/trunk/click/examples/src/org/apache/click/examples: page/table/LargeDatasetDemo.java service/CustomerService.java

Author: sabob
Date: Thu Jul 16 14:46:57 2009
New Revision: 794699

URL: http://svn.apache.org/viewvc?rev=794699&view=rev
Log:
added sorting to large dataset demo

Modified:
    incubator/click/trunk/click/examples/src/org/apache/click/examples/page/table/LargeDatasetDemo.java
    incubator/click/trunk/click/examples/src/org/apache/click/examples/service/CustomerService.java

Modified: incubator/click/trunk/click/examples/src/org/apache/click/examples/page/table/LargeDatasetDemo.java
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/src/org/apache/click/examples/page/table/LargeDatasetDemo.java?rev=794699&r1=794698&r2=794699&view=diff
==============================================================================
--- incubator/click/trunk/click/examples/src/org/apache/click/examples/page/table/LargeDatasetDemo.java (original)
+++ incubator/click/trunk/click/examples/src/org/apache/click/examples/page/table/LargeDatasetDemo.java Thu Jul 16 14:46:57 2009
@@ -46,10 +46,19 @@
     private CustomerService customerService;
 
     public LargeDatasetDemo() {
-        table = new Table();
+        table = new Table() {
+
+            /**
+             * Sorting must be done on Database, so we override Table build in
+             * sorting to do nothing.
+             */
+            protected void sortRowList() {
+            }
+        };
 
         // Setup customers table
         table.setClass(Table.CLASS_ITS);
+        table.setSortable(true);
 
         Column column = new Column("name");
         column.setWidth("140px;");
@@ -89,7 +98,8 @@
         table.setRowList(dataProvider);
 
         // Retrieve customers given the firstRow, lastRow and pageSize
-        List customers = getCustomers(table.getFirstRow(), table.getLastRow(), table.getPageSize());
+        List customers = getCustomers(table.getFirstRow(), table.getPageSize(),
+            table.getSortedColumn(), table.isSortedAscending());
 
         // Add the customers to the table dataProvider
         dataProvider.addAll(customers);
@@ -138,7 +148,7 @@
         }
 
         /**
-         * Always return the total number of rows even the number of entries
+         * Always return the total number of rows even if the number of entries
          * are less.
          */
         public int size() {
@@ -152,11 +162,12 @@
         return customerService.getNumberOfCustomers();
     }
 
-    private List<Customer> getCustomers(int from, int to, int pageSize) {
+    private List<Customer> getCustomers(int from, int pageSize, String sortedColumn,
+        boolean ascending) {
         // Below we retrieve only those customers between the from and to
         // args. In a real application one would use an ORM or JDBC to only
         // retrieve the needed rows
-        return customerService.getCustomersForPage(from, pageSize);
+        return customerService.getCustomersForPage(from, pageSize, sortedColumn, ascending);
     }
 
 }

Modified: incubator/click/trunk/click/examples/src/org/apache/click/examples/service/CustomerService.java
URL: http://svn.apache.org/viewvc/incubator/click/trunk/click/examples/src/org/apache/click/examples/service/CustomerService.java?rev=794699&r1=794698&r2=794699&view=diff
==============================================================================
--- incubator/click/trunk/click/examples/src/org/apache/click/examples/service/CustomerService.java (original)
+++ incubator/click/trunk/click/examples/src/org/apache/click/examples/service/CustomerService.java Thu Jul 16 14:46:57 2009
@@ -198,22 +198,18 @@
     }
 
     @SuppressWarnings("unchecked")
-    public List<Customer> getCustomersForPage(int offset, int pageSize) {
-        List list = getCustomers();
+    public List<Customer> getCustomersForPage(int offset, int pageSize,
+        String sortColumn, boolean ascending) {
 
-        List pageList = new ArrayList(pageSize);
-        for (int i = 0; i < pageSize; i++) {
-            // Increment row index with the offset
-            int rowIndex = offset + i;
-
-            // Guard against rowIndex that moves past the end of the list
-            if (rowIndex >= list.size()) {
-                break;
-            }
-            pageList.add(list.get(rowIndex));
+        SelectQuery query = new SelectQuery(Customer.class);
+        if (sortColumn != null) {
+            query.addOrdering(sortColumn, ascending);
         }
+        query.setFetchOffset(offset);
+        query.setFetchLimit(pageSize);
+        List list = performQuery(query);
 
-        return pageList;
+        return list;
     }
 
     @SuppressWarnings("unchecked")