[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(" <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