[jboss-svn-commits] JBL Code SVN: r31197 - in labs/jbossrules/trunk: drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jan 23 20:02:56 EST 2010


Author: jervisliu
Date: 2010-01-23 20:02:54 -0500 (Sat, 23 Jan 2010)
New Revision: 31197

Modified:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/QuickFindWidget.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
   labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
   labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java
Log:
https://jira.jboss.org/jira/browse/GUVNOR-497: Inconsistent GUI is used to show search result

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java	2010-01-22 20:15:18 UTC (rev 31196)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryService.java	2010-01-24 01:02:54 UTC (rev 31197)
@@ -262,15 +262,12 @@
 
 
     /**
-     * This will quickly return a list of asset names/descriptions.
-     * This list will be limited, and it will be flagged if more are found then can be shown.
-     * Returning an extra empty row means there are more to come...
-     *
-     * The id of a row is the UUID, the first value is the name, the next the description.
-     * Finally, if there is "more" rows, a row will be returned which has "MORE" as its ID.
-     *
+     * This will quickly return a list of assets 
      */
-    public TableDataResult quickFindAsset(String searchText, int maxMatches, boolean searchArchived);
+    public TableDataResult quickFindAsset(String searchText,  
+    		boolean searchArchived,
+            int skip,
+            int numRows) throws SerializableException;
 
 
     /**

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java	2010-01-22 20:15:18 UTC (rev 31196)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rpc/RepositoryServiceAsync.java	2010-01-24 01:02:54 UTC (rev 31197)
@@ -69,7 +69,7 @@
 	public void listSnapshots(java.lang.String p0, AsyncCallback<org.drools.guvnor.client.rpc.SnapshotInfo[]> cb);
 	public void createPackageSnapshot(java.lang.String p0, java.lang.String p1, boolean p2, java.lang.String p3, AsyncCallback cb);
 	public void copyOrRemoveSnapshot(java.lang.String p0, java.lang.String p1, boolean p2, java.lang.String p3, AsyncCallback cb);
-	public void quickFindAsset(java.lang.String p0, int p1, boolean p2, AsyncCallback<org.drools.guvnor.client.rpc.TableDataResult> cb);
+	public void quickFindAsset(java.lang.String p0, boolean p1, int p2, int p3, AsyncCallback<org.drools.guvnor.client.rpc.TableDataResult> cb);
 	public void removeCategory(java.lang.String p0, AsyncCallback cb);
 	public void loadSuggestionCompletionEngine(java.lang.String p0, AsyncCallback<org.drools.guvnor.client.modeldriven.SuggestionCompletionEngine> cb);
 	public void buildPackage(java.lang.String p0, boolean p1, java.lang.String p2, java.lang.String p3, java.lang.String p4, boolean p5, java.lang.String p6, java.lang.String p7, boolean p8, java.lang.String p9, AsyncCallback<org.drools.guvnor.client.rpc.BuilderResult[]> cb);

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/QuickFindWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/QuickFindWidget.java	2010-01-22 20:15:18 UTC (rev 31196)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/client/rulelist/QuickFindWidget.java	2010-01-24 01:02:54 UTC (rev 31197)
@@ -46,7 +46,7 @@
     private final FlexTable listPanel;
     private SuggestBox searchBox;
     private CheckBox archiveBox;
-    private EditItemEvent editEvent;
+    private final EditItemEvent openItem;
     private Constants constants = ((Constants) GWT.create(Constants.class));
 
 
@@ -60,25 +60,39 @@
 			}
         });
 
+        final SimplePanel resultsP = new SimplePanel();
 
-
-
-        this.editEvent = editEvent;
+        this.openItem = editEvent;
         HorizontalPanel srch = new HorizontalPanel();
         Button go = new Button(constants.Search());
-        go.addClickListener( new ClickListener() {
+        final ClickListener cl = new ClickListener() {        
             public void onClick(Widget w) {
-               updateList();
+               //updateList();
+                resultsP.clear();
+                AssetItemGrid grid = new AssetItemGrid( openItem,
+                                                        "searchresults",
+                                                        new AssetItemGridDataLoader() { //NON-NLS
+                                                            public void loadData(int startRow,
+                                                                                 int numberOfRows,
+                                                                                 GenericCallback<TableDataResult> cb) {
+                                                                RepositoryServiceFactory.getService().quickFindAsset(searchBox.getText(),
+                                                                                                                     archiveBox.isChecked(),
+                                                                                                                     startRow,
+                                                                                                                     numberOfRows,
+                                                                                                                     cb );
+                                                             }
+                                                        } );
+                resultsP.add( grid );
 
             }
-        } );
-
-
+        } ;
+        go.addClickListener(cl);
+       
         searchBox.addKeyboardListener(new KeyboardListenerAdapter() {
             @Override
             public void onKeyUp(Widget sender, char keyCode, int modifiers) {
                 if (keyCode == KeyboardListener.KEY_ENTER) {
-                    updateList();
+                    cl.onClick( sender );
                 }
             }
         });
@@ -99,13 +113,11 @@
         PrettyFormLayout pfl = new PrettyFormLayout();
         pfl.startSection();
         pfl.addRow(listPanel);
+        pfl.addRow( resultsP );
 
-
         pfl.endSection();
         layout.addRow(pfl);
 
-
-
         /*
 
         Button b = new Button("Do a request");
@@ -117,10 +129,6 @@
 
         */
 
-        
-
-
-
         initWidget( layout );
     }
 
@@ -138,8 +146,6 @@
                     ids.add(aData.id);
                 }
 
-
-
                 RepositoryServiceFactory.getService().loadRuleAsset(ids.get(0), new GenericCallback<RuleAsset>() {
                     public void onSuccess(final RuleAsset result) {
                         SuggestionCompletionCache.getInstance().doAction(result.metaData.packageName, new Command() {
@@ -165,8 +171,6 @@
                                                 });
                                             }
                                         }
-
-
                                     }
                                 });
                             }
@@ -175,20 +179,16 @@
                     }
                 });
 
-
-
             }
         });
     }
 
-
     /**
      * This will load a list of items as they are typing.
      */
     protected void loadShortList(String match, final Request r, final Callback cb) {
-        RepositoryServiceFactory.getService().quickFindAsset( match, 5, archiveBox.isChecked() ,new GenericCallback<TableDataResult>() {
+        RepositoryServiceFactory.getService().quickFindAsset( match, archiveBox.isChecked() ,0, 5, new GenericCallback<TableDataResult>() {
 
-
             public void onSuccess(TableDataResult result) {
                 List items = new ArrayList();
                 for ( int i = 0; i < result.data.length; i++ ) {
@@ -215,56 +215,4 @@
 
     }
 
-    protected void updateList() {
-       
-        LoadingPopup.showMessage(constants.SearchingDotDotDot());
-        RepositoryServiceFactory.getService().quickFindAsset( searchBox.getText(), 15, archiveBox.isChecked() , new GenericCallback<TableDataResult>() {
-            public void onSuccess(TableDataResult result) {
-                populateList(result);
-            }
-        });
-
-
-    }
-
-    protected void populateList(TableDataResult result) {
-
-
-        FlexTable data = new FlexTable();
-
-        //if its only one, just open it...
-        if (result.data.length == 1) {
-            editEvent.open( result.data[0].id );
-        }
-
-        for ( int i = 0; i < result.data.length; i++ ) {
-
-            final TableDataRow row = result.data[i];
-            if (row.id.equals( "MORE" )) {  //NON-NLS
-                data.setWidget( i, 0, new HTML("<i>" + constants.ThereAreMoreItemsTryNarrowingTheSearchTerms() + "</i>") );
-                data.getFlexCellFormatter().setColSpan( i, 0, 3 );
-            } else {
-                data.setWidget( i, 0, new Label(row.values[0]) );
-                data.setWidget( i, 1, new Label(row.values[1]) );
-                Button open = new Button(constants.Open());
-                open.addClickListener( new ClickListener() {
-                    public void onClick(Widget w) {
-                        editEvent.open( row.id );
-                    }
-                } );
-
-                data.setWidget( i, 2, open );
-            }
-
-
-        }
-
-        //data.setWidth( "100%" );
-        listPanel.setWidget( 0, 0, data);
-
-        LoadingPopup.close();
-
-    }
-
-
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java	2010-01-22 20:15:18 UTC (rev 31196)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/RepositoryServiceServlet.java	2010-01-24 01:02:54 UTC (rev 31197)
@@ -199,8 +199,8 @@
 	public void copyOrRemoveSnapshot(java.lang.String p0, java.lang.String p1, boolean p2, java.lang.String p3) throws com.google.gwt.user.client.rpc.SerializableException {
 		getService().copyOrRemoveSnapshot( p0,  p1,  p2,  p3);
 	}
-	public org.drools.guvnor.client.rpc.TableDataResult quickFindAsset(java.lang.String p0, int p1, boolean p2)  {
-		 return getService().quickFindAsset( p0,  p1,  p2);
+	public org.drools.guvnor.client.rpc.TableDataResult quickFindAsset(java.lang.String p0, boolean p1, int p2, int p3)  throws com.google.gwt.user.client.rpc.SerializableException{
+		 return getService().quickFindAsset( p0,  p1,  p2, p3);
 	}
 	public void removeCategory(java.lang.String p0) throws com.google.gwt.user.client.rpc.SerializableException {
 		getService().removeCategory( p0);

Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2010-01-22 20:15:18 UTC (rev 31196)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java	2010-01-24 01:02:54 UTC (rev 31197)
@@ -1245,7 +1245,7 @@
                                         comment );
 
     }
-
+    
     @WebRemote
     @Restrict("#{identity.loggedIn}")
     public String copyAsset(String assetUUID,
@@ -1342,8 +1342,9 @@
     @WebRemote
     @Restrict("#{identity.loggedIn}")
     public TableDataResult quickFindAsset(String searchText,
-                                          int max,
-                                          boolean searchArchived) {
+                                          boolean searchArchived,
+                                          int skip,
+                                          int numRows) throws SerializableException {
 
         String search = searchText.replace( '*',
                                             '%' );
@@ -1354,45 +1355,26 @@
 
         TableDataResult result = new TableDataResult();
 
-        List<TableDataRow> resultList = new ArrayList<TableDataRow>();
+        List<AssetItem> resultList = new ArrayList<AssetItem>();
 
         long start = System.currentTimeMillis();
         AssetItemIterator it = repository.findAssetsByName( search,
                                                             searchArchived ); // search for archived items
         log.debug( "Search time: " + (System.currentTimeMillis() - start) );
 
-        RepositoryFilter filter = new AssetItemFilter();
-        for ( int i = 0; i < max; i++ ) {
-            if ( !it.hasNext() ) {
-                break;
-            }
-            AssetItem item = (AssetItem) it.next();
-            if ( filter.accept( item,
-                                RoleTypes.PACKAGE_READONLY ) ) {
-                TableDataRow row = new TableDataRow();
-                row.id = item.getUUID();
-                String desc = item.getDescription() + "";
-                row.values = new String[]{item.getName(), desc.substring( 0,
-                                                                          Math.min( 32,
-                                                                                    desc.length() ) )};
+        // Add filter for READONLY permission
+		RepositoryFilter filter = new AssetItemFilter();
 
-                resultList.add( row );
-            }
-        }
+		while (it.hasNext()) {
+			AssetItem ai = it.next();
+			if (filter.accept(ai, RoleTypes.PACKAGE_READONLY)) {
+				resultList.add(ai);
+			}
+		}
 
-        while ( it.hasNext() ) {
-            if ( filter.accept( (AssetItem) it.next(),
-                                RoleTypes.PACKAGE_READONLY ) ) {
-                TableDataRow empty = new TableDataRow();
-                empty.id = "MORE";
-                resultList.add( empty );
-                break;
-            }
-        }
+        TableDisplayHandler handler = new TableDisplayHandler( "searchresults" );
 
-        result.data = resultList.toArray( new TableDataRow[resultList.size()] );
-        return result;
-
+        return handler.loadRuleListTable(resultList, skip, numRows);
     }
 
     @WebRemote

Modified: labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java	2010-01-22 20:15:18 UTC (rev 31196)
+++ labs/jbossrules/trunk/drools-guvnor/src/test/java/org/drools/guvnor/server/ServiceImplementationTest.java	2010-01-24 01:02:54 UTC (rev 31197)
@@ -972,18 +972,14 @@
 				"testListByFormat" }, 0, 40, AssetItemGrid.RULE_LIST_TABLE_ID);
 		assertEquals(5, res.data.length);
 
-		TableDataResult result = impl.quickFindAsset("testListByForma", 5,
-				false);
+		TableDataResult result = impl.quickFindAsset("testListByForma", false, 0, 5);
 		assertEquals(5, result.data.length);
 
 		assertNotNull(result.data[0].id);
 		assertTrue(result.data[0].values[0].startsWith("testListByFormat"));
 
-		result = impl.quickFindAsset("testListByForma", 3, false);
+		result = impl.quickFindAsset("testListByForma", false, 0, 4);
 		assertEquals(4, result.data.length);
-
-		assertEquals("MORE", result.data[3].id);
-
 	}
 
 
@@ -1010,18 +1006,18 @@
 		impl.createPackage("testQuickFind",
 				"for testing quick find.");
 		String uuid = impl.createNewRule("testQuickFindmyRule1", "desc", cat, "testQuickFind", AssetFormats.DRL);
-		TableDataResult res = impl.quickFindAsset("testQuickFindmyRule", 20, false);
+		TableDataResult res = impl.quickFindAsset("testQuickFindmyRule", false, 0, 20);
 		assertEquals(1, res.data.length);
 
 		impl.createNewRule("testQuickFindmyRule2", "desc", cat, "testQuickFind", AssetFormats.DRL);
-		res = impl.quickFindAsset("testQuickFindmyRule", 20, false);
+		res = impl.quickFindAsset("testQuickFindmyRule", false, 0, 20);
 		assertEquals(2, res.data.length);
 
 		impl.copyAsset(uuid, "testQuickFind", "testQuickFindmyRule3");
-		res = impl.quickFindAsset("testQuickFindmyRule", 20, false);
+		res = impl.quickFindAsset("testQuickFindmyRule", false, 0, 20);
 		assertEquals(3, res.data.length);
 
-		res = impl.quickFindAsset("testQuickFindm*Rule", 20, false);
+		res = impl.quickFindAsset("testQuickFindm*Rule", false, 0, 20);
 		assertEquals(3, res.data.length);
 
 

Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java	2010-01-22 20:15:18 UTC (rev 31196)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/security/PermissionManager.java	2010-01-24 01:02:54 UTC (rev 31197)
@@ -61,9 +61,35 @@
     	}
     }
 
+    public void createUser(String userName) {
+    	if (!isValideUserName(userName)) {
+    		throw new RulesRepositoryException("Invalide user name");
+    	}
+    	if (containsUser(userName)) {
+    		throw new RulesRepositoryException("User name [" + userName + "] already exists");
+    	}
+    	try {
+	    	Node permsNode = getUserPermissionNode(userName);
+	    	permsNode.remove(); //remove this so we get a fresh set
+	    	permsNode = getUserPermissionNode(userName).addNode("jcr:content", "nt:unstructured");
+	    	this.repository.save();
+    	} catch (RepositoryException e) {
+    		throw new RulesRepositoryException(e);
+    	}
+    }
+    
+    private boolean containsUser(String userName) {
+		try {
+			Node userRoot = getUsersRootNode(getRootNode(repository));
+			if (userRoot.hasNode(userName)) {
+				return true;
+			}
+		} catch (RepositoryException e) {
+		}
 
-
-
+		return false;
+	}
+    
 	private Node getUserPermissionNode(String userName)
 			throws RepositoryException {
     	Node permsNode = getNode(getUserInfoNode(userName, repository), "permissions", "nt:file");



More information about the jboss-svn-commits mailing list