[jboss-svn-commits] JBL Code SVN: r9485 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/client/packages and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 14 03:02:06 EST 2007


Author: michael.neale at jboss.com
Date: 2007-02-14 03:02:05 -0500 (Wed, 14 Feb 2007)
New Revision: 9485

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/PackageConfigData.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/ruleeditor/ActionToolbar.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.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:
JBRULES-624 Status changing now working

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/StatusChangePopup.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -0,0 +1,105 @@
+package org.drools.brms.client.common;
+
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ChangeListener;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.DialogBox;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * Well this one should be pretty obvious what it does. 
+ * I feel like I have wasted valuable time writing this comment, but I hope
+ * you enjoyed reading it.
+ * 
+ * @author Michael Neale
+ *
+ */
+public class StatusChangePopup extends DialogBox {
+
+    private boolean isPackage;
+    private String uuid;
+    private String newStatus;
+    private Command changedStatus;
+
+    public StatusChangePopup(String uuid, boolean isPackage) {
+        super();
+        
+        this.uuid = uuid;
+        this.isPackage = isPackage;
+        
+        setHTML( "<img src='images/status_small.gif'/><b>Change status</b>" );
+        HorizontalPanel horiz = new HorizontalPanel();
+        final ListBox box = new ListBox();
+        
+        LoadingPopup.showMessage( "Please wait..." );
+        RepositoryServiceFactory.getService().listStates( new GenericCallback() {
+            public void onSuccess(Object data) {
+                String[] list = (String[]) data;
+                for ( int i = 0; i < list.length; i++ ) {
+                    box.addItem( list[i] );
+                }
+                LoadingPopup.close();
+            }
+        });
+        
+        box.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+                newStatus = box.getItemText( box.getSelectedIndex() );
+            }            
+        });
+     
+        horiz.add(box);
+        Button ok = new Button("Change status");
+        ok.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                String newState = box.getItemText( box.getSelectedIndex() );
+                changeState(newState);
+                hide();
+            }
+        });
+        horiz.add( ok );
+        
+        
+        Button close = new Button("Cancel");
+        close.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                hide();                
+            }            
+        });
+        horiz.add( close );
+        
+        
+        
+        setWidget( horiz );
+    }
+
+    /** Apply the state change */
+    private void changeState(String newState) {
+        LoadingPopup.showMessage( "Updating status..." );
+        RepositoryServiceFactory.getService().changeState( uuid, newStatus, isPackage, new GenericCallback() {
+            public void onSuccess(Object data) {
+                changedStatus.execute();
+                LoadingPopup.close();
+            }
+        });        
+    }
+
+    /**
+     * Get what the state was changed to.
+     */
+    public String getState() {        
+        return this.newStatus;
+    }
+
+    /**
+     * set the status change event
+     */
+    public void setChangeStatusEvent(Command command) {
+        this.changedStatus = command;        
+    }
+}


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

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java	2007-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageEditor.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -4,9 +4,11 @@
 import org.drools.brms.client.common.FormStylePopup;
 import org.drools.brms.client.common.GenericCallback;
 import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.common.StatusChangePopup;
 import org.drools.brms.client.rpc.PackageConfigData;
 import org.drools.brms.client.rpc.RepositoryServiceFactory;
 
+import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.ChangeListener;
@@ -29,6 +31,7 @@
 public class PackageEditor extends FormStyleLayout {
 
     private PackageConfigData conf;
+    private HTML status;
 
     public PackageEditor(PackageConfigData data) {
         this.conf = data;
@@ -48,12 +51,49 @@
         addAttribute( "Description:", description() );
         addAttribute( "Header:", header() );
         addAttribute( "External URI:", externalURI() );
+        addRow(new HTML("<hr/>"));
         addAttribute( "Last modified on:", new Label(this.conf.lastModified.toLocaleString())  );
         addAttribute( "Last modified by:", new Label(this.conf.lasContributor));
         addRow(new HTML("<hr/>"));
+        
+        status = new HTML();
+        HorizontalPanel statusBar = new HorizontalPanel();
+        Image editState = new Image("images/edit.gif");
+        editState.setTitle( "Change status." );
+        editState.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                showStatusChanger(w);
+            }
+
+
+        } );
+        statusBar.add( status );
+        
+        statusBar.add( editState );
+        
+        setState(conf.state);
+        addAttribute("Status:", statusBar);
+
         addRow( saveChangeWidget() );
     }
 
+    protected void showStatusChanger(Widget w) {
+        final StatusChangePopup pop = new StatusChangePopup(conf.uuid, true);
+        pop.setChangeStatusEvent(new Command() {
+            public void execute() {
+                setState( pop.getState() );
+            }                    
+        });
+        pop.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+        pop.show();
+        
+    }
+
+    private void setState(String state) {
+        status.setHTML( "<b>" + state + "</b>" );
+        
+    }
+
     private Widget saveChangeWidget() {
         
         Button save = new Button("Save configuration changes");

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/PackageConfigData.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/PackageConfigData.java	2007-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/PackageConfigData.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -20,6 +20,7 @@
     public String description;
     public Date   lastModified;
     public String lasContributor;
+    public String state;
     
     
     

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-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -113,4 +113,13 @@
      */
     public String createState(String name) throws SerializableException;
     
+    
+    /**
+     * This will change the state of an asset or package.
+     * @param uuid The UUID of the asset we are tweaking.
+     * @param newState The new state to set. It must be valid in the repo.
+     * @param wholePackage true if it is a package we are setting the state of. 
+     * If this is true, UUID must be the status of a package, if false, it must be an asset.
+     */
+    public void changeState(String uuid, String newState, boolean wholePackage);
 }

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-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -32,4 +32,5 @@
     public void listAssetsByFormat(java.lang.String p0, java.lang.String p1, int p2, int p3, AsyncCallback cb);
     public void listStates(AsyncCallback cb);
     public void createState(java.lang.String p0, AsyncCallback cb);
+    public void changeState(java.lang.String p0, java.lang.String p1, boolean p2, 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-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/mock/MockRepositoryServiceAsync.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -395,6 +395,16 @@
         cb.onSuccess( new String[0] );
         
     }
+
+
+
+    public void changeState(String p0,
+                            String p1,
+                            boolean p2,
+                            AsyncCallback cb) {
+        cb.onSuccess( null );
+        
+    }
     
     
 

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java	2007-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/ActionToolbar.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -1,12 +1,12 @@
 package org.drools.brms.client.ruleeditor;
 
 import org.drools.brms.client.common.FormStylePopup;
-import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.common.StatusChangePopup;
 import org.drools.brms.client.rpc.MetaData;
+import org.drools.brms.client.rpc.RuleAsset;
 
 import com.google.gwt.user.client.Command;
 import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.ChangeListener;
 import com.google.gwt.user.client.ui.ClickListener;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.FlexTable;
@@ -15,8 +15,6 @@
 import com.google.gwt.user.client.ui.HasVerticalAlignment;
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.TextArea;
 import com.google.gwt.user.client.ui.Widget;
 import com.google.gwt.user.client.ui.FlexTable.FlexCellFormatter;
 
@@ -32,20 +30,27 @@
     
     private MetaData      metaData;
     private Command checkin;
+    private String uuid;
+    private HTML state;
 
     
-    public ActionToolbar(final MetaData meta, 
+    public ActionToolbar(final RuleAsset asset,
+                          
                          final Command checkin, 
                          final Command minimiseMaximise, 
                          boolean readOnly) {
 
-        this.metaData = meta;
+        this.metaData = asset.metaData;
         this.checkin = checkin;
+        this.uuid = asset.uuid;
+        this.state = new HTML();
         String status = metaData.state;
 
         FlexCellFormatter formatter = layout.getFlexCellFormatter();
         HorizontalPanel saveControls = new HorizontalPanel();
-        HTML state = new HTML("<b>Status: <i>[" + status + "]</i></b>");
+        setState(status);
+        
+        
         saveControls.add( state );
         
         if (!readOnly) {
@@ -59,11 +64,25 @@
         setWidth( "100%" );
     }
 
+    /**
+     * Sets the visible status display.
+     */
+    private void setState(String status) {
+        state.setHTML( "Status: <b>[" + status + "]</b>");        
+    }
+
     private void controls(final Command minimiseMaximise,
                           FlexCellFormatter formatter,
                           HorizontalPanel saveControls) {
         Image editState = new Image("images/edit.gif");
-        editState.setTitle( "Change state (NOT IMPLEMENTED YET)." );
+        editState.setTitle( "Change status." );
+        editState.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                showStatusChanger(w);
+            }
+
+
+        } );
         saveControls.add( editState );
         
         
@@ -130,37 +149,25 @@
 
         });
         pop.show();
-//        final FormStylePopup pop = new FormStylePopup("images/checkin.gif", "Check in changes.");
-//        final TextArea comment = new TextArea();
-//        comment.setWidth( "100%" );
-//        Button save = new Button("Save");
-//        pop.addAttribute( "Comment", comment );
-//        pop.addAttribute( "", save);
-//        
-//        bindCommentField( comment );
-//        
-//        
-//        save.addClickListener( new ClickListener() {
-//            public void onClick(Widget w) {
-//                
-//                checkin.execute();
-//                pop.hide();
-//            }
-//        });
-//        
-//        pop.setStyleName( "ks-popups-Popup" );
-//        pop.setPopupPosition( 200, getAbsoluteTop() );
-//        pop.show();        
+      
         
     }
 
-//    private void bindCommentField(final TextArea comment) {
-//        comment.addChangeListener( new ChangeListener() {
-//            public void onChange(Widget w) {
-//                metaData.checkinComment = comment.getText();
-//            }
-//        });
-//    }
+    
+    
+    /**
+     * Show the stats change popup.
+     */
+    private void showStatusChanger(Widget w) {
+        final StatusChangePopup pop = new StatusChangePopup(uuid, false);
+        pop.setChangeStatusEvent(new Command() {
+            public void execute() {
+                setState( pop.getState() );
+            }                    
+        });
+        pop.setPopupPosition( w.getAbsoluteLeft(), w.getAbsoluteTop() );
+        pop.show();
+    }
 
     /**
      * Called when user wants to close, but there is "dirtyness".

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java	2007-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -1,8 +1,7 @@
 package org.drools.brms.client.ruleeditor;
 
-import org.drools.brms.client.common.LoadingPopup;
 import org.drools.brms.client.common.ErrorPopup;
-import org.drools.brms.client.common.WarningPopup;
+import org.drools.brms.client.common.LoadingPopup;
 import org.drools.brms.client.rpc.RepositoryServiceFactory;
 import org.drools.brms.client.rpc.RuleAsset;
 
@@ -84,7 +83,7 @@
                             "40%" );
 
         //and now the action widgets (checkin/close etc).
-        ActionToolbar toolbar = new ActionToolbar( asset.metaData,
+        ActionToolbar toolbar = new ActionToolbar( asset,
                                                    new Command() {
                                                        public void execute() {
                                                            doCheckin();

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	2007-02-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2007-02-14 08:02:05 UTC (rev 9485)
@@ -315,7 +315,7 @@
 }
 
 .metadata-Widget {
-  border: 1px solid #B8B8B8;
+  //border: 1px solid #B8B8B8;
 }
 
 .rule-error-Popup {

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-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -12,9 +12,6 @@
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
-import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.version.Version;
-import javax.jcr.version.VersionIterator;
 import javax.servlet.http.HttpSession;
 
 import org.drools.brms.client.common.AssetFormats;
@@ -405,6 +402,7 @@
         data.name = item.getName();
         data.lastModified = item.getLastModified().getTime();
         data.lasContributor = item.getLastContributor();
+        data.state = item.getStateDescription();
         
         
         return data;
@@ -453,6 +451,24 @@
         }
         return result;
     }
+
+    public void changeState(String uuid,
+                            String newState,
+                            boolean wholePackage) {
+        RulesRepository repo = getRulesRepository();
+        if (!wholePackage) {
+            AssetItem asset = repo.loadAssetByUUID( uuid );
+            asset.updateState( newState );
+            repo.save();
+        } else {
+            PackageItem pkg = repo.loadPackageByUUID( uuid );
+            pkg.changeStatus(newState);
+            repo.save();
+        }
+        
+        
+        
+    }
     
 
 

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-14 08:00:53 UTC (rev 9484)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/ServiceImplementationTest.java	2007-02-14 08:02:05 UTC (rev 9485)
@@ -18,6 +18,7 @@
 import org.drools.repository.AssetItemIterator;
 import org.drools.repository.CategoryItem;
 import org.drools.repository.PackageItem;
+import org.drools.repository.StateItem;
 
 import com.google.gwt.user.client.rpc.SerializableException;
 
@@ -367,6 +368,7 @@
       
   }
   
+  
   public void testStatus() throws Exception {
       MockJBRMSServiceServlet impl = new MockJBRMSServiceServlet();
       String uuid = impl.createState( "testStatus1" );
@@ -390,8 +392,33 @@
       
       assertEquals(2, match);
       
+
+      String packagUUID = impl.createPackage( "testStatus", "description" );
+      String ruleUUID = impl.createNewRule( "testStatus", "desc", null, "testStatus", "drl" );
+      String ruleUUID2 = impl.createNewRule( "testStatus2", "desc", null, "testStatus", "drl" );
+      impl.createState( "testState" );
       
+      RuleAsset asset = impl.loadRuleAsset( ruleUUID );
+      assertEquals(StateItem.DRAFT_STATE_NAME, asset.metaData.state);
+      impl.changeState( ruleUUID, "testState", false );
+      asset = impl.loadRuleAsset( ruleUUID );
+      assertEquals("testState", asset.metaData.state);
+      asset = impl.loadRuleAsset( ruleUUID2 );
+      assertEquals( StateItem.DRAFT_STATE_NAME, asset.metaData.state);
+      
+      
+      
+      impl.createState( "testState2" );
+      impl.changeState( packagUUID, "testState2", true );
+      
+      PackageConfigData pkg = impl.loadPackage( "testStatus" );
+      assertEquals("testState2", pkg.state);
+      
+      asset = impl.loadRuleAsset( ruleUUID2 );
+      assertEquals("testState2", asset.metaData.state);
+      
   }
   
+  
     
 }




More information about the jboss-svn-commits mailing list