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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Feb 19 03:16:45 EST 2007


Author: michael.neale at jboss.com
Date: 2007-02-19 03:16:44 -0500 (Mon, 19 Feb 2007)
New Revision: 9586

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelArchiveFileWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/model_large.png
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/spinner.gif
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/JBRMS.gwt.xml
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/RulesFeature.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/LoadingPopup.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.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/public/images/model_asset.gif
   labs/jbossrules/trunk/drools-jbrms/src/main/webapp/WEB-INF/web.xml
Log:
JBRULES-668 model upload/attach

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/JBRMS.gwt.xml
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/JBRMS.gwt.xml	2007-02-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/JBRMS.gwt.xml	2007-02-19 08:16:44 UTC (rev 9586)
@@ -8,5 +8,6 @@
 	<entry-point class='org.drools.brms.client.JBRMSEntryPoint'/>
   
 	<servlet path="/jbrmsService" class="org.drools.brms.server.JBRMSServiceServlet" />  
-  
+    <servlet path="/upload" class="org.drools.brms.server.FileUploadServlet"/>
+    
 </module>

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/RulesFeature.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/RulesFeature.java	2007-02-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/RulesFeature.java	2007-02-19 08:16:44 UTC (rev 9586)
@@ -191,6 +191,8 @@
                   icon = "dsl.gif";
               } else if (asset.metaData.format.equals( AssetFormats.FUNCTION )) {
                   icon = "function_assets.gif";
+              } else if (asset.metaData.format.equals( AssetFormats.MODEL )) {
+                  icon = "model_asset.gif";
               }
               tab.add( view, "<img src='images/" + icon + "'>" + displayName, true );
               

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java	2007-02-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/AssetFormats.java	2007-02-19 08:16:44 UTC (rev 9586)
@@ -19,8 +19,9 @@
     public static final String FUNCTION = "function";
 
     /** For "model" assets */
-    public static final String MODEL = "model";
+    public static final String MODEL = "jar";
 
+    /** For DSL language grammars */
     public static final String DSL = "dsl";
 
     /** Vanilla DRL "file" */

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/LoadingPopup.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/LoadingPopup.java	2007-02-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/LoadingPopup.java	2007-02-19 08:16:44 UTC (rev 9586)
@@ -25,6 +25,7 @@
         super(true);
         panel.add( errorMessage );
         panel.add( ok );
+        panel.add( new Image("images/searching.gif") );
         ok.addClickListener( new ClickListener() {
             public void onClick(Widget arg0) {                
                 hide();

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelArchiveFileWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelArchiveFileWidget.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelArchiveFileWidget.java	2007-02-19 08:16:44 UTC (rev 9586)
@@ -0,0 +1,123 @@
+package org.drools.brms.client.packages;
+
+import org.drools.brms.client.common.ErrorPopup;
+import org.drools.brms.client.common.FormStyleLayout;
+import org.drools.brms.client.rpc.RuleAsset;
+import org.drools.brms.client.ruleeditor.RuleViewer;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FileUpload;
+import com.google.gwt.user.client.ui.FormHandler;
+import com.google.gwt.user.client.ui.FormPanel;
+import com.google.gwt.user.client.ui.FormSubmitCompleteEvent;
+import com.google.gwt.user.client.ui.FormSubmitEvent;
+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.TextBox;
+import com.google.gwt.user.client.ui.Widget;
+
+/**
+ * This wraps a file uploader utility for model packages.
+ * Model packages are jar files. 
+ * 
+ * @author Michael Neale
+ */
+public class ModelArchiveFileWidget extends Composite {
+
+
+
+    public static final String FORM_FIELD_UUID = "uuid";
+    private FormPanel form;
+    private Button ok;
+    private HorizontalPanel busy;
+
+    public ModelArchiveFileWidget(RuleAsset asset, final RuleViewer viewer) {
+        
+        form = new FormPanel();
+        form.setAction( GWT.getModuleBaseURL() + "upload"   );
+        form.setEncoding( FormPanel.ENCODING_MULTIPART );
+        form.setMethod( FormPanel.METHOD_POST );
+        
+        FileUpload up = new FileUpload();
+        up.setName( "fileUploadElement" );        
+        HorizontalPanel fields = new HorizontalPanel();
+        fields.add( getHiddenField(FORM_FIELD_UUID, asset.uuid) );
+  
+        ok = new Button("Upload");
+                
+        fields.add( up );
+        fields.add( ok );
+        
+        form.add( fields );
+        
+        FormStyleLayout layout = new FormStyleLayout("images/model_large.png", 
+                                                     asset.metaData.name + "." + asset.metaData.format);
+
+        
+        layout.addAttribute( "Upload new version:", form );
+        
+        busy = new HorizontalPanel();
+        busy.setVisible( false );
+        busy.add( new Label("Uploading file...") );
+        busy.add( new Image("images/spinner.gif") );
+        
+        layout.addRow( busy );
+        ok.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                showUploadingBusy();
+                submitUpload();              
+            }            
+        });
+        
+        form.addFormHandler( new FormHandler() {
+
+            public void onSubmit(FormSubmitEvent ev) {                
+            }
+
+            public void onSubmitComplete(FormSubmitCompleteEvent ev) {  
+                    if (ev.getResults().indexOf( "OK" ) > -1) {
+                        Window.alert( "Model archive was uploaded successfully.");  
+                        viewer.refreshDataAndView();
+                    } else {
+                        ErrorPopup.showMessage( "Unable to upload the file." );
+                    }
+            }
+            
+        });
+        
+        initWidget( layout );
+        
+        this.setStyleName( "editable-Surface" );
+        
+    }
+
+    protected void submitUpload() {
+        DeferredCommand.add( new Command() {
+            public void execute() {
+                form.submit();
+            }            
+        });
+    }
+
+    protected void showUploadingBusy() {
+        this.ok.setVisible( false );
+        this.form.setVisible( false );
+        this.busy.setVisible( true );
+    }
+
+    private TextBox getHiddenField(String name, String value) {
+        TextBox t = new TextBox();
+        t.setName( name );
+        t.setText( value );
+        t.setVisible( false );
+        return t;
+    }
+    
+}


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

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java	2007-02-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/PackageExplorerWidget.java	2007-02-19 08:16:44 UTC (rev 9586)
@@ -117,6 +117,26 @@
             }            
         });
         
+        Image uploadModel = new Image("images/model_asset.gif");
+        uploadModel.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                int left = 70;
+                int top = 100;
+                  
+                NewAssetWizard pop = new NewAssetWizard(new EditItemEvent() {
+                    public void open(String key) {                  
+                        editEvent.open( key );                      
+                    }
+                }, false, AssetFormats.MODEL, "Create a new model archive");
+                pop.setPopupPosition( left, top );
+                
+                pop.show();  
+            }            
+        });
+        uploadModel.setTitle( "This creates a new model archive - models contain classes/types that rules use." );
+        
+        newWizards.add( uploadModel );
+        
         Image newRule = new Image("images/new_rule.gif");
         newRule.setTitle( "Create new rule" );
 
@@ -183,10 +203,15 @@
     }
 
 
+
+
+
+
+
     private void refreshTreeView() {
         
+        LoadingPopup.showMessage( "Loading list of packages ..." );
         
-        
         RepositoryServiceFactory.getService().listRulePackages( new GenericCallback() {
 
             public void onSuccess(Object data) {
@@ -197,6 +222,7 @@
                     addPackage( packages[i] );
                 }
                 
+                LoadingPopup.close();
             }
             
         });

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java	2007-02-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/EditorLauncher.java	2007-02-19 08:16:44 UTC (rev 9586)
@@ -4,6 +4,7 @@
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.brms.client.modeldriven.brxml.RuleModel;
 import org.drools.brms.client.modeldriven.ui.RuleModeller;
+import org.drools.brms.client.packages.ModelArchiveFileWidget;
 import org.drools.brms.client.rpc.DSLRuleData;
 import org.drools.brms.client.rpc.RuleAsset;
 import org.drools.brms.client.rpc.RuleModelData;
@@ -27,14 +28,17 @@
     /**
      * This will return the appropriate viewer for the asset.
      */
-    public static Widget getEditorViewer(RuleAsset asset) {
+    public static Widget getEditorViewer(RuleAsset asset, RuleViewer viewer) {
         //depending on the format, load the appropriate editor
         if ( asset.metaData.format.equals( AssetFormats.BUSINESS_RULE ) ) {
             return new RuleModeller( getSuggestionCompletionEngine(asset), getRuleModel(asset) );
         } else if (asset.metaData.format.equals( AssetFormats.DSL_TEMPLATE_RULE )){
             DSLRuleData data = (DSLRuleData) asset.content;            
             return new DSLRuleEditor( data.text, data.lhsSuggestions, data.rhsSuggestions );
+        } else if (asset.metaData.format.equals( AssetFormats.MODEL ) ) {
+            return new ModelArchiveFileWidget(asset, viewer);
         } else {
+
             return new DefaultRuleContentWidget( asset );
         }
 

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-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/ruleeditor/RuleViewer.java	2007-02-19 08:16:44 UTC (rev 9586)
@@ -112,7 +112,7 @@
         //REMEMBER: subsequent rows have only one column, doh that is confusing ! 
         //GAAAAAAAAAAAAAAAAAAAAAAAAAAH
 
-        layout.setWidget( 1, 0, EditorLauncher.getEditorViewer(asset));
+        layout.setWidget( 1, 0, EditorLauncher.getEditorViewer(asset, this));
         
 
         //the document widget

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-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/JBRMS.css	2007-02-19 08:16:44 UTC (rev 9586)
@@ -326,8 +326,8 @@
 }
 
 .loading-Popup {
-  background-color: #FDFCDC;
-  border: 1px solid #B8B8B8;
+  //background-color: #FDFCDC;
+  border: 2px solid #B8B8B8;
   padding: 4px;
 }
 

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/model_asset.gif
===================================================================
(Binary files differ)

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/model_large.png
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/model_large.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/spinner.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/spinner.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java	2007-02-19 08:16:44 UTC (rev 9586)
@@ -0,0 +1,74 @@
+package org.drools.brms.server;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+import org.drools.brms.client.packages.ModelArchiveFileWidget;
+import org.drools.repository.RulesRepositoryException;
+
+/**
+ * Files can be uploaded as part of the repo (eg model classes, spreadsheets).
+ * 
+ * @author Michael Neale
+ */
+public class FileUploadServlet extends HttpServlet {
+
+    protected void doPost(HttpServletRequest request,
+                          HttpServletResponse response) throws ServletException,
+                                                       IOException {
+        response.setContentType( "text/plain" );
+
+        FormData uploadItem = getFileItem( request );
+        if ( uploadItem.file == null || uploadItem.uuid == null) {            
+            response.getWriter().write( "NO-SCRIPT-DATA" );
+            return;
+        }
+
+        //TODO: this is where we attach the file to the asset.
+        
+        response.getWriter().write( "OK" );
+    }
+
+    /**
+     * This will return the file and the Asset UUID that it is to be attached to.
+     */
+    private FormData getFileItem(HttpServletRequest request) {
+        FileItemFactory factory = new DiskFileItemFactory();
+        ServletFileUpload upload = new ServletFileUpload( factory );
+        
+        FormData data = new FormData();
+        try {
+            List items = upload.parseRequest( request );
+            Iterator it = items.iterator();
+            while ( it.hasNext() ) {
+                FileItem item = (FileItem) it.next();
+                if (item.isFormField() && item.getFieldName().equals( ModelArchiveFileWidget.FORM_FIELD_UUID )) {
+                    data.uuid = item.getString();
+                } else if ( !item.isFormField() ) {
+                    data.file = item;
+                }
+            }
+            return data;
+        } catch ( FileUploadException e ) {
+            throw new RulesRepositoryException( e );
+        }
+        
+    }
+    
+    static class FormData {
+        FileItem file;
+        String uuid;
+    }
+
+}


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

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/webapp/WEB-INF/web.xml
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/webapp/WEB-INF/web.xml	2007-02-19 01:34:49 UTC (rev 9585)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/webapp/WEB-INF/web.xml	2007-02-19 08:16:44 UTC (rev 9586)
@@ -9,10 +9,20 @@
 		<servlet-name>JBRMSServiceServlet</servlet-name>
 		<servlet-class>org.drools.brms.server.JBRMSServiceServlet</servlet-class>
 	</servlet>  
+	
+	<servlet>
+		<servlet-name>FileUploadServlet</servlet-name>
+		<servlet-class>org.drools.brms.server.FileUploadServlet</servlet-class>
+	</servlet>  
   
 	<servlet-mapping>
 		<servlet-name>JBRMSServiceServlet</servlet-name>
 		<url-pattern>/org.drools.brms.JBRMS/jbrmsService</url-pattern>
 	</servlet-mapping>  
+	
+	<servlet-mapping>
+		<servlet-name>FileUploadServlet</servlet-name>
+		<url-pattern>/org.drools.brms.JBRMS/upload</url-pattern>
+	</servlet-mapping>  
   
 </web-app>




More information about the jboss-svn-commits mailing list