[jboss-svn-commits] JBL Code SVN: r6895 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client main/java/org/drools/brms/client/common main/java/org/drools/brms/client/rpc main/java/org/drools/brms/client/rpc/mock main/java/org/drools/brms/client/rulelist main/java/org/drools/brms/client/table main/java/org/drools/brms/public main/java/org/drools/brms/public/images main/java/org/drools/brms/server test/java/org/drools/brms/server

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Oct 18 13:10:39 EDT 2006


Author: michael.neale at jboss.com
Date: 2006-10-18 13:10:20 -0400 (Wed, 18 Oct 2006)
New Revision: 6895

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/TableHeaderSortWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataRow.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/RowData.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/up_down.gif
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java
Removed:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/SortableGrid.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
Log:
new ajax table wizardry

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/Search.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -15,12 +15,11 @@
  */
 package org.drools.brms.client;
 
-import org.drools.brms.client.common.SortableGrid;
+import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.rulelist.NewView;
+import org.drools.brms.client.table.SortableTable;
 
-import com.google.gwt.user.client.ui.FlexTable;
-import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.Grid;
 
 /**
  * Demonstrates {@link com.google.gwt.user.client.ui.Table}.
@@ -44,96 +43,145 @@
 
 
   public Search() {
+//      TableDataRow row = new TableDataRow();
+//      row.key = "DFFD6767FDS";
+//      row.values = new String[] {"one", "two", "three" };
+//      
+//      TableDataResult resultset = new TableDataResult();
+//      resultset.data = new TableDataRow[] {row};
+//      
+//      TableConfig config = new TableConfig();
+//      config.headers = new String[] {"foo", "bar", "baz" };
+//      config.rowsPerPage = 50;
+//       
+//      SortableGrid grid = new SortableGrid(resultset, config);
+//      initWidget( grid );
       
-      String[][] data = new String[][] {
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },                                        
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },                                        
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },                                        
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },                                        
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },  
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },
-                                        {"1", "rule", "another thing" },                                          
-      };
-      
-      SortableGrid grid = new SortableGrid(data, new String[] {"a","b","c"});
-      initWidget( grid );
+        final SortableTable sortableTable = new SortableTable(500, 4);
+        
+        sortableTable.setHiddenColumn( 0 );
+        
+        sortableTable.setWidth( "100%" );
+        sortableTable.addColumnHeader("Employee",  0);
+        sortableTable.addColumnHeader("Days", 1);
+        sortableTable.addColumnHeader("Hire Date", 2);
+        sortableTable.addColumnHeader("Bonus", 3);
+        
+        // The rowIndex should begin with 1 as rowIndex 0 is for the Header
+        // Any row with index == 0 will not be displayed.
+        sortableTable.setValue(1, 0, "Parvinder Thapar");
+        sortableTable.setValue(1, 1, new Integer(28));
+        sortableTable.setValue(1, 2, "2005, 10, 25");
+        sortableTable.setValue(1, 3, new Float("125.27"));
+
+        sortableTable.setValue(2, 0, "David Brooks");
+        sortableTable.setValue(2, 1, new Integer(32));
+        sortableTable.setValue(2, 2, "2000, 4, 1");
+        sortableTable.setValue(2, 3, new Float("105.78"));
+
+        sortableTable.setValue(3, 0, "Raj Rajendran");
+        sortableTable.setValue(3, 1, new Integer(30));
+        sortableTable.setValue(3, 2, "2001, 12, 9");
+        sortableTable.setValue(3, 3, new Float("236.82"));
+
+        sortableTable.setValue(4, 0, "Brian Foley");
+        sortableTable.setValue(4, 1, new Integer(38));
+        sortableTable.setValue(4, 2, "2003, 2, 24");
+        sortableTable.setValue(4, 3, new Float("489.29"));
+
+        sortableTable.setValue(5, 0, "Visala Dhara");
+        sortableTable.setValue(5, 1, new Integer(30));
+        sortableTable.setValue(5, 2, "2001, 4, 23");
+        sortableTable.setValue(5, 3, new Float("892.72"));
+
+        sortableTable.setValue(6, 0, "Wasim Khan");
+        sortableTable.setValue(6, 1, new Integer(35));
+        sortableTable.setValue(6, 2, "1999, 7, 10");
+        sortableTable.setValue(6, 3, new Float("1242.89"));
+
+        sortableTable.setValue(7, 0, "Bob Hammel");
+        sortableTable.setValue(7, 1, new Integer(56));
+        sortableTable.setValue(7, 2, "1995, 2, 14");
+        sortableTable.setValue(7, 3, new Float("107.21"));
+
+        sortableTable.setValue(8, 0, "Jeanie Sa-ville");
+        sortableTable.setValue(8, 1, new Integer(58));
+        sortableTable.setValue(8, 2, "1989, 6, 1");
+        sortableTable.setValue(8, 3, new Float("2372.42"));
+
+        sortableTable.setValue(9, 0, "Scott Loyet");
+        sortableTable.setValue(9, 1, new Integer(42));
+        sortableTable.setValue(9, 2, "1992, 2, 29");
+        sortableTable.setValue(9, 3, new Float("896.74"));
+
+        sortableTable.setValue(10, 0, "Dennis Twiss");
+        sortableTable.setValue(10, 1, new Integer(59));
+        sortableTable.setValue(10, 2, "1990, 4, 15");
+        sortableTable.setValue(10, 3, new Float("1896.74"));
+        
+        sortableTable.setValue(11, 0, "Mike McIntosh");
+        sortableTable.setValue(11, 1, new Integer(76));
+        sortableTable.setValue(11, 2, "1982, 5, 25");
+        sortableTable.setValue(11, 3, new Float("689.77"));
+        
+        sortableTable.setValue(12, 0, "Andrews Andy");
+        sortableTable.setValue(12, 1, new Integer(62));
+        sortableTable.setValue(12, 2, "1994, 1, 15");
+        sortableTable.setValue(12, 3, new Float("829.24"));
+
+        sortableTable.setValue(13, 0, "Bob Regent");
+        sortableTable.setValue(13, 1, new Integer(29));
+        sortableTable.setValue(13, 2, "1996, 3, 12");
+        sortableTable.setValue(13, 3, new Float("621.52"));
+        
+        sortableTable.setValue(14, 0, "Chris Chalmers");
+        sortableTable.setValue(14, 1, new Integer(32));
+        sortableTable.setValue(14, 2, "1997, 4, 1");
+        sortableTable.setValue(14, 3, new Float("804.26"));
+        
+        sortableTable.setValue(15, 0, "Christopher Mathrusse");
+        sortableTable.setValue(15, 1, new Integer(64));
+        sortableTable.setValue(15, 2, "2005, 9, 10");
+        sortableTable.setValue(15, 3, new Float("761.25"));
+        
+        sortableTable.setValue(16, 0, "John Smith");
+        sortableTable.setValue(16, 1, new Integer(56));
+        sortableTable.setValue(16, 2, "1992, 3, 16");
+        sortableTable.setValue(16, 3, new Float("789.29"));
+        
+        sortableTable.setValue(17, 0, "Jane Smith");
+        sortableTable.setValue(17, 1, new Integer(45));
+        sortableTable.setValue(17, 2, "1989, 7, 25");
+        sortableTable.setValue(17, 3, new Float("2254.87"));
+        
+        sortableTable.setValue(18, 0, "Jason Chen");
+        sortableTable.setValue(18, 1, new Integer(37));
+        sortableTable.setValue(18, 2, "1995, 8, 24");
+        sortableTable.setValue(18, 3, new Float("978.32"));
+        
+        sortableTable.setValue(19, 0, "Tina Matt");
+        sortableTable.setValue(19, 1, new Integer(49));
+        sortableTable.setValue(19, 2, "1998, 9, 15");
+        sortableTable.setValue(19, 3, new Float("189.64"));
+        
+        sortableTable.setValue(20, 0, "Roxanne Rocks");
+        sortableTable.setValue(20, 1, new Integer(43));
+        sortableTable.setValue(20, 2, "1992, 11, 12");
+        sortableTable.setValue(20, 3, new Float("1209.73"));
+
+//        for (int i = 21; i <= 500; i++) {
+//            sortableTable.setValue(i, 0, "Roxanne Rocks " + i);
+//            sortableTable.setValue(i, 1, new Integer(43));
+//            sortableTable.setValue(i, 2, "1992, 11, 12");
+//            sortableTable.setValue(i, 3, new Float("1209.73"));
+//            
+//        }
+        
+        TableConfig conf = new TableConfig();
+        conf.headers = new String[] {"name", "last modified", "status", "version" };
+        
+        NewView view = new NewView(conf);
+        initWidget( view );
   }
 
   public void onShow() {

Deleted: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/SortableGrid.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/SortableGrid.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/SortableGrid.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -1,59 +0,0 @@
-package org.drools.brms.client.common;
-
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlexTable;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.ScrollPanel;
-
-/**
- * This is the grid widget wrapper.
- * Main features are that it works off a data model, and 
- *
- */
-public class SortableGrid extends Composite {
-
-    ScrollPanel panel;
-    FlexTable   table = new FlexTable();
-    
-    
-    /**
-     * @param data The first column is the key. The rest are the displayed data.
-     * @param header This is obviously the header !
-     */
-    public SortableGrid(String[][] data, String[] header) {
-        panel = new ScrollPanel();
-        header( header );
-        
-        panel.setHeight( "50%" );
-        data( data );
-        
-        panel.setScrollPosition( 50 );
-        panel.setAlwaysShowScrollBars( true );
-        panel.add( table );
-        table.setWidth( "100%" );
-        initWidget( panel );        
-    }
-
-
-    private void data(String[][] data) {
-        for ( int i = 0; i < data.length; i++ ) {
-            String[] row = data[i];
-            int rowNumber = i + 1;
-            table.setText( rowNumber, 0, row[0] );
-            for ( int j = 1; j < row.length; j++ ) {
-                table.setText( rowNumber, j, row[j] );
-            }
-        }
-    }
-
-
-    private void header(String[] header) {
-        for ( int i = 0; i < header.length; i++ ) {
-            Label head = new Label(header[i]);           
-            table.setWidget( 0, i, head );          
-        }
-    }
-    
-    
-    
-}

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/TableHeaderSortWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/TableHeaderSortWidget.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/TableHeaderSortWidget.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -0,0 +1,15 @@
+package org.drools.brms.client.common;
+
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+
+public class TableHeaderSortWidget extends Composite {
+
+    
+    private HorizontalPanel panel;
+    
+    public TableHeaderSortWidget(String name) {
+        
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/TableHeaderSortWidget.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -1,6 +1,7 @@
 package org.drools.brms.client.rpc;
 
 import com.google.gwt.user.client.rpc.RemoteService;
+import com.google.gwt.user.client.rpc.SerializableException;
 
 /**
  * This is what the remote service will implement, as a servlet.
@@ -20,7 +21,7 @@
      * @param A "/" delimited path to a category.
      * @param status The status flag. Leave blank to be all.
      */
-    public String[][] loadRuleListForCategories(String categoryPath, String status);
+    public TableDataResult loadRuleListForCategories(String categoryPath, String status) throws SerializableException;
     
     /**
      * This will return a TableConfig of header names.
@@ -36,7 +37,7 @@
     /**
      * Creates a brand new rule with the initial category.
      */
-    public Boolean createNewRule(String ruleName, String description, String initialCategory, String initialPackage);
+    public Boolean createNewRule(String ruleName, String description, String initialCategory, String initialPackage) throws SerializableException;
     
     /**
      * This returns a list of packages where rules may be added.

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -1,13 +1,8 @@
-
 package org.drools.brms.client.rpc;
 
-
-
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.rpc.RemoteService;
 
-
-
 /**
 
  * This is what the remote service will implement, as a servlet.
@@ -16,10 +11,10 @@
 
  */
 
-public interface RepositoryServiceAsync extends RemoteService {
+public interface RepositoryServiceAsync
+    extends
+    RemoteService {
 
-
-
     /**
 
      * @param categoryPath A "/" delimited path to a category. 
@@ -28,11 +23,9 @@
 
      */
 
-        public void loadChildCategories(String categoryPath, AsyncCallback callback);
- 
+    public void loadChildCategories(String categoryPath,
+                                    AsyncCallback callback);
 
-    
-
     /**
 
      * Return a a 2d array/grid of results for rules.
@@ -43,8 +36,8 @@
 
      */
 
-        public void loadRuleListForCategories(String categoryPath, String status, AsyncCallback callback);
-    
+    public void loadRuleListForCategories(String categoryPath,
+                                                     String status, AsyncCallback callback);
 
     /**
 
@@ -54,8 +47,8 @@
 
      */
 
-        public void loadTableConfig(String listName, AsyncCallback callback);
-    
+    public void loadTableConfig(String listName,
+                                AsyncCallback callback);
 
     /**
 
@@ -63,8 +56,10 @@
 
      */
 
-        public void createCategory(String path, String name, String description, AsyncCallback callback);
-    
+    public void createCategory(String path,
+                               String name,
+                               String description,
+                               AsyncCallback callback);
 
     /**
 
@@ -72,8 +67,11 @@
 
      */
 
-        public void createNewRule(String ruleName, String description, String initialCategory, String initialPackage, AsyncCallback callback);
-    
+    public void createNewRule(String ruleName,
+                                 String description,
+                                 String initialCategory,
+                                 String initialPackage,
+                                 AsyncCallback callBack);
 
     /**
 
@@ -81,5 +79,5 @@
 
      */
 
-        public void listRulePackages(AsyncCallback callback);
+    public void listRulePackages(AsyncCallback callback);
 }

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -0,0 +1,17 @@
+package org.drools.brms.client.rpc;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * This contains the results returned to populate a table/grid.
+ * @author Michael Neale
+ */
+public class TableDataResult
+    implements
+    IsSerializable {
+
+    public int numberOfRows;
+    
+    public TableDataRow[] data;
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataResult.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataRow.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataRow.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataRow.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -0,0 +1,17 @@
+package org.drools.brms.client.rpc;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+/**
+ * This is a row of data from a table.
+ * @author michael neale
+ *
+ */
+public class TableDataRow
+    implements
+    IsSerializable {
+
+    public String key;
+    public String[] values;
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/TableDataRow.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -46,11 +46,13 @@
 
     public void loadRuleListForCategories(String categoryPath,
                                           String status,
-                                          AsyncCallback callback) {
+                                          AsyncCallback callback)  {
         log("loading rule list", "for cat path: " + categoryPath);
         String[][] data = { { "Rule 1", "Production", "mark", "2" },
                             { "Rule 2", "Production", "mark", "2" },
                             { "Rule 3", "Production", "mark", "2" }};
+        
+        
         callback.onSuccess( data );
         
     }

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -0,0 +1,58 @@
+package org.drools.brms.client.rulelist;
+
+import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.table.SortableTable;
+
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.ui.HasHorizontalAlignment;
+import com.google.gwt.user.client.ui.HasVerticalAlignment;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
+
+/**
+ * This is a viewer for viewing a list of rules for editing/selection.
+ */
+public class NewView extends Composite {
+    
+    private FlexTable outer = new FlexTable();
+    private SortableTable table;
+    private TableConfig config;
+    
+    public NewView(TableConfig conf) {
+    
+        FlexCellFormatter formatter = outer.getFlexCellFormatter();
+        this.config = conf;
+        //outer.setStyleName( SortableTable.styleList );
+        outer.setWidth( "100%" );
+        
+        outer.setWidget( 0, 0, new Label("left") );        
+        formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_MIDDLE );
+        
+        outer.setWidget( 0, 1, new Label("right") );
+        formatter.setAlignment( 0, 1, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_MIDDLE );
+                
+        
+        table = new SortableTable(50, conf.headers.length + 1);
+        table.setHiddenColumn( 0 );
+        table.addColumnHeader( "", 0 );
+        table.setWidth( "100%" );
+        
+        for ( int i = 0; i < conf.headers.length; i++ ) {
+            table.addColumnHeader( conf.headers[i], i + 1 );
+        }
+
+        ScrollPanel scroll = new ScrollPanel();
+        
+        scroll.setScrollPosition( 500 );
+        scroll.add( table );
+        
+        outer.setWidget( 1, 0, scroll );
+        formatter.setColSpan( 1, 0, 2 );
+       
+        initWidget( outer );
+        
+    }
+
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/NewView.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rulelist/RuleListView.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -25,6 +25,8 @@
     ClickListener {
 
     
+    public static final String RULE_LIST_TABLE_ID = "ruleList";
+
     private int                    visibleItemCount = -1;
 
     private HTML                   countLabel         = new HTML();
@@ -145,7 +147,7 @@
         table.getRowFormatter().setStyleName( 0, "rule-ListHeader" );  
         table.setText( 0, 0, "Please wait..." );    
         
-        service.loadTableConfig( "ruleList", new AsyncCallback() {
+        service.loadTableConfig( RULE_LIST_TABLE_ID, new AsyncCallback() {
 
             public void onFailure(Throwable caught) {
                 //TODO

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/RowData.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/RowData.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/RowData.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -0,0 +1,58 @@
+package org.drools.brms.client.table;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/** This is used to hold the data for sorting in a grid */
+public class RowData implements Comparable {
+	
+	List columnValues = new ArrayList();
+	int sortColIndex = 0;
+
+	public void addColumnValue(Comparable value){
+		this.columnValues.add(value);
+	}
+	
+	public void addColumnValue(int index, Comparable value){
+		if(index >= this.columnValues.size()){
+			addNullColumns(index);
+		}
+		this.columnValues.set(index, value);
+	}	
+
+	public Object getColumnValue(int index){
+		return this.columnValues.get(index);
+	}	
+	
+	public List getColumnValues() {
+		return columnValues;
+	}
+
+	public void setColumnValues(List columnValues) {
+		this.columnValues = columnValues;
+	}
+
+	public int getSortColIndex() {
+		return sortColIndex;
+	}
+
+	public void setSortColIndex(int sortColIndex) {
+		this.sortColIndex = sortColIndex;
+	}
+
+	public int compareTo(Object other) {
+		if(null == other){
+			return -1;
+		}
+		RowData otherRow = (RowData)other;
+		Comparable obj1 = (Comparable)this.getColumnValue(this.sortColIndex);
+		Comparable obj2 = (Comparable)otherRow.getColumnValue(this.sortColIndex);
+		return obj1.compareTo(obj2);
+	}
+	
+	private void addNullColumns(int index){
+		for(int nullIndex=this.columnValues.size(); nullIndex<=index; nullIndex++){
+			columnValues.add(null);
+		}
+	}
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/RowData.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -0,0 +1,341 @@
+package org.drools.brms.client.table;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Grid;
+import com.google.gwt.user.client.ui.SourcesTableEvents;
+import com.google.gwt.user.client.ui.TableListener;
+
+/**
+ * A sortable table widget. Extends the GWT Grid widget.
+ * (more performant then FlexTable).
+ */
+public class SortableTable extends Grid implements TableListener {
+	
+    
+    /** The stylez */
+    public static String styleListHeader = "rule-ListHeader";
+    public static String styleSelectedRow = "rule-SelectedRow";
+    public static String styleEvenRow = "rule-ListEvenRow";
+    public static String styleList = "rule-List";
+    
+    
+    private static int SORT_ASCENDING = 0;
+    private static int SORT_DESCENDING = 1;    
+    
+    /** vars for current storting state */
+	private int sortColIndex		=	-1;
+	private int sortDirection		=	-1;
+
+    /** Icons for sorting status */
+	private String ascendingIcon 	= "images/shuffle_up.gif";
+	private String descendingIcon	= "images/shuffle_down.gif";
+	private String blankImage		= "images/up_down.gif";
+
+	// Holds the data rows of the table
+	// This is a list of RowData Object
+	private List tableRows 			= new ArrayList();
+	
+	// Holds the data for the column headers
+	private List tableHeader 		= new ArrayList();
+    private int hideColumnIndex;
+    private int selectedRow;
+
+    
+	/** 
+     * Create a sortable table widget, of the specified proportions.
+     * The number of rows does NOT include the header. 
+	 */
+	public SortableTable(int rows, int cols){       
+		super(rows + 1, cols);		
+        
+		this.addTableListener(this);
+        setStyleName( styleList );
+        
+	}
+
+	/** 
+     * Adds a header, which will be at the zero index in the table.
+	 */
+	public void addColumnHeader(String name, int index){
+               
+		tableHeader.add(index, name);
+		this.renderTableHeader(name, index);
+	}
+
+    
+    /** 
+     * This can be used to ensure that a column is invisible.
+     * This will also include the header (first row)
+     * You would use this to allow a "key" column to be stored with the data.
+     * For example, a UUID for a rule. 
+     */
+    public void setHiddenColumn(int colIndex) {
+        this.hideColumnIndex = colIndex;
+        this.getCellFormatter().setVisible( 0, colIndex, false );
+    }
+    
+	/**
+     * This will store the value in the x,y position.
+     * Values must be comparable for sorting to work of course.
+	 */
+	public void setValue(int rowIndex, int colIndex, Comparable value){
+		// The rowIndex should begin with 1 as rowIndex 0 is for the Header
+		// Any row with index == 0 will not be displayed.
+        
+		if(rowIndex == 0){
+			return;
+		}
+        
+        //and do the zebra striping
+        if (rowIndex % 2 == 0) {           
+            getCellFormatter().setStyleName( rowIndex, colIndex, styleEvenRow  );
+        }
+        
+		if((rowIndex-1) >= this.tableRows.size() || null == tableRows.get(rowIndex-1)){
+			tableRows.add(rowIndex-1, new RowData());
+		}
+		
+		RowData rowData = (RowData)this.tableRows.get(rowIndex-1); 
+		rowData.addColumnValue(colIndex, value);
+		this.setHTML(rowIndex, colIndex, "" + value.toString()+ "");
+        
+        //and hiding the required column
+        if (colIndex == hideColumnIndex) {
+            getCellFormatter().setVisible( rowIndex, colIndex, false );
+        }
+	}
+    
+
+    /** This performs the sorting */
+	public void sort(int columnIndex){
+		Collections.sort(this.tableRows);
+		if(this.sortColIndex != columnIndex){
+			// New Column Header clicked
+			// Reset the sortDirection to ASC
+			this.sortDirection = SORT_ASCENDING;
+		}else{
+			// Reverse the sortDirection
+			this.sortDirection = (this.sortDirection == SORT_ASCENDING)? SORT_DESCENDING:SORT_ASCENDING; 
+		}
+		this.sortColIndex = columnIndex;
+	}
+	
+	/** 
+     * When a cell is clicked, the selected row is styled, and 
+     * the currently selected row is remembered.
+     * 
+     * If it was in-fact a header that was clicked, then it will sort the 
+     * data and redisplay the grid.
+	 */
+	public void onCellClicked(SourcesTableEvents sender, int row, int col) {
+
+        styleSelectedRow(row);
+		clickSort( row, col );
+	}
+    
+    /**
+     * This will apply the "highlight" for the selected row, and remove it from the previous
+     * one, and set the selectedRow.
+     */
+    private void styleSelectedRow(int row) {
+        if (row != 0) {
+            getRowFormatter().addStyleName( row , styleSelectedRow );
+            getRowFormatter().removeStyleName( selectedRow, styleSelectedRow );
+            selectedRow = row;
+        }
+    }
+    
+    /**
+     * @return The selected row index.
+     */
+    public int getSelectedRow() {
+        return this.selectedRow;
+    }
+         
+    /**
+     * This actually kicks off the sorting.
+     */
+    private void clickSort(int row,
+                           int col) {
+        if(row != 0){
+			return;
+		}
+		this.setSortColIndex(col);
+		this.sort(col);
+		this.drawTable();
+    }	
+
+	/*
+	 * getSortAscImage
+	 * 
+	 * Getter for Sort Ascending Image
+	 * 
+	 * @return String
+	 */
+	public String getSortAscImage() {
+		return ascendingIcon;
+	}
+
+	/*
+	 * setSortAscImage
+	 * 
+	 * Setter for Sort Ascending Image
+	 * 
+	 * @param relative path + image name (String)
+	 * e.g. images/asc.gif
+	 */
+	public void setSortAscImage(String sortAscImage) {
+		this.ascendingIcon = sortAscImage;
+	}
+
+	/*
+	 * getSortDescImage
+	 * 
+	 * Getter for Sort Descending Image
+	 * 
+	 * @return String
+	 */
+	public String getSortDescImage() {
+		return descendingIcon;
+	}
+
+	/*
+	 * setSortDescImgage
+	 * 
+	 * Setter for Sort Descending Image
+	 * 
+	 * @param relative path + image name (String)
+	 * e.g. images/desc.gif
+	 */
+	public void setSortDescImgage(String sortDescImgage) {
+		this.descendingIcon = sortDescImgage;
+	}
+	
+	/*
+	 * getBlankImage
+	 * 
+	 * Getter for blank Image
+	 * 
+	 * @return String
+	 */
+	public String getBlankImage() {
+		return blankImage;
+	}
+
+	/*
+	 * setBlankImage
+	 * 
+	 * Setter for the blank Image
+	 * 
+	 * @param relative path + image name (String)
+	 * e.g. images/blank.gif
+	 */
+	public void setBlankImage(String blankImage) {
+		this.blankImage = blankImage;
+	}
+	
+	/*
+	 * drawTable
+	 * 
+	 * Renders the header as well as the body 
+	 * of the table
+	 */
+	protected void drawTable(){
+		this.displayTableHeader();
+		this.displayTableBody();
+	}
+	
+	/*
+	 * displayTableHeader
+	 * 
+	 * Renders only the table header
+	 */
+	private void displayTableHeader(){
+		int colIndex=0;
+		for(Iterator colHeaderIter = this.tableHeader.iterator(); colHeaderIter.hasNext();){
+			String colHeader = (String)colHeaderIter.next();
+			this.renderTableHeader(colHeader, colIndex++);
+		}
+        
+    }
+	
+	/*
+	 * displayTableBody
+	 * 
+	 * Renders the body or the remaining rows of the table
+	 * except the header.
+	 * It checks the sort direction and displays the rows 
+	 * accordingly
+	 */
+	private void displayTableBody(){
+		if(this.sortDirection == SORT_ASCENDING || this.sortDirection == -1){
+			// Ascending order and Default Display
+			for(int rowIndex=0; rowIndex<tableRows.size(); rowIndex++){
+				RowData columns = (RowData)tableRows.get(rowIndex);
+				for(int colIndex=0; colIndex<columns.getColumnValues().size(); colIndex++){
+					Object value = columns.getColumnValue(colIndex);
+					if(null != value){
+						this.setHTML(rowIndex+1, colIndex, value.toString());
+					}
+				}
+			}
+		}else{
+			// Descending Order Display
+			for(int rowIndex=tableRows.size()-1, rowNum = 1; rowIndex>=0; rowIndex--, rowNum++){
+				RowData columns = (RowData)tableRows.get(rowIndex);
+				for(int colIndex=0; colIndex<columns.getColumnValues().size(); colIndex++){
+					Object value = columns.getColumnValue(colIndex);
+					if(null != value){
+						this.setHTML(rowNum, colIndex, value.toString());
+					}
+				}
+			}
+		}
+	}
+	
+	/*
+	 * setSortColIndex
+	 * 
+	 * Sets the current column index being sorted
+	 * 
+	 * @param column index being sorted (int)
+	 */
+	private void setSortColIndex(int sortIndex){
+		for(int rowIndex=0; rowIndex<tableRows.size(); rowIndex++){
+			RowData row = (RowData)tableRows.get(rowIndex);
+			row.setSortColIndex(sortIndex);
+		}
+	}
+	
+	/*
+	 * renderTableHeader
+	 * Renders a particular column in the Table Header
+	 * 
+	 * @param Column Name (String)
+	 * @param Column Index (int) 
+	 */
+	private void renderTableHeader(String name, int index){
+		StringBuffer headerText = new StringBuffer();
+		headerText.append(name);
+		headerText.append("&nbsp;<img border='0' src=");
+		if(this.sortColIndex == index){
+			if(this.sortDirection == SORT_ASCENDING){
+				headerText.append("'" + this.ascendingIcon + "' alt='Ascending' ");	
+			}else{
+				headerText.append("'" + this.descendingIcon + "' alt='Descending' ");
+			}
+		}else{
+			headerText.append("'" + this.blankImage + "'");
+		}
+		headerText.append("/>");
+
+		this.setHTML(0, index, headerText.toString());
+        getRowFormatter().setStyleName( 0, styleListHeader );
+    
+	}
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/table/SortableTable.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2006-10-18 17:10:20 UTC (rev 6895)
@@ -314,9 +314,10 @@
   width: 100%;
 }
 
+/* And the rule list stuff */
+
 .rule-ListHeader {
-	background-image: url(images/gray_gradient.gif);
-	background-repeat: repeat-x;
+	background-color: #F6F9ED;
 	font-weight: bold;
 }
 
@@ -325,17 +326,28 @@
 	background-repeat: repeat-x;
 }
 
-
-.infoProse {
-  margin: 8px;
+.rule-ListEvenRow {
+	background-color: #FDFCDC;
 }
 
 
 .rule-List {
-	border: 1px solid #AAAAAA;
+	border: 1px solid #87B3FF;
 	background-color: white;
-	font-size: 70%;
-	cursor: pointer;
+        font-family: Arial, sans-serif;
+        font-size: smaller;
+	/*cursor: pointer;*/
 	cursor: hand;
+        border-spacing: 0px;
+        border-collapse: collapse
 }
 
+/* end the rule list stuff */
+
+
+.infoProse {
+  margin: 8px;
+}
+
+
+

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/up_down.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/up_down.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -12,12 +12,16 @@
 
 import org.drools.brms.client.rpc.RepositoryService;
 import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rpc.TableDataRow;
 import org.drools.repository.CategoryItem;
 import org.drools.repository.RepositoryConfigurator;
 import org.drools.repository.RuleItem;
 import org.drools.repository.RulePackageItem;
 import org.drools.repository.RulesRepository;
+import org.drools.repository.RulesRepositoryException;
 
+import com.google.gwt.user.client.rpc.SerializableException;
 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
 
 /** 
@@ -65,11 +69,15 @@
     public Boolean createNewRule(String ruleName,
                                  String description,
                                  String initialCategory,
-                                 String initialPackage) {
-        RulePackageItem pkg = getRulesRepository().loadRulePackage( initialPackage );
-        RuleItem rule = pkg.addRule( ruleName, description );
-        rule.addCategory( initialCategory );
-        
+                                 String initialPackage) throws SerializableException {        
+        try {
+            RulePackageItem pkg = getRulesRepository().loadRulePackage( initialPackage );
+            pkg.addRule( ruleName,
+                                         description, initialCategory );
+
+        } catch (RulesRepositoryException e) {
+            throw new SerializableException(e.getMessage());
+        }
         return Boolean.TRUE;
     }
 
@@ -87,31 +95,23 @@
 
 
 
-    public String[][] loadRuleListForCategories(String categoryPath,
-                                                String status) {
-        log( "loading rule list",
-             "for cat path: " + categoryPath );
-        String[][] data = {{"Rule 1", "Production", "mark", "2"}, {"Rule 2", "Production", "mark", "2"}, {"Rule 3", "Production", "mark", "2"}};
-        return data;
+    public TableDataResult loadRuleListForCategories(String categoryPath,           
+                                                String status) throws SerializableException {
+        RulesRepository repo = getRulesRepository();
+
+        List list = repo.findRulesByCategory( categoryPath );
+        TableDisplayHandler handler = new TableDisplayHandler();
+        return handler.loadRuleListTable( list );
+        
     }
 
     public TableConfig loadTableConfig(String listName) {
-        log( "loading table config",
-             listName );
-       
-        final TableConfig config = new TableConfig();
-
-        config.headers = new String[]{"name", "status", "last updated by", "version"};
-        config.rowsPerPage = 30;
-        return config;
+        TableDisplayHandler handler = new TableDisplayHandler();
+        return handler.loadTableConfig(listName);
+        
     }
 
 
-
-    private void log(String serviceName,
-                     String message) {
-        System.out.println( "[" + serviceName + "] " + message );
-    }
     
     /** Get the rule repository for the "current" user */
     RulesRepository getRulesRepository() {

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -0,0 +1,64 @@
+package org.drools.brms.server;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.jcr.RepositoryException;
+
+import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rpc.TableDataRow;
+import org.drools.repository.RuleItem;
+
+import com.google.gwt.user.client.rpc.SerializableException;
+
+/**
+ * This utility class handles loading of tables.
+ * 
+ * This is to give some flexibility in what fields are displayed.
+ * This will likely be dynamic in the future (driven of user config stored in the 
+ * repository).
+ * 
+ * @author michael neale
+ */
+public class TableDisplayHandler {
+
+    
+    public TableDataResult loadRuleListTable(List list) throws SerializableException {
+        List data = new ArrayList();
+        
+        for ( Iterator iter = list.iterator(); iter.hasNext(); ) {
+            RuleItem rule = (RuleItem) iter.next();
+            TableDataRow row = new TableDataRow();
+            try {
+                row.key = rule.getNode().getUUID();
+                row.values = new String[4];
+                row.values[0] = rule.getName();
+                row.values[1] = rule.getLastModified().toString();
+                row.values[2] = rule.getStateDescription();                
+                row.values[3] = rule.getVersionNumber();
+                data.add( row );
+            } catch ( RepositoryException e ) {
+                throw new SerializableException(e.getMessage());
+            }            
+        }
+        TableDataResult result = new TableDataResult();
+        result.data = (TableDataRow[]) data.toArray( new TableDataRow[data.size()] );
+        result.numberOfRows = data.size();
+        return result;        
+    }
+    
+    public TableConfig loadTableConfig(String listName) {
+        final TableConfig config = new TableConfig();
+
+        config.headers = new String[]{"name", 
+                                      "last modified", 
+                                      "state", 
+                                      "version"};
+        config.rowsPerPage = 30;
+        return config;
+    }
+    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/TableDisplayHandler.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2006-10-18 17:08:30 UTC (rev 6894)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2006-10-18 17:10:20 UTC (rev 6895)
@@ -3,8 +3,13 @@
 import junit.framework.TestCase;
 
 import org.drools.brms.client.rpc.RepositoryService;
+import org.drools.brms.client.rpc.TableConfig;
+import org.drools.brms.client.rpc.TableDataResult;
+import org.drools.brms.client.rulelist.RuleListView;
 import org.drools.repository.CategoryItem;
 
+import com.google.gwt.user.client.rpc.SerializableException;
+
 public class ServiceImplementationTest extends TestCase {
 
   public void testCategory() throws Exception {
@@ -65,5 +70,44 @@
       
   }
 
+  public void testAttemptDupeRule() throws Exception {
+      MockJBRMSServiceServlet impl = new MockJBRMSServiceServlet();
+      CategoryItem cat = impl.repo.loadCategory( "/" );
+      cat.addCategory( "testAttemptDupeRule", "yeah" );
+      
+      impl.repo.createRulePackage("dupes", "yeah");
+      
+      impl.createNewRule( "testAttemptDupeRule", "ya", "testAttemptDupeRule", "dupes" );
+      
+      try {
+          impl.createNewRule( "testAttemptDupeRule", "ya", "testAttemptDupeRule", "dupes" );
+          fail("should not allow duplicates.");
+      } catch (SerializableException e) {
+          assertNotNull(e.getMessage());
+      }
+      
+  }
+  
+  public void testRuleTableLoad() throws Exception {
+      MockJBRMSServiceServlet impl = new MockJBRMSServiceServlet();
+      TableConfig conf = impl.loadTableConfig( RuleListView.RULE_LIST_TABLE_ID );
+      assertNotNull(conf.headers);
+      
+      CategoryItem cat = impl.repo.loadCategory( "/" );
+      cat.addCategory( "testRuleTableLoad", "yeah" );
+            
+      impl.repo.createRulePackage("testRuleTableLoad", "yeah");      
+      impl.createNewRule( "testRuleTableLoad", "ya", "testRuleTableLoad", "testRuleTableLoad" );
+      impl.createNewRule( "testRuleTableLoad2", "ya", "testRuleTableLoad", "testRuleTableLoad" );
+
+      TableDataResult result = impl.loadRuleListForCategories( "testRuleTableLoad", null );
+      assertEquals(2, result.numberOfRows);
+      assertEquals(2, result.data.length);
+      
+      String key = result.data[0].key;
+      assertFalse(key.startsWith( "testRule" ));
+      assertTrue(result.data[0].values[0].startsWith( "testRule" ));
+  }
+  
     
 }




More information about the jboss-svn-commits mailing list