You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/04/14 17:47:05 UTC

svn commit: r161310 - in incubator/beehive/trunk/netui: src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/ src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/filter/ src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/ src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/sort/ src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/ src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/ test/src/junitTests/org/apache/beehive/netui/test/datagrid/ test/webapps/drt/testRecorder/tests/

Author: ekoneil
Date: Thu Apr 14 08:46:57 2005
New Revision: 161310

URL: http://svn.apache.org/viewcvs?view=rev&rev=161310
Log:
NetUI bug fixes:

BEEHIVE-506    	 data grid state objects need to be marked serializable

  The DataGridState object is now serializable.  There are more serialization tests and changes coming.

BEEHIVE-416    	 DataGrid's setRow feature can lead to skipped rows when going to a previous page

  The default PagerModel has been rewritten to support dynamically adjusting the row / page given a page size and data set size.  If provided a row "25" with a page size of 10, the current row is set to "20" so that the row "25" appears on the page and the page size is maintained but no rows are skipped.

BEEHIVE-526    	 previous / next pager doesn't render previous / next links when those pages don't exist

  The previous / next pager now displays the previous and next labels though they're only links when there are previous / next pages to display.

BEEHIVE-417    	 DataGrid - if setRow is set to a value greater than max rows go to the last row

  The new PagerModel adjusts the page size to the end of the data set size if set to display a row that does not exist.

Added new JUnit tests where appropriate to ensure that the PagerModel works correctly.

This change also removes some PagerModel APIs that don't line-up with the dynamic way of determing the current row.  The use of pages for building paging UI has been changed slightly.  The methods:

  getRowForFirstPage
  getRowForPreviousPage
  getRowForNextPage
  getRowForLastPage

should be used to build URLs for navigating to the given pages.  The methods:

  getFirstPage
  getPreviousPage
  getNextPage
  getLastPage

are used to build labels of the current page.

BB: self
DRT: NetUI pass
BVT: NetUI pass (1 failure)



Modified:
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/filter/FilterModel.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/sort/SortModel.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java
    incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java
    incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java
    incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ401.xml
    incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ420.xml

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridConfig.java Thu Apr 14 08:46:57 2005
@@ -31,7 +31,8 @@
 /**
  *
  */
-public abstract class DataGridConfig {
+public abstract class DataGridConfig
+    implements java.io.Serializable {
 
     public abstract DataGridState createDataGridState();
 

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/DataGridState.java Thu Apr 14 08:46:57 2005
@@ -24,7 +24,8 @@
 /**
  *
  */
-public class DataGridState {
+public class DataGridState
+    implements java.io.Serializable {
 
     private FilterModel _filterModel;
     private SortModel _sortModel;

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/filter/FilterModel.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/filter/FilterModel.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/filter/FilterModel.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/filter/FilterModel.java Thu Apr 14 08:46:57 2005
@@ -19,7 +19,6 @@
 
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Iterator;
 
 /**
  *

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/pager/PagerModel.java Thu Apr 14 08:46:57 2005
@@ -24,37 +24,34 @@
  */
 public class PagerModel {
 
-    private static final int FIRST_ROW = 0;
     private static final int DEFAULT_PAGE_SIZE = 10;
-
-    public static final int DEFAULT_PAGE = 0;
-    public static final int DEFAULT_ROW = FIRST_ROW;
+    public static final int DEFAULT_ROW = 0;
 
     private String _pageHref = null;
     private String _pageAction = null;
-    private Integer _currentPage = null;
     private Integer _currentRow = null;
     private Integer _dataSetSize = null;
-    private Integer _lastPage = null;
     private Integer _explicitPageSize = null;
     private Integer _defaultPageSize = null;
 
-    private int _prevPage = -1;
-    private int _nextPage = -1;
-
     public PagerModel() {
-        _currentPage = new Integer(DEFAULT_PAGE);
         _currentRow = new Integer(DEFAULT_ROW);
+    }
 
-        updatePagerState();
+    public String getPageAction() {
+        return _pageAction;
     }
 
-    public void setDefaultPageSize(int pageSize) {
-        if(pageSize < 1)
-            throw new IllegalArgumentException(Bundle.getErrorString("PagerModel_IllegalDefaultPageSize"));
+    public void setPageAction(String pageAction) {
+        _pageAction = pageAction;
+    }
 
-        _defaultPageSize = new Integer(pageSize);
-        updatePagerState();
+    public String getPageHref() {
+        return _pageHref;
+    }
+
+    public void setPageHref(String pageHref) {
+        _pageHref = pageHref;
     }
 
     public int getDefaultPageSize() {
@@ -63,32 +60,21 @@
         else return DEFAULT_PAGE_SIZE;
     }
 
-    public void setDataSetSize(int dataSetSize) {
-        _dataSetSize = new Integer(dataSetSize);
-        updatePagerState();
+    public void setDefaultPageSize(int pageSize) {
+        if(pageSize < 1)
+            throw new IllegalArgumentException(Bundle.getErrorString("PagerModel_IllegalDefaultPageSize"));
+
+        _defaultPageSize = new Integer(pageSize);
     }
 
     public int getDataSetSize() {
         if(_dataSetSize == null)
             return 0;
-        else
-            return _dataSetSize.intValue();
-    }
-
-    public String getPageAction() {
-        return _pageAction;
-    }
-
-    public void setPageAction(String pageAction) {
-        _pageAction = pageAction;
+        else return _dataSetSize.intValue();
     }
 
-    public String getPageHref() {
-        return _pageHref;
-    }
-
-    public void setPageHref(String pageHref) {
-        _pageHref = pageHref;
+    public void setDataSetSize(int dataSetSize) {
+        _dataSetSize = new Integer(dataSetSize);
     }
 
     public int getPageSize() {
@@ -100,66 +86,117 @@
             throw new IllegalArgumentException(Bundle.getErrorString("PagerModel_IllegalPageSize"));
 
         _explicitPageSize = new Integer(pageSize);
-
-        updatePagerState();
     }
 
     public int getPage() {
-        return (_currentPage != null ? _currentPage.intValue() : DEFAULT_PAGE);
+        int row = getRow();
+        assert row % getPageSize() == 0 : "Invalid current row \"" + row + "\" for page size \"" + getPageSize() + "\"";
+        assert getPageSize() > 0;
+        return row / getPageSize();
     }
 
     /* todo: need to check that the new 'current' page is in range given the first/last boundaries */
     public void setPage(int page) {
-        _currentPage = new Integer(page);
-
-        updatePagerState();
+        _currentRow = new Integer(page * getPageSize());
     }
 
     public int getRow() {
-        return (_currentRow != null ? _currentRow.intValue() : DEFAULT_ROW);
+        if(_currentRow != null) {
+            int row = _currentRow.intValue();
+
+            /* if the row is out of range, simply adjust to the last row */
+            if(_dataSetSize != null && (row > _dataSetSize.intValue()))
+                row = _dataSetSize.intValue();
+
+            if(row % getPageSize() != 0) {
+                int adjustedPage = row - (row % getPageSize());
+                return adjustedPage;
+            }
+            else return row;
+        }
+        else return DEFAULT_ROW;
     }
 
     public void setRow(int row) {
         _currentRow = new Integer(row);
-        updatePagerState();
     }
 
     public int getLastRowForPage() {
+        int row = getRow();
         if(_dataSetSize != null) {
-            if(_dataSetSize.intValue() - _currentRow.intValue() < getPageSize())
-                return _currentRow.intValue() + (_dataSetSize.intValue() - _currentRow.intValue()) - 1;
-            else return _currentRow.intValue() + getPageSize() - 1;
+            if(_dataSetSize.intValue() - row < getPageSize())
+                return row + (_dataSetSize.intValue() - row) - 1;
+            else return row + getPageSize() - 1;
         }
-        else return _currentRow.intValue() + getPageSize() - 1;
+        else return row + getPageSize() - 1;
+    }
+
+    public int getRowForFirstPage() {
+        return DEFAULT_ROW;
+    }
+
+    public int getRowForPreviousPage() {
+        int value = getRow() - getPageSize();
+        return value > -1 ? value : -1;
+    }
+
+    public int getRowForNextPage() {
+        return getRow() + getPageSize();
+    }
+
+    public int getRowForLastPage() {
+        Integer lastRow = internalGetLastRow();
+        if(lastRow != null)
+            return lastRow.intValue();
+        else throw new IllegalStateException(Bundle.getErrorString("PagerModel_CantCalculateLastPage"));
+    }
+
+    public int encodeRowForPage(int page) {
+        return page * getPageSize();
+    }
+
+    public int getPageCount() {
+        if(_dataSetSize != null)
+            return (int)Math.ceil(_dataSetSize.doubleValue()/(double)getPageSize());
+        else throw new IllegalStateException(Bundle.getErrorString("PagerModel_CantCalculateLastPage"));
     }
 
     public int getFirstPage() {
-        return DEFAULT_PAGE;
+        return 0;
     }
 
     public int getPreviousPage() {
-        return _prevPage;
+        int previousPageRow = getRowForPreviousPage();
+        return previousPageRow == -1 ? previousPageRow : (int)(previousPageRow / getPageSize());
     }
 
     public int getNextPage() {
-        return _nextPage;
+        return (int)(getRowForNextPage() / getPageSize());
     }
 
     public int getLastPage() {
-        if(_lastPage != null)
-            return _lastPage.intValue();
-        else throw new IllegalStateException(Bundle.getErrorString("PagerModel_CantCalculateLastPage"));
+        return (int)(Math.floor(getRowForLastPage() / getPageSize()));
     }
 
-    private void updatePagerState() {
-        if(getRow() == 0)
-            _currentPage = new Integer(DEFAULT_PAGE);
-        else _currentPage = new Integer((int)Math.floor((double)getRow() / (double)getPageSize()));
-
-        _prevPage = _currentPage.intValue() - 1;
-        _nextPage = _currentPage.intValue() + 1;
-
-        if(_dataSetSize != null)
-            _lastPage = new Integer((int)(Math.ceil((double)_dataSetSize.doubleValue() / (double)getPageSize())) - 1);
+    private Integer internalGetLastRow() {
+        if(_dataSetSize != null) {
+            /*
+              29 / 10: 0-9, 10-19, 20-29          _lastRow = 20
+              30 / 10: 0-9, 10-19, 20-29, 30-39   _lastRow = 30
+              31 / 10: 0-9, 10-19, 20-29, 30-39   _lastRow = 30
+              32 / 10: 0-9, 10-19, 20-29, 30-39   _lastRow = 30
+
+              29 - (29%10) = 20
+              30 - (30%10) = 30
+              30 - (30%10) = 30
+              36 - (36%10) = 30
+
+              12 / 2: 0-1, 2-3, 4-5, 6-7, 8-9, 10-11, 12-13 _lastRow=10
+              12 / 5: 0-4, 5-9, 10-14 _lastRow=5
+             */
+            int lastRow = getPageSize() * (int)Math.floor((double)(_dataSetSize.intValue()-1) / (double)getPageSize());
+            return new Integer(lastRow);
+        }
+        else return null;
     }
-}
+}
\ No newline at end of file

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/sort/SortModel.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/sort/SortModel.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/sort/SortModel.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/api/sort/SortModel.java Thu Apr 14 08:46:57 2005
@@ -18,7 +18,6 @@
 package org.apache.beehive.netui.databinding.datagrid.api.sort;
 
 import java.util.List;
-import java.util.Iterator;
 
 /**
  *

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridStateCodec.java Thu Apr 14 08:46:57 2005
@@ -80,7 +80,7 @@
     DefaultDataGridStateCodec(DataGridConfig config) {
         _config = config;
         _state = _config.createDataGridState();
-        _urlBuilder = new DefaultDataGridURLBuilder(getGridName(), this);
+        _urlBuilder = new DefaultDataGridURLBuilder(this);
     }
 
     public DataGridState getDataGridState() {

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/config/DefaultDataGridURLBuilder.java Thu Apr 14 08:46:57 2005
@@ -35,13 +35,11 @@
  * computed using this class and rendered to the UI so that it is clickable for the next HTTP submit.
  */
 class DefaultDataGridURLBuilder
-        extends DataGridURLBuilder {
+    extends DataGridURLBuilder {
 
-    private String _namespace;
-    private DefaultDataGridStateCodec _codec;
+    private transient DefaultDataGridStateCodec _codec;
 
-    DefaultDataGridURLBuilder(String namespace, DefaultDataGridStateCodec codec) {
-        _namespace = namespace;
+    DefaultDataGridURLBuilder(DefaultDataGridStateCodec codec) {
         _codec = codec;
     }
 
@@ -72,8 +70,8 @@
 
         addSortParams(newParams);
         addFilterParams(newParams);
-        newParams.putAll(_codec.buildPageParamMap(new Integer(pagerModel.getFirstPage() * pagerModel.getPageSize()),
-                new Integer(pagerModel.getPageSize())));
+        newParams.putAll(_codec.buildPageParamMap(new Integer(pagerModel.getRowForFirstPage()),
+                                                  new Integer(pagerModel.getPageSize())));
 
         params = mergeMaps(params, newParams);
         params = transformMap(params);
@@ -90,8 +88,8 @@
 
         addSortParams(newParams);
         addFilterParams(newParams);
-        newParams.putAll(_codec.buildPageParamMap(new Integer(pagerModel.getPreviousPage() * pagerModel.getPageSize()),
-                new Integer(pagerModel.getPageSize())));
+        newParams.putAll(_codec.buildPageParamMap(new Integer(pagerModel.getRowForPreviousPage()),
+                                                  new Integer(pagerModel.getPageSize())));
 
         params = mergeMaps(params, newParams);
         params = transformMap(params);
@@ -108,8 +106,8 @@
 
         addSortParams(newParams);
         addFilterParams(newParams);
-        newParams.putAll(_codec.buildPageParamMap(new Integer(pagerModel.getNextPage() * pagerModel.getPageSize()),
-                new Integer(pagerModel.getPageSize())));
+        newParams.putAll(_codec.buildPageParamMap(new Integer(pagerModel.getRowForNextPage()),
+                                                  new Integer(pagerModel.getPageSize())));
 
         params = mergeMaps(params, newParams);
         params = transformMap(params);
@@ -126,8 +124,8 @@
 
         addSortParams(newParams);
         addFilterParams(newParams);
-        newParams.putAll(_codec.buildPageParamMap(new Integer(pagerModel.getLastPage() * pagerModel.getPageSize()),
-                new Integer(pagerModel.getPageSize())));
+        newParams.putAll(_codec.buildPageParamMap(new Integer(pagerModel.getRowForLastPage()),
+                                                  new Integer(pagerModel.getPageSize())));
 
         params = mergeMaps(params, newParams);
         params = transformMap(params);
@@ -138,9 +136,9 @@
     public String[] getPagerParamValues() {
         PagerModel pagerModel = getDataGridState().getPagerModel();
 
-        String[] params = new String[pagerModel.getLastPage() + 1];
+        String[] params = new String[pagerModel.getPageCount()];
         for(int i = 0; i < params.length; i++) {
-            params[i] = _codec.encodePageSize(i * pagerModel.getPageSize());
+            params[i] = _codec.encodePageSize(pagerModel.encodeRowForPage(i));
         }
 
         return params;

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/FirstPreviousNextLastPagerRenderer.java Thu Apr 14 08:46:57 2005
@@ -38,7 +38,7 @@
         /* Page # of #  First / Previous   Next / Last */
         buf.append(getDataGridTagModel().formatMessage(IDataGridMessageKeys.PAGER_FMT_BANNER,
                                                        new Integer[]{new Integer(currentPage + 1),
-                                                                     new Integer(pagerModel.getLastPage() + 1)}));
+                                                                     new Integer(lastPage + 1)}));
 
         buf.append("&nbsp;&nbsp;");
         if(currentPage > pagerModel.getFirstPage())

Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java (original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/runtime/rendering/pager/PreviousNextPagerRenderer.java Thu Apr 14 08:46:57 2005
@@ -33,18 +33,19 @@
         int lastPage = pagerModel.getLastPage();
 
         buf.append(getDataGridTagModel().formatMessage(IDataGridMessageKeys.PAGER_FMT_BANNER,
-                new Integer[]{new Integer(currentPage + 1),
-                              new Integer(pagerModel.getLastPage() + 1)}));
+                                                       new Object[]{new Integer(currentPage + 1),
+                                                                    new Integer(lastPage  + 1)}));
+
         buf.append("&nbsp;&nbsp;");
-        if(pagerModel.getPreviousPage() >= 0)
+        if(pagerModel.getPreviousPage() > -1)
             buf.append(buildLivePreviousLink());
-        else if(lastPage > 1)
+        else if(lastPage > 0)
             buf.append(buildDeadPreviousLink());
 
         buf.append("&nbsp;");
         if(pagerModel.getNextPage() <= pagerModel.getLastPage())
             buf.append(buildLiveNextPageLink());
-        else if(lastPage > 1)
+        else if(lastPage > 0)
             buf.append(buildDeadNextLink());
 
         return buf.toString();

Modified: incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java (original)
+++ incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/datagrid/PagerModelTest.java Thu Apr 14 08:46:57 2005
@@ -42,7 +42,7 @@
         DataGridTagModel dgm = DataGridTestUtil.getDataGridTagModel(_jspContext);
         PagerModel pm = DataGridTestUtil.getPagerModel(dgm);
 
-        assertEquals("Invalid page", PagerModel.DEFAULT_PAGE, pm.getPage());
+        assertEquals("Invalid page", 0, pm.getPage());
         assertEquals("Invalid page size", pm.getDefaultPageSize(), pm.getPageSize());
         assertEquals("Invalid row", PagerModel.DEFAULT_ROW, pm.getRow());
     }
@@ -62,6 +62,8 @@
         assertEquals("Invalid page", 2, pm.getPage());
         assertEquals("Invalid page size", 2, pm.getPageSize());
         assertEquals("Invalid row", 4, pm.getRow());
+        assertEquals("Invalid previous page row", 2, pm.getRowForPreviousPage());
+        assertEquals("Invalid last page row", 10, pm.getRowForLastPage());
 
         DataGridURLBuilder urlBuilder = DataGridTestUtil.createDataGridURLBuilder(DataGridTestUtil.getRequest(_jspContext), name);
         Map queryParams = urlBuilder.getQueryParamsForFirstPage();
@@ -87,13 +89,13 @@
           current page: 2
          */
         String name = "bugs";
-        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;7&netui_pagesize=bugs;3");
+        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;6&netui_pagesize=bugs;3");
         DataGridTagModel dgm = DataGridTestUtil.getDataGridTagModel(_jspContext, name);
         PagerModel pm = DataGridTestUtil.getPagerModel(dgm);
 
         assertEquals("Invalid page", 2, pm.getPage());
         assertEquals("Invalid page size", 3, pm.getPageSize());
-        assertEquals("Invalid row", 7, pm.getRow());
+        assertEquals("Invalid row", 6, pm.getRow());
     }
 
     public void testPagerModelPageSizeOverride() {
@@ -103,23 +105,23 @@
           current page: 2
          */
         String name = "bugs";
-        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;7&netui_pagesize=bugs;3");
+        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;6&netui_pagesize=bugs;3");
         DataGridTagModel dgm = DataGridTestUtil.getDataGridTagModel(_jspContext, name);
         PagerModel pm = DataGridTestUtil.getPagerModel(dgm);
 
         assertEquals(2, pm.getPage());
         assertEquals(3, pm.getPageSize());
-        assertEquals(7, pm.getRow());
+        assertEquals(6, pm.getRow());
 
         pm.setPageSize(12);
         pm.setRow(0); /* this explicitly sets the current row to the beginning */
         assertEquals(12, pm.getPageSize());
         assertEquals(10, pm.getDefaultPageSize());
-        assertEquals(0, pm.getLastPage());
+        assertEquals(0, pm.getRowForLastPage());
         assertEquals(11, pm.getLastRowForPage());
-        assertEquals(0, pm.getFirstPage());
-        /* todo: not sure if this is right -- the nextPage should probably be 0 */
-        assertEquals(1, pm.getNextPage());
+        assertEquals(0, pm.getRowForFirstPage());
+        /* todo: since there is no next page, should this be NO_SUCH_PAGE? */
+        assertEquals(12, pm.getRowForNextPage());
     }
 
     public void testPagerModel3() {
@@ -129,17 +131,18 @@
           current page: 0
           last page: 1
          */
-        DataGridTestUtil.initQueryString(_jspContext, "netui_row=" + DataGridTestUtil.DEFAULT_DATA_GRID_NAME + ";9");
+        DataGridTestUtil.initQueryString(_jspContext, "netui_row=" + DataGridTestUtil.DEFAULT_DATA_GRID_NAME + ";0");
         DataGridTagModel dgm = DataGridTestUtil.getDataGridTagModel(_jspContext);
         PagerModel pm = DataGridTestUtil.getPagerModel(dgm);
         pm.setPageSize(5);
+        /* 12: 0-4, 5-9, 10-15 _lastRow=10*/
 
-        assertEquals("Invalid page", 1, pm.getPage());
+        assertEquals("Invalid page", 0, pm.getPage());
         assertEquals("Invalid page size", 5, pm.getPageSize());
-        assertEquals("Invalid row", 9, pm.getRow());
-        assertEquals("Invalid last page", 2, pm.getLastPage());
-        assertEquals("Invalid previous page", 0, pm.getPreviousPage());
-        assertEquals("Invalid next page", 2, pm.getNextPage());
+        assertEquals("Invalid row", 0, pm.getRow());
+        assertEquals("Invalid last page", 10, pm.getRowForLastPage());
+        assertEquals("Invalid previous page", -1, pm.getRowForPreviousPage());
+        assertEquals("Invalid next page", 5, pm.getRowForNextPage());
 
         String[] pagerParamValules = dgm.getUrlBuilder().getPagerParamValues();
         assertNotNull("Expected non-null pagerParamValues", pagerParamValules);
@@ -163,9 +166,9 @@
         assertEquals("Invalid page", 0, pm.getPage());
         assertEquals("Invalid page size", 2, pm.getPageSize());
         assertEquals("Invalid row", 0, pm.getRow());
-        assertEquals("Invalid last page", 5, pm.getLastPage());
-        assertEquals("Invalid previous page", -1, pm.getPreviousPage());
-        assertEquals("Invalid next page", 1, pm.getNextPage());
+        assertEquals("Invalid last page", 10, pm.getRowForLastPage());
+        assertEquals("Invalid previous page", -1, pm.getRowForPreviousPage());
+        assertEquals("Invalid next page", 2, pm.getRowForNextPage());
     }
 
     public void testPagerModel_emptyURL() {
@@ -176,66 +179,109 @@
 
         assertNotNull("Expected non-null PagerModel", pm);
         assertEquals("Invalid current row", PagerModel.DEFAULT_ROW, pm.getRow());
-        assertEquals("Invalid page", PagerModel.DEFAULT_PAGE, pm.getPage());
+        assertEquals("Invalid page", 0, pm.getPage());
         assertEquals("Invalid page size", pm.getDefaultPageSize(), pm.getPageSize());
-        assertEquals("Invalid first page", PagerModel.DEFAULT_PAGE, pm.getFirstPage());
-        assertEquals("Invalid next page", 1, pm.getNextPage());
+        assertEquals("Invalid first page", 0, pm.getRowForFirstPage());
+        assertEquals("Invalid next page", 10, pm.getRowForNextPage());
 
         boolean threw = false;
         try {
-            pm.getLastPage();
+            pm.getRowForLastPage();
         } catch(Exception e) {
             threw = true;
         }
-        assertTrue("Expected exception when calling getLastPage", threw);
+        assertTrue("Expected exception when calling getRowForLastPage", threw);
 
         pm.setDataSetSize(20);
 
-        assertEquals("Invalid last page", 1, pm.getLastPage());
-        assertEquals("Previous page", -1, pm.getPreviousPage());
+        assertEquals("Invalid last page", 10, pm.getRowForLastPage());
+        assertEquals("Previous page", -1, pm.getRowForPreviousPage());
     }
 
     public void testPagerModel5() {
         String namespace = "bugs";
 
-        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;21");
+        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;20");
         DataGridState state = DataGridTestUtil.createDataGridState(_jspContext, namespace);
         PagerModel pm = state.getPagerModel();
 
-        assertEquals("Invalid current row", 21, pm.getRow());
+        assertEquals("Invalid current row", 20, pm.getRow());
         assertEquals("Invalid current page", 2, pm.getPage());
-        assertEquals("Invalid first page", PagerModel.DEFAULT_PAGE, pm.getFirstPage());
-        assertEquals("Invalid next page", 3, pm.getNextPage());
-        assertEquals("Invalid previous page", 1, pm.getPreviousPage());
+        assertEquals("Invalid first page", 0, pm.getRowForFirstPage());
+        assertEquals("Invalid next page", 30, pm.getRowForNextPage());
+        assertEquals("Invalid previous page", 10, pm.getRowForPreviousPage());
     }
 
     public void testPagerModel6() {
         String namespace = "bugs";
 
-        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;21&netui_pagesize=bugs;6");
+        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;18&netui_pagesize=bugs;6");
         DataGridState state = DataGridTestUtil.createDataGridState(_jspContext, namespace);
         PagerModel pm = state.getPagerModel();
 
-        assertEquals("Invalid current row", 21, pm.getRow());
+        assertEquals("Invalid current row", 18, pm.getRow());
         assertEquals("Invalid current page", 3, pm.getPage());
     }
 
     public void testPagerModel7() {
         String namespace = "bugs";
 
-        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;21&netui_pagesize=bugs;6&netui_row=issues;39");
+        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;18&netui_pagesize=bugs;6&netui_row=issues;30");
         DataGridState state = DataGridTestUtil.createDataGridState(_jspContext, namespace);
         PagerModel pm = state.getPagerModel();
 
-        assertEquals("Invalid current row", 21, pm.getRow());
+        assertEquals("Invalid current row", 18, pm.getRow());
         assertEquals("Invalid current page", 3, pm.getPage());
 
         state = DataGridTestUtil.createDataGridState(_jspContext, "issues");
         pm = state.getPagerModel();
-        assertEquals("Invalid current row", 39, pm.getRow());
+        assertEquals("Invalid current row", 30, pm.getRow());
         assertEquals("Invalid current page size", 10, pm.getPageSize());
         assertEquals("Invalid current page", 3, pm.getPage());
 
+    }
+
+    public void testPagerModelAPI1() {
+        String namespace = "bugs";
+
+        /*
+        0-5, 6-11, 12-17, 18-23, 24-29, 30-35
+         */
+        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;21&netui_pagesize=bugs;6");
+        DataGridState state = DataGridTestUtil.createDataGridState(_jspContext, namespace);
+        PagerModel pm = state.getPagerModel();
+        pm.setDataSetSize(32);
+
+        assertEquals("Invalid current row", 18, pm.getRow());
+        assertEquals("Invalid current page", 3, pm.getPage());
+
+        assertEquals("Invalid first row", 0, pm.getRowForFirstPage());
+        assertEquals("Invalid previous row", 12, pm.getRowForPreviousPage());
+        assertEquals("Invalid next row", 24, pm.getRowForNextPage());
+        assertEquals("Invalid last row", 30, pm.getRowForLastPage());
+
+        assertEquals("Invalid first page", 0, pm.getFirstPage());
+        assertEquals("Invalid next page", 4, pm.getNextPage());
+        assertEquals("Invalid previous page", 2, pm.getPreviousPage());
+        assertEquals("Invalid last page", 5, pm.getLastPage());
+
+        pm.setRow(15);
+        assertEquals("Invalid current row", 12, pm.getRow());
+    }
+
+    public void testPagerModelAPI2() {
+        String namespace = "bugs";
+
+        /*
+        0-5, 6-11, 12-17, 18-23, 24-29, 30-35
+         */
+        DataGridTestUtil.initQueryString(_jspContext, "netui_row=bugs;21&netui_pagesize=bugs;6");
+        DataGridState state = DataGridTestUtil.createDataGridState(_jspContext, namespace);
+        PagerModel pm = state.getPagerModel();
+        pm.setDataSetSize(32);
+
+        pm.setRow(10000);
+        assertEquals("Invalid row value", 30, pm.getRow());
     }
 
     protected void setUp() {

Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ401.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ401.xml?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ401.xml (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ401.xml Thu Apr 14 08:46:57 2005
@@ -2,7 +2,7 @@
 <ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
    <ses:sessionName>DataGridJ401</ses:sessionName>
    <ses:tester>ekoneil</ses:tester>
-   <ses:startDate>28 Mar 2005, 10:00:49.676 AM MST</ses:startDate>
+   <ses:startDate>13 Apr 2005, 06:38:36.030 PM MDT</ses:startDate>
    <ses:description>ekoneil</ses:description>
    <ses:tests>
       <ses:test>
@@ -18,11 +18,15 @@
             <ses:cookies>
                <ses:cookie>
                   <ses:name>JSESSIONID</ses:name>
-                  <ses:value>6D9A0E4D16726C6C36980DA06DA53511</ses:value>
+                  <ses:value>B5BFBFE67A05AB0D2349F4C3C285B325</ses:value>
                </ses:cookie>
             </ses:cookies>
             <ses:headers>
                <ses:header>
+                  <ses:name>---------------</ses:name>
+                  <ses:value>------------</ses:value>
+               </ses:header>
+               <ses:header>
                   <ses:name>accept</ses:name>
                   <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
                </ses:header>
@@ -31,10 +35,6 @@
                   <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
                </ses:header>
                <ses:header>
-                  <ses:name>accept-encoding</ses:name>
-                  <ses:value>gzip,deflate</ses:value>
-               </ses:header>
-               <ses:header>
                   <ses:name>accept-language</ses:name>
                   <ses:value>en-us,en;q=0.5</ses:value>
                </ses:header>
@@ -44,7 +44,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>cookie</ses:name>
-                  <ses:value>$Version=0; JSESSIONID=6D9A0E4D16726C6C36980DA06DA53511; $Path=/coreWeb</ses:value>
+                  <ses:value>$Version=0; JSESSIONID=B5BFBFE67A05AB0D2349F4C3C285B325; $Path=/coreWeb</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>host</ses:name>
@@ -56,7 +56,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>testrecorder.playback.testid</ses:name>
-                  <ses:value>-f8b261f:102ea158ee8:-7fd0</ses:value>
+                  <ses:value>-6cb86934:1033e1b7a0a:-7ef3</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>user-agent</ses:name>
@@ -80,7 +80,7 @@
          BEEHIVE-401 Index Page
       </p>
       <p>
-         Page 1 of 2&nbsp;&nbsp;&nbsp;<a href="/coreWeb/databinding/datagrid/j401/index.jsp?netui_row=myDataGrid%3B10">Next</a>
+         Page 1 of 2&nbsp;&nbsp;Previous&nbsp;<a href="/coreWeb/databinding/datagrid/j401/index.jsp?netui_row=myDataGrid%3B10">Next</a>
 <table class="datagrid">
 
             
@@ -200,11 +200,15 @@
             <ses:cookies>
                <ses:cookie>
                   <ses:name>JSESSIONID</ses:name>
-                  <ses:value>6D9A0E4D16726C6C36980DA06DA53511</ses:value>
+                  <ses:value>B5BFBFE67A05AB0D2349F4C3C285B325</ses:value>
                </ses:cookie>
             </ses:cookies>
             <ses:headers>
                <ses:header>
+                  <ses:name>---------------</ses:name>
+                  <ses:value>------------</ses:value>
+               </ses:header>
+               <ses:header>
                   <ses:name>accept</ses:name>
                   <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
                </ses:header>
@@ -213,10 +217,6 @@
                   <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
                </ses:header>
                <ses:header>
-                  <ses:name>accept-encoding</ses:name>
-                  <ses:value>gzip,deflate</ses:value>
-               </ses:header>
-               <ses:header>
                   <ses:name>accept-language</ses:name>
                   <ses:value>en-us,en;q=0.5</ses:value>
                </ses:header>
@@ -226,7 +226,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>cookie</ses:name>
-                  <ses:value>$Version=0; JSESSIONID=6D9A0E4D16726C6C36980DA06DA53511; $Path=/coreWeb</ses:value>
+                  <ses:value>$Version=0; JSESSIONID=B5BFBFE67A05AB0D2349F4C3C285B325; $Path=/coreWeb</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>host</ses:name>
@@ -238,7 +238,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>testrecorder.playback.testid</ses:name>
-                  <ses:value>-f8b261f:102ea158ee8:-7fd0</ses:value>
+                  <ses:value>-6cb86934:1033e1b7a0a:-7ef3</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>user-agent</ses:name>
@@ -262,7 +262,7 @@
          BEEHIVE-401 Index Page
       </p>
       <p>
-         Page 2 of 2&nbsp;&nbsp;<a href="/coreWeb/databinding/datagrid/j401/index.jsp">Previous</a>&nbsp;
+         Page 2 of 2&nbsp;&nbsp;<a href="/coreWeb/databinding/datagrid/j401/index.jsp">Previous</a>&nbsp;Next
 <table class="datagrid">
 
             
@@ -305,7 +305,7 @@
 </html>]]></ses:responseBody>
          </ses:response>
          <ses:testResults>
-            <ses:testStatus>pass</ses:testStatus>
+            <ses:testStatus>fail</ses:testStatus>
          </ses:testResults>
       </ses:test>
       <ses:test>
@@ -321,11 +321,15 @@
             <ses:cookies>
                <ses:cookie>
                   <ses:name>JSESSIONID</ses:name>
-                  <ses:value>6D9A0E4D16726C6C36980DA06DA53511</ses:value>
+                  <ses:value>B5BFBFE67A05AB0D2349F4C3C285B325</ses:value>
                </ses:cookie>
             </ses:cookies>
             <ses:headers>
                <ses:header>
+                  <ses:name>---------------</ses:name>
+                  <ses:value>------------</ses:value>
+               </ses:header>
+               <ses:header>
                   <ses:name>accept</ses:name>
                   <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
                </ses:header>
@@ -334,10 +338,6 @@
                   <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
                </ses:header>
                <ses:header>
-                  <ses:name>accept-encoding</ses:name>
-                  <ses:value>gzip,deflate</ses:value>
-               </ses:header>
-               <ses:header>
                   <ses:name>accept-language</ses:name>
                   <ses:value>en-us,en;q=0.5</ses:value>
                </ses:header>
@@ -347,7 +347,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>cookie</ses:name>
-                  <ses:value>$Version=0; JSESSIONID=6D9A0E4D16726C6C36980DA06DA53511; $Path=/coreWeb</ses:value>
+                  <ses:value>$Version=0; JSESSIONID=B5BFBFE67A05AB0D2349F4C3C285B325; $Path=/coreWeb</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>host</ses:name>
@@ -359,7 +359,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>testrecorder.playback.testid</ses:name>
-                  <ses:value>-f8b261f:102ea158ee8:-7fd0</ses:value>
+                  <ses:value>-6cb86934:1033e1b7a0a:-7ef3</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>user-agent</ses:name>
@@ -383,7 +383,7 @@
          BEEHIVE-401 Index Page
       </p>
       <p>
-         Page 1 of 2&nbsp;&nbsp;&nbsp;<a href="/coreWeb/databinding/datagrid/j401/index.jsp?netui_row=myDataGrid%3B10">Next</a>
+         Page 1 of 2&nbsp;&nbsp;Previous&nbsp;<a href="/coreWeb/databinding/datagrid/j401/index.jsp?netui_row=myDataGrid%3B10">Next</a>
 <table class="datagrid">
 
             
@@ -486,9 +486,9 @@
          </ses:testResults>
       </ses:test>
    </ses:tests>
-   <ses:endDate>28 Mar 2005, 10:00:52.079 AM MST</ses:endDate>
+   <ses:endDate>13 Apr 2005, 06:38:38.453 PM MDT</ses:endDate>
    <ses:sessionStatus>fail</ses:sessionStatus>
    <ses:testCount>3</ses:testCount>
-   <ses:passedCount>1</ses:passedCount>
-   <ses:failedCount>2</ses:failedCount>
+   <ses:passedCount>0</ses:passedCount>
+   <ses:failedCount>3</ses:failedCount>
 </ses:recorderSession>

Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ420.xml
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ420.xml?view=diff&r1=161309&r2=161310
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ420.xml (original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DataGridJ420.xml Thu Apr 14 08:46:57 2005
@@ -2,7 +2,7 @@
 <ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
    <ses:sessionName>DataGridJ420</ses:sessionName>
    <ses:tester>ekoneil</ses:tester>
-   <ses:startDate>28 Mar 2005, 10:00:52.189 AM MST</ses:startDate>
+   <ses:startDate>13 Apr 2005, 06:38:38.814 PM MDT</ses:startDate>
    <ses:description>ekoneil</ses:description>
    <ses:tests>
       <ses:test>
@@ -18,11 +18,15 @@
             <ses:cookies>
                <ses:cookie>
                   <ses:name>JSESSIONID</ses:name>
-                  <ses:value>6D9A0E4D16726C6C36980DA06DA53511</ses:value>
+                  <ses:value>B5BFBFE67A05AB0D2349F4C3C285B325</ses:value>
                </ses:cookie>
             </ses:cookies>
             <ses:headers>
                <ses:header>
+                  <ses:name>---------------</ses:name>
+                  <ses:value>------------</ses:value>
+               </ses:header>
+               <ses:header>
                   <ses:name>accept</ses:name>
                   <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
                </ses:header>
@@ -31,10 +35,6 @@
                   <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
                </ses:header>
                <ses:header>
-                  <ses:name>accept-encoding</ses:name>
-                  <ses:value>gzip,deflate</ses:value>
-               </ses:header>
-               <ses:header>
                   <ses:name>accept-language</ses:name>
                   <ses:value>en-us,en;q=0.5</ses:value>
                </ses:header>
@@ -44,7 +44,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>cookie</ses:name>
-                  <ses:value>$Version=0; JSESSIONID=6D9A0E4D16726C6C36980DA06DA53511; $Path=/coreWeb</ses:value>
+                  <ses:value>$Version=0; JSESSIONID=B5BFBFE67A05AB0D2349F4C3C285B325; $Path=/coreWeb</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>host</ses:name>
@@ -56,7 +56,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>testrecorder.playback.testid</ses:name>
-                  <ses:value>-f8b261f:102ea158ee8:-7fcc</ses:value>
+                  <ses:value>-6cb86934:1033e1b7a0a:-7eef</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>user-agent</ses:name>
@@ -80,7 +80,7 @@
          BEEHIVE-420 Index Page
       </p>
       <p>
-         Page 1 of 2&nbsp;&nbsp;&nbsp;<a href="/coreWeb/databinding/datagrid/j420/index.jsp?netui_row=myDataGrid%3B10">Next</a>
+         Page 1 of 2&nbsp;&nbsp;Previous&nbsp;<a href="/coreWeb/databinding/datagrid/j420/index.jsp?netui_row=myDataGrid%3B10">Next</a>
 <table class="datagrid">
 
             
@@ -208,11 +208,15 @@
             <ses:cookies>
                <ses:cookie>
                   <ses:name>JSESSIONID</ses:name>
-                  <ses:value>6D9A0E4D16726C6C36980DA06DA53511</ses:value>
+                  <ses:value>B5BFBFE67A05AB0D2349F4C3C285B325</ses:value>
                </ses:cookie>
             </ses:cookies>
             <ses:headers>
                <ses:header>
+                  <ses:name>---------------</ses:name>
+                  <ses:value>------------</ses:value>
+               </ses:header>
+               <ses:header>
                   <ses:name>accept</ses:name>
                   <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
                </ses:header>
@@ -221,10 +225,6 @@
                   <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
                </ses:header>
                <ses:header>
-                  <ses:name>accept-encoding</ses:name>
-                  <ses:value>gzip,deflate</ses:value>
-               </ses:header>
-               <ses:header>
                   <ses:name>accept-language</ses:name>
                   <ses:value>en-us,en;q=0.5</ses:value>
                </ses:header>
@@ -234,7 +234,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>cookie</ses:name>
-                  <ses:value>$Version=0; JSESSIONID=6D9A0E4D16726C6C36980DA06DA53511; $Path=/coreWeb</ses:value>
+                  <ses:value>$Version=0; JSESSIONID=B5BFBFE67A05AB0D2349F4C3C285B325; $Path=/coreWeb</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>host</ses:name>
@@ -246,7 +246,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>testrecorder.playback.testid</ses:name>
-                  <ses:value>-f8b261f:102ea158ee8:-7fcc</ses:value>
+                  <ses:value>-6cb86934:1033e1b7a0a:-7eef</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>user-agent</ses:name>
@@ -270,7 +270,7 @@
          BEEHIVE-420 Index Page
       </p>
       <p>
-         Page 2 of 2&nbsp;&nbsp;<a href="/coreWeb/databinding/datagrid/j420/index.jsp">Previous</a>&nbsp;
+         Page 2 of 2&nbsp;&nbsp;<a href="/coreWeb/databinding/datagrid/j420/index.jsp">Previous</a>&nbsp;Next
 <table class="datagrid">
 
             
@@ -305,7 +305,7 @@
 </html>]]></ses:responseBody>
          </ses:response>
          <ses:testResults>
-            <ses:testStatus>pass</ses:testStatus>
+            <ses:testStatus>fail</ses:testStatus>
          </ses:testResults>
       </ses:test>
       <ses:test>
@@ -321,11 +321,15 @@
             <ses:cookies>
                <ses:cookie>
                   <ses:name>JSESSIONID</ses:name>
-                  <ses:value>6D9A0E4D16726C6C36980DA06DA53511</ses:value>
+                  <ses:value>B5BFBFE67A05AB0D2349F4C3C285B325</ses:value>
                </ses:cookie>
             </ses:cookies>
             <ses:headers>
                <ses:header>
+                  <ses:name>---------------</ses:name>
+                  <ses:value>------------</ses:value>
+               </ses:header>
+               <ses:header>
                   <ses:name>accept</ses:name>
                   <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
                </ses:header>
@@ -334,10 +338,6 @@
                   <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
                </ses:header>
                <ses:header>
-                  <ses:name>accept-encoding</ses:name>
-                  <ses:value>gzip,deflate</ses:value>
-               </ses:header>
-               <ses:header>
                   <ses:name>accept-language</ses:name>
                   <ses:value>en-us,en;q=0.5</ses:value>
                </ses:header>
@@ -347,7 +347,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>cookie</ses:name>
-                  <ses:value>$Version=0; JSESSIONID=6D9A0E4D16726C6C36980DA06DA53511; $Path=/coreWeb</ses:value>
+                  <ses:value>$Version=0; JSESSIONID=B5BFBFE67A05AB0D2349F4C3C285B325; $Path=/coreWeb</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>host</ses:name>
@@ -359,7 +359,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>testrecorder.playback.testid</ses:name>
-                  <ses:value>-f8b261f:102ea158ee8:-7fcc</ses:value>
+                  <ses:value>-6cb86934:1033e1b7a0a:-7eef</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>user-agent</ses:name>
@@ -383,7 +383,7 @@
          BEEHIVE-420 Index Page
       </p>
       <p>
-         Page 1 of 2&nbsp;&nbsp;&nbsp;<a href="/coreWeb/databinding/datagrid/j420/index.jsp?netui_row=myDataGrid%3B10">Next</a>
+         Page 1 of 2&nbsp;&nbsp;Previous&nbsp;<a href="/coreWeb/databinding/datagrid/j420/index.jsp?netui_row=myDataGrid%3B10">Next</a>
 <table class="datagrid">
 
             
@@ -494,9 +494,9 @@
          </ses:testResults>
       </ses:test>
    </ses:tests>
-   <ses:endDate>28 Mar 2005, 10:00:53.221 AM MST</ses:endDate>
+   <ses:endDate>13 Apr 2005, 06:38:40.927 PM MDT</ses:endDate>
    <ses:sessionStatus>fail</ses:sessionStatus>
    <ses:testCount>3</ses:testCount>
-   <ses:passedCount>1</ses:passedCount>
-   <ses:failedCount>2</ses:failedCount>
+   <ses:passedCount>0</ses:passedCount>
+   <ses:failedCount>3</ses:failedCount>
 </ses:recorderSession>