[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