[jboss-svn-commits] JBL Code SVN: r9358 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/rpc/mock and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 5 22:33:42 EST 2007
Author: michael.neale at jboss.com
Date: 2007-02-05 22:33:42 -0500 (Mon, 05 Feb 2007)
New Revision: 9358
Added:
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java
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/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/server/JBRMSServiceServlet.java
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java
labs/jbossrules/trunk/drools-jbrms/src/main/resources/AssetListTable.properties
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java
Log:
JBRULES-634 paged list viewing where needed
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 2007-02-06 03:32:51 UTC (rev 9357)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java 2007-02-06 03:33:42 UTC (rev 9358)
@@ -90,4 +90,16 @@
*/
public String savePackage(PackageConfigData data) throws SerializableException;
+
+ /**
+ * Given a format, this will return assets that match.
+ * It can also be used for "pagination" by passing in start and
+ * finish row numbers.
+ * @param packageName The package name to search inside.
+ * @param format The format to filter on.
+ * @param numRows The number of rows to return. -1 means all.
+ * @param startRow The starting row number if paging - if numRows is -1 then this is ignored.
+ */
+ public TableDataResult listAssetsByFormat(String packageName, String format, int numRows, int startRow) throws SerializableException;
+
}
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 2007-02-06 03:32:51 UTC (rev 9357)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java 2007-02-06 03:33:42 UTC (rev 9358)
@@ -29,5 +29,6 @@
public void createPackage(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
public void loadPackage(java.lang.String p0, AsyncCallback cb);
public void savePackage(org.drools.brms.client.rpc.PackageConfigData p0, AsyncCallback cb);
+ public void listAssetsByFormat(java.lang.String p0, java.lang.String p1, int p2, int p3, AsyncCallback cb);
}
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 2007-02-06 03:32:51 UTC (rev 9357)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java 2007-02-06 03:33:42 UTC (rev 9358)
@@ -371,6 +371,15 @@
AsyncCallback cb) {
cb.onSuccess( "UUID" );
}
+
+
+
+ public void listAssetsByFormat(String p0, String p1,
+ int p2,
+ int p3,
+ AsyncCallback cb) {
+ loadRuleListForCategories( "/", cb );
+ }
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 2007-02-06 03:32:51 UTC (rev 9357)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java 2007-02-06 03:33:42 UTC (rev 9358)
@@ -28,6 +28,7 @@
import org.drools.brms.server.util.TableDisplayHandler;
import org.drools.repository.AssetHistoryIterator;
import org.drools.repository.AssetItem;
+import org.drools.repository.AssetItemIterator;
import org.drools.repository.CategoryItem;
import org.drools.repository.PackageItem;
import org.drools.repository.RepositoryConfigurator;
@@ -127,7 +128,7 @@
List list = repo.findAssetsByCategory( categoryPath );
TableDisplayHandler handler = new TableDisplayHandler();
- return handler.loadRuleListTable( list );
+ return handler.loadRuleListTable( list.iterator(), -1 );
}
@@ -408,6 +409,21 @@
return item.getUUID();
}
+
+ public TableDataResult listAssetsByFormat(String packageName,
+ String format,
+ int numRows,
+ int startRow) throws SerializableException {
+ PackageItem pkg = getRulesRepository().loadPackage( packageName );
+ AssetItemIterator it = pkg.listAssetsByFormat( format );
+ if (numRows != -1) {
+ it.skip( startRow );
+ }
+ TableDisplayHandler handler = new TableDisplayHandler();
+ return handler.loadRuleListTable( it, numRows );
+
+
+ }
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java 2007-02-06 03:32:51 UTC (rev 9357)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/TableDisplayHandler.java 2007-02-06 03:33:42 UTC (rev 9358)
@@ -1,18 +1,14 @@
package org.drools.brms.server.util;
import java.io.BufferedReader;
-import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
-import java.util.Properties;
-import java.util.Set;
import java.util.StringTokenizer;
import org.drools.brms.client.rpc.TableConfig;
@@ -37,25 +33,30 @@
private RowLoader ASSET_LIST = new RowLoader(TableDisplayHandler.class.getResourceAsStream( "/AssetListTable.properties" ));
- public TableDataResult loadRuleListTable(List list) throws SerializableException {
+ /**
+ * Produce a table dataset for a given iterator.
+ * @param list The iterator.
+ * @param numRows The number of rows to go to. -1 means don't stop.
+ * @throws SerializableException
+ */
+ public TableDataResult loadRuleListTable(Iterator list, int numRows) throws SerializableException {
List data = new ArrayList();
- for ( Iterator iter = list.iterator(); iter.hasNext(); ) {
+
+
+ for ( Iterator iter = list; iter.hasNext(); ) {
AssetItem rule = (AssetItem) iter.next();
TableDataRow row = new TableDataRow();
row.id = rule.getUUID();
row.format = rule.getFormat();
- row.values = new String[4];
-
-
row.values = ASSET_LIST.getRow( rule );
-// row.values[0] = rule.getName();
-// row.values[1] = formatDate(rule.getLastModified());
-// row.values[2] = rule.getStateDescription();
-// row.values[3] = rule.getVersionNumber();
data.add( row );
-
+ if (numRows != -1) {
+ if (data.size() == numRows) {
+ break;
+ }
+ }
}
TableDataResult result = new TableDataResult();
result.data = (TableDataRow[]) data.toArray( new TableDataRow[data.size()] );
@@ -88,7 +89,7 @@
private String[] headers;
- private List extractors;
+ List extractors;
public String[] getHeaders() {
return headers;
@@ -101,7 +102,12 @@
try {
Object val = meth.invoke( item, (Object[]) null );
if (val instanceof String) {
- row[i] = (String) val;
+ String s = (String) val;
+ if (s.length() > 64) {
+ s = s.substring( 0, 61 ) + "...";
+ }
+ row[i] = s;
+
} else if (val instanceof Calendar) {
row[i] = DateFormat.getDateInstance().format( (( Calendar ) val).getTime() );
} else {
@@ -133,34 +139,7 @@
final Method meth = AssetItem.class.getMethod( method, new Class[] {} );
extractors.add( meth );
-//
-// if (meth.getReturnType() == String.class) {
-// extractors.add( new ValueExtractor() {
-// public String getValue(AssetItem obj) {
-// return (String) meth.invoke( obj, null );
-// }
-// });
-// } else if (meth.getReturnType() == Calendar.class) {
-// extractors.add( new ValueExtractor() {
-// public String getValue(AssetItem obj) {
-// Calendar cal = (Calendar) meth.invoke( obj, null );
-// return DateFormat.getDateInstance().format( cal.getTime() );
-//
-// }
-// });
-// } else {
-// extractors.add( new ValueExtractor() {
-//
-// public String getValue(AssetItem obj) {
-// Object r = meth.invoke( obj, null );
-// return r.toString();
-// }
-//
-// });
-// }
-
-
}
}
} catch (Exception e) {
@@ -176,32 +155,5 @@
}
- static interface ValueExtractor {
- public String getValue(AssetItem obj);
- }
- static class StringExtractor implements ValueExtractor {
-
-
- private Method meth;
-
- public StringExtractor(Method meth) {
- this.meth = meth;
- }
-
- public String getValue(AssetItem obj) {
- try {
- return (String) meth.invoke( obj, null );
- } catch ( Exception e ) {
- if (e instanceof RuntimeException) {
- throw (RuntimeException) e;
- }
- throw new RulesRepositoryException( e );
- }
- }
-
-
- }
-
-
}
Modified: labs/jbossrules/trunk/drools-jbrms/src/main/resources/AssetListTable.properties
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/resources/AssetListTable.properties 2007-02-06 03:32:51 UTC (rev 9357)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/resources/AssetListTable.properties 2007-02-06 03:33:42 UTC (rev 9358)
@@ -3,11 +3,12 @@
# It can access any field on the AssetItem object by the method name.
# It will intelligently convert types as appropriate.
#
-# Underscores "_" are automatically converted to spaces.
+# If you wish to customise, you can put your own properties ahead of the
+# repository on the classpath.
#
# @author Michael Neale
#
Name=getName
-Last Modified=getLastModified
+Last modified=getLastModified
Status=getStateDescription
Version=getVersionNumber
\ No newline at end of file
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 2007-02-06 03:32:51 UTC (rev 9357)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java 2007-02-06 03:33:42 UTC (rev 9358)
@@ -15,6 +15,7 @@
import org.drools.brms.client.rulelist.RuleItemListViewer;
import org.drools.brms.server.util.TableDisplayHandler;
import org.drools.repository.AssetItem;
+import org.drools.repository.AssetItemIterator;
import org.drools.repository.CategoryItem;
import org.drools.repository.PackageItem;
@@ -335,5 +336,35 @@
assertEquals("new URI", data.externalURI);
}
+ public void testListByFormat() throws Exception {
+ MockJBRMSServiceServlet impl = new MockJBRMSServiceServlet();
+ String cat = "testListByFormat";
+ impl.createCategory( "/", cat, "ya" );
+ impl.createPackage( "testListByFormat", "used for listing by format." );
+
+ String uuid = impl.createNewRule( "testListByFormat", "x", cat, "testListByFormat", "testListByFormat" );
+ String uuid2 = impl.createNewRule( "testListByFormat2", "x", cat, "testListByFormat", "testListByFormat" );
+ String uuid3 = impl.createNewRule( "testListByFormat3", "x", cat, "testListByFormat", "testListByFormat" );
+ String uuid4 = impl.createNewRule( "testListByFormat4", "x", cat, "testListByFormat", "testListByFormat" );
+
+ TableDataResult res = impl.listAssetsByFormat( "testListByFormat", "testListByFormat", -1, 0 );
+ assertEquals(4, res.data.length);
+ assertEquals(uuid, res.data[0].id);
+ assertEquals("testListByFormat", res.data[0].values[0]);
+
+ res = impl.listAssetsByFormat( "testListByFormat", "testListByFormat", 4, 0 );
+ assertEquals(4, res.data.length);
+
+ res = impl.listAssetsByFormat( "testListByFormat", "testListByFormat", 2, 0 );
+ assertEquals(2, res.data.length);
+ assertEquals(uuid, res.data[0].id);
+
+
+ res = impl.listAssetsByFormat( "testListByFormat", "testListByFormat", 2, 2 );
+ assertEquals(2, res.data.length);
+ assertEquals(uuid3, res.data[0].id);
+
+ }
+
}
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java 2007-02-06 03:33:42 UTC (rev 9358)
@@ -0,0 +1,31 @@
+package org.drools.brms.server.util;
+
+import java.lang.reflect.Method;
+import java.util.Calendar;
+
+import org.drools.brms.server.util.TableDisplayHandler.RowLoader;
+import org.drools.repository.AssetItem;
+
+import junit.framework.TestCase;
+
+public class TableDisplayHandlerTest extends TestCase {
+
+ public void testRowLoaders() throws Exception {
+ TableDisplayHandler handler = new TableDisplayHandler();
+ RowLoader loader = new TableDisplayHandler.RowLoader(this.getClass().getResourceAsStream( "/AssetListTable.properties" ));
+
+ assertEquals(4, loader.getHeaders().length);
+ String[] headers = loader.getHeaders();
+ assertEquals("Name", headers[0]);
+ assertEquals("Last modified", headers[1]);
+ assertEquals("Status", headers[2]);
+ assertEquals("Version", headers[3]);
+
+ assertEquals(4, loader.extractors.size());
+ assertTrue(loader.extractors.get( 0 ) instanceof Method);
+ assertEquals(((Method)loader.extractors.get( 2 )).getName(), "getStateDescription");
+
+ }
+
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/TableDisplayHandlerTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list