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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Apr 23 11:14:35 EDT 2007


Author: fmeyer
Date: 2007-04-23 11:14:34 -0400 (Mon, 23 Apr 2007)
New Revision: 11234

Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/AdminFeature.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/BackupManager.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelAttachmentFileWidget.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/server/FileUploadServlet.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
Log:
JBRULES-571 Export-Import from XML drools:repository front end task

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/AdminFeature.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/AdminFeature.java	2007-04-23 15:13:04 UTC (rev 11233)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/AdminFeature.java	2007-04-23 15:14:34 UTC (rev 11234)
@@ -27,7 +27,6 @@
       initWidget( tab );
       
   }
-
   
   public static ComponentInfo init() {
     return new ComponentInfo("Admin",
@@ -42,6 +41,4 @@
 
   public void onShow() {
   }
-
-
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/BackupManager.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/BackupManager.java	2007-04-23 15:13:04 UTC (rev 11233)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/admin/BackupManager.java	2007-04-23 15:14:34 UTC (rev 11234)
@@ -1,31 +1,140 @@
-package org.drools.brms.client.admin;
-
-import org.drools.brms.client.common.FormStyleLayout;
-import org.drools.brms.client.common.GenericCallback;
-import org.drools.brms.client.common.LoadingPopup;
-import org.drools.brms.client.rpc.RepositoryServiceFactory;
-
-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.HTML;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.ListBox;
-import com.google.gwt.user.client.ui.TextBox;
-import com.google.gwt.user.client.ui.Widget;
-
-public class BackupManager extends Composite {
-
-    private ListBox currentStatuses;
-
-    public BackupManager() {
-        FormStyleLayout form = new FormStyleLayout("images/backup_large.png", "Manage Backups");
-        form.addAttribute( "", new HTML("<i>-</i>") );
-        
-        currentStatuses = new ListBox();
-        currentStatuses.setVisibleItemCount( 7 );
-        currentStatuses.setWidth( "50%" );
-
-        initWidget( form );
-    }
-}
+package org.drools.brms.client.admin;
+
+import org.drools.brms.client.common.FormStyleLayout;
+import org.drools.brms.client.common.GenericCallback;
+import org.drools.brms.client.common.LoadingPopup;
+import org.drools.brms.client.rpc.RepositoryServiceFactory;
+
+import com.google.gwt.core.client.GWT;
+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.HTML;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class BackupManager extends Composite {
+
+    public static final String FORM_FIELD_REPOSITORY = "repo";
+
+    public BackupManager() {
+
+        FormStyleLayout widtab = new FormStyleLayout( "images/backup_large.png",
+                                                      "Manage Backups" );
+
+        widtab.addAttribute( "",
+                             new HTML( "<i>Import and Export rules repository 'drools:repository'</i>" ) );
+        widtab.addRow( new HTML( "<hr/>" ) );
+
+        widtab.addAttribute( "Import 'drools:repository' from xml file",
+                             newImportWidget() );
+        widtab.addAttribute( "Export 'drools:repository'",
+                             newExportWidget() );
+        widtab.addRow( new HTML( "<hr/>" ) );
+
+        widtab.addAttribute( "Delete rules repository",
+                             cleanRepository() );
+
+        initWidget( widtab );
+
+    }
+
+    private Widget newExportWidget() {
+        HorizontalPanel horiz = new HorizontalPanel();
+
+        Button create = new Button( "Export" );
+        create.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                exportRepository();
+            }
+        } );
+
+        horiz.add( create );
+        return horiz;
+    }
+    
+    private Widget cleanRepository() {
+        HorizontalPanel horiz = new HorizontalPanel();
+
+        Button delete = new Button( "Execute" );
+        delete.addClickListener( new ClickListener() {
+            public void onClick(Widget w) {
+                if ( Window.confirm( "Are you really sure about delete your entry drools repository database?" ) ) {  
+                    RepositoryServiceFactory.getService().clearRulesRepository( new GenericCallback() {
+                        public void onSuccess(Object data) {
+                            Window.alert( "Rules repository deleted." );
+                        }
+                    });
+                } else {
+                    Window.alert( "Operation cancelled" );
+                }
+            }
+        } );
+        
+        horiz.add( delete );
+        return horiz;
+    }
+
+    
+
+    private Widget newImportWidget() {
+
+        final FormPanel uploadFormPanel = new FormPanel();
+        uploadFormPanel.setAction( GWT.getModuleBaseURL() + "fileManager" );
+        uploadFormPanel.setEncoding( FormPanel.ENCODING_MULTIPART );
+        uploadFormPanel.setMethod( FormPanel.METHOD_POST );
+
+        HorizontalPanel panel = new HorizontalPanel();
+        uploadFormPanel.setWidget( panel );
+
+        final FileUpload upload = new FileUpload();
+        upload.setName( "uploadFormElement" );
+        panel.add( upload );
+
+        panel.add( new Button( "Submit",
+                               new ClickListener() {
+                                   public void onClick(Widget sender) {
+                                       LoadingPopup.showMessage( "Importing 'drools:repository' file" );
+                                       uploadFormPanel.submit();
+                                   }
+                               } ) );
+
+        uploadFormPanel.addFormHandler( new FormHandler() {
+            public void onSubmitComplete(FormSubmitCompleteEvent event) {
+                if ( event.getResults() != null ) Window.alert( event.getResults() );
+                else Window.alert( "Rules repository imported successful" );
+
+                LoadingPopup.close();
+            }
+
+            public void onSubmit(FormSubmitEvent event) {
+                if ( upload.getFilename().length() == 0 ) {
+                    Window.alert( "You did not specify an exported repository filename!" );
+                    event.setCancelled( true );
+                } else if ( !upload.getFilename().endsWith( ".xml" ) ) {
+                    Window.alert( "Please specify a valid repository xml file." );
+                    event.setCancelled( true );
+                }
+
+            }
+        } );
+
+        return uploadFormPanel;
+    }
+
+    private void exportRepository() {
+        byte[] returnfromfunction = null;
+        LoadingPopup.showMessage( "Exporting 'drools:repository' file" );
+        Window.open( GWT.getModuleBaseURL() + "fileManager?" + FORM_FIELD_REPOSITORY + "=true",
+                     "downloading...",
+                     "" );
+        LoadingPopup.close();
+    }
+
+}

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java	2007-04-23 15:13:04 UTC (rev 11233)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/common/FormStyleLayout.java	2007-04-23 15:14:34 UTC (rev 11234)
@@ -43,41 +43,47 @@
         numInLayout = 0;
         this.layout.clear();
     }
-    
+
     /**
      * Add a widget to the "form".
      */
     public void addAttribute(String lbl,
-                     Widget editor) {
+                             Widget editor) {
         HTML label = new HTML("<b>" + lbl + "</b>");
         layout.setWidget( numInLayout, 0, label );
         formatter.setAlignment( numInLayout, 0, HasHorizontalAlignment.ALIGN_RIGHT, HasVerticalAlignment.ALIGN_TOP );
         layout.setWidget( numInLayout, 1, editor );
         formatter.setAlignment( numInLayout, 1, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP );
-        
+
         numInLayout++;
-        
     }
-    
+
+    public void addWidget(Widget editor) {
+        layout.setWidget( numInLayout, 1, editor );
+        formatter.setAlignment( numInLayout, 1, HasHorizontalAlignment.ALIGN_CENTER, HasVerticalAlignment.ALIGN_TOP );
+        numInLayout++;
+    }
+
+
     /** Adds a widget that takes up a whole row. */
     public void addRow(Widget w) {
         layout.setWidget( numInLayout, 0, w);
         formatter.setColSpan( numInLayout, 0, 2 );
         numInLayout++;
     }
-    
+
     /**
      * Adds a header at the top.
      */
     protected void addHeader(String image, String title) {
         layout.setWidget( 0, 0, new Image(image) );
         formatter.setAlignment( 0, 0, HasHorizontalAlignment.ALIGN_LEFT, HasVerticalAlignment.ALIGN_TOP );
-        
+
         Label name = new Label(title);
         name.setStyleName( "resource-name-Label" );
-        
+
         layout.setWidget( 0, 1, name );
         numInLayout++;
     }    
-    
+
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelAttachmentFileWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelAttachmentFileWidget.java	2007-04-23 15:13:04 UTC (rev 11233)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/packages/ModelAttachmentFileWidget.java	2007-04-23 15:14:34 UTC (rev 11234)
@@ -28,27 +28,36 @@
  * Model packages are jar files. 
  * 
  * @author Michael Neale
+ * @author Fernando Meyer
  */
+
 public class ModelAttachmentFileWidget extends Composite {
 
-
-
     public static final String FORM_FIELD_UUID = "uuid";
     private FormPanel form;
     private Button ok;
     private HorizontalPanel busy;
+    private RuleAsset asset;
+    private RuleViewer viewer;
+    
 
     public ModelAttachmentFileWidget(final RuleAsset asset, final RuleViewer viewer) {
-        
+        this.asset = asset;
+        this.viewer = viewer;
+        initWidgets(asset.uuid, asset.metaData.name);
+        initAssetHandlers();
+    }
+    
+    protected void initWidgets(final String uuid, String formName) {
         form = new FormPanel();
-        form.setAction( GWT.getModuleBaseURL() + "fileManager"   );
+        form.setAction( GWT.getModuleBaseURL() + "fileManager" );
         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) );
+        fields.add( getHiddenField(FORM_FIELD_UUID, uuid) );
   
         ok = new Button("Upload");
                 
@@ -58,14 +67,14 @@
         form.add( fields );
         
         FormStyleLayout layout = new FormStyleLayout("images/model_large.png", 
-                                                     asset.metaData.name);
+                                                     formName);
 
         
         layout.addAttribute( "Upload new version:", form );
         Button dl = new Button("Download");
         dl.addClickListener( new ClickListener() {
             public void onClick(Widget w) {
-                Window.open( GWT.getModuleBaseURL() + "fileManager?" +  FORM_FIELD_UUID + "=" + asset.uuid, 
+                Window.open( GWT.getModuleBaseURL() + "fileManager?" +  FORM_FIELD_UUID + "=" + uuid, 
                              "downloading...", "" );
             }            
         });
@@ -76,16 +85,20 @@
         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();              
+                submitUpload();
             }            
         });
+                
+        initWidget( layout );
         
+        this.setStyleName( "editable-Surface" );        
+    }
+    
+    void initAssetHandlers( ) {
         form.addFormHandler( new FormHandler() {
 
             public void onSubmit(FormSubmitEvent ev) {                
@@ -99,12 +112,7 @@
                     }
             }
             
-        });
-        
-        initWidget( layout );
-        
-        this.setStyleName( "editable-Surface" );
-        
+        });        
     }
 
     protected void submitUpload() {

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-04-23 15:13:04 UTC (rev 11233)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryService.java	2007-04-23 15:14:34 UTC (rev 11234)
@@ -42,11 +42,22 @@
      */
     public String createNewRule(String ruleName, String description, String initialCategory, String initialPackage, String format) throws SerializableException;
     
-
+    /**
+     * Delete un checked in Asset  
+     */
     public void deleteUncheckedRule(String ruleName, String initialPackage);
     
+    /**
+     * Export rules repository to a compressed array of bytes  
+     */
+    public byte[] exportRepository() throws SerializableException;
     
     /**
+     * Clear the rules repositoty, Use at your own risk. 
+     */
+    public void clearRulesRepository();
+    
+    /**
      * This returns a list of packages where rules may be added.
      * Only the UUID and the name need to be populated.
      */

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-04-23 15:13:04 UTC (rev 11233)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/rpc/RepositoryServiceAsync.java	2007-04-23 15:14:34 UTC (rev 11234)
@@ -22,6 +22,8 @@
     public void createCategory(java.lang.String p0, java.lang.String p1, java.lang.String p2, AsyncCallback cb);
     public void createNewRule(java.lang.String p0, java.lang.String p1, java.lang.String p2, java.lang.String p3, java.lang.String p4, AsyncCallback cb);
     public void deleteUncheckedRule(java.lang.String p0, java.lang.String p1, AsyncCallback cb);
+    public void exportRepository(AsyncCallback cb);
+    public void clearRulesRepository(AsyncCallback cb);
     public void listPackages(AsyncCallback cb);
     public void loadRuleAsset(java.lang.String p0, AsyncCallback cb);
     public void loadAssetHistory(java.lang.String p0, AsyncCallback cb);

Modified: 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	2007-04-23 15:13:04 UTC (rev 11233)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/FileUploadServlet.java	2007-04-23 15:14:34 UTC (rev 11234)
@@ -3,10 +3,12 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.PrintWriter;
 import java.util.Iterator;
 import java.util.List;
 
 import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -16,6 +18,7 @@
 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.admin.BackupManager;
 import org.drools.brms.client.packages.ModelAttachmentFileWidget;
 import org.drools.brms.server.util.TestEnvironmentSessionHelper;
 import org.drools.repository.AssetItem;
@@ -30,6 +33,7 @@
  * in assets in the repository.
  * 
  * @author Michael Neale
+ * @author Fernando Meyer
  */
 public class FileUploadServlet extends HttpServlet {
 
@@ -38,78 +42,95 @@
     /**
      * The post accepts files for attachment to an asset.
      */
+
+    //TODO: must extract bunisess logic form servlet action
+    
     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" );
+        RulesRepository repo = getRepository();
+
+        if ( uploadItem.file.getFieldName().equals( "uploadFormElement" ) ) {
+            processUploadRepository( uploadItem.file.getInputStream() );
             return;
+        } else if ( uploadItem.file != null && uploadItem.uuid != null ) {
+            attachFile( uploadItem,
+                        repo );
+            uploadItem.file.getInputStream().close();
+            response.getWriter().write( "OK" );
+            return;
         }
-        
-        
-        RulesRepository repo = getRepository( );
-        attachFile( uploadItem, repo );
-        
-        uploadItem.file.getInputStream().close();
-        
-        response.getWriter().write( "OK" );
+        response.getWriter().write( "NO-SCRIPT-DATA" );
     }
-    
-    /** 
-     * The get returns files based on UUID.
-     * you can do a request like /fileManager?uuid=..... 
-     * (need to know the UUID) and it will return it as a file.
+
+    protected void processUploadRepository(InputStream file) throws IOException {
+        byte[] byteArray = new byte[file.available()];
+        RulesRepository repo = getRepository();
+
+        file.read( byteArray );
+        repo.importRulesRepository( byteArray );
+    }
+
+    /**
+     * doGet acting like a dispatcher.
      */
+
     protected void doGet(HttpServletRequest req,
                          HttpServletResponse res) throws ServletException,
-                                                  IOException {
-        
+                                                 IOException {
+
         String uuid = (String) req.getParameter( ModelAttachmentFileWidget.FORM_FIELD_UUID );
-        if (uuid == null) {
+        String repo = (String) req.getParameter( BackupManager.FORM_FIELD_REPOSITORY );
+
+        if ( uuid != null ) {
+            getFilebyUUID( uuid,
+                           req,
+                           res );
+        } else if ( repo != null ) {
+            ServletOutputStream out = res.getOutputStream();
+            try {
+
+                res.setContentType( "application/zip" );
+                res.setHeader( "Content-Disposition",
+                               "inline; filename=repository_export.zip;" );
+
+                out.write( getRepository().exportRulesRepository() );
+                out.flush();
+            } catch ( Exception e ) {
+                e.printStackTrace( new PrintWriter( out ) );
+            }
+        } else {
             res.sendError( HttpServletResponse.SC_BAD_REQUEST );
             return;
         }
-        AssetItem item = getRepository( ).loadAssetByUUID( uuid );
-        
-        res.setContentType("application/x-download");
-        res.setHeader("Content-Disposition", "attachment; filename=" + item.getBinaryContentAttachmentFileName());
-        
-        byte[] data = item.getBinaryContentAsBytes();
-        res.setContentLength( data.length );
-        
-        OutputStream out = res.getOutputStream();
-        out.write( data );        
-        out.flush();
-        
-    }    
+    }
 
     private RulesRepository getRepository() {
-        if (Contexts.isApplicationContextActive()) {
+        if ( Contexts.isApplicationContextActive() ) {
             return (RulesRepository) Component.getInstance( "repository" );
         } else {
             //MN: NOTE THIS IS MY HACKERY TO GET IT WORKING IN GWT HOSTED MODE.
             //THIS IS ALL THAT IS NEEDED.
-            System.out.println("WARNING: RUNNING IN NON SEAM MODE SINGLE USER MODE - ONLY FOR TESTING AND DEBUGGING !!!!!");
+            System.out.println( "WARNING: RUNNING IN NON SEAM MODE SINGLE USER MODE - ONLY FOR TESTING AND DEBUGGING !!!!!" );
             ServiceImplementation impl = new ServiceImplementation();
-             
+
             try {
-                return new RulesRepository(TestEnvironmentSessionHelper.getSession(false));
+                return new RulesRepository( TestEnvironmentSessionHelper.getSession( false ) );
             } catch ( Exception e ) {
-                throw new IllegalStateException("Unable to launch debug mode...");
-            }            
+                throw new IllegalStateException( "Unable to launch debug mode..." );
+            }
         }
-
     }
 
     void attachFile(FormData uploadItem,
-                            RulesRepository repo) throws IOException {
+                    RulesRepository repo) throws IOException {
         String uuid = uploadItem.uuid;
         InputStream fileData = uploadItem.file.getInputStream();
         String fileName = uploadItem.file.getName();
-        
+
         attachFileToAsset( repo,
                            uuid,
                            fileData,
@@ -120,9 +141,10 @@
      * This utility method attaches a file to an asset.
      */
     public static void attachFileToAsset(RulesRepository repo,
-                                   String uuid,
-                                   InputStream fileData,
-                                   String fileName) {
+                                         String uuid,
+                                         InputStream fileData,
+                                         String fileName) {
+
         AssetItem item = repo.loadAssetByUUID( uuid );
         item.updateBinaryContentAttachment( fileData );
         item.updateBinaryContentAttachmentFileName( fileName );
@@ -135,14 +157,14 @@
     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( ModelAttachmentFileWidget.FORM_FIELD_UUID )) {
+                if ( item.isFormField() && item.getFieldName().equals( ModelAttachmentFileWidget.FORM_FIELD_UUID ) ) {
                     data.uuid = item.getString();
                 } else if ( !item.isFormField() ) {
                     data.file = item;
@@ -152,15 +174,35 @@
         } catch ( FileUploadException e ) {
             throw new RulesRepositoryException( e );
         }
-        
+
     }
-    
+
     static class FormData {
         FileItem file;
-        String uuid;
+        String   uuid;
     }
 
+    /** 
+     * The get returns files based on UUID.
+     * you can do a request like /fileManager?uuid=..... 
+     * (need to know the UUID) and it will return it as a file.
+     */
 
+    private void getFilebyUUID(String uuid,
+                               HttpServletRequest req,
+                               HttpServletResponse res) throws IOException {
 
+        AssetItem item = getRepository().loadAssetByUUID( uuid );
 
+        res.setContentType( "application/x-download" );
+        res.setHeader( "Content-Disposition",
+                       "attachment; filename=" + item.getBinaryContentAttachmentFileName() );
+
+        byte[] data = item.getBinaryContentAsBytes();
+        res.setContentLength( data.length );
+
+        OutputStream out = res.getOutputStream();
+        out.write( data );
+        out.flush();
+    }
 }

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java	2007-04-23 15:13:04 UTC (rev 11233)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/ServiceImplementation.java	2007-04-23 15:14:34 UTC (rev 11234)
@@ -1,5 +1,6 @@
 package org.drools.brms.server;
 
+import java.io.IOException;
 import java.text.DateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -11,6 +12,7 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.jcr.PathNotFoundException;
 import javax.jcr.RepositoryException;
 
 import org.apache.log4j.Logger;
@@ -35,6 +37,7 @@
 import org.drools.repository.CategoryItem;
 import org.drools.repository.PackageItem;
 import org.drools.repository.RulesRepository;
+import org.drools.repository.RulesRepositoryAdministrator;
 import org.drools.repository.RulesRepositoryException;
 import org.drools.repository.StateItem;
 import org.drools.repository.VersionableItem;
@@ -348,6 +351,17 @@
         
     }
 
+    @WebRemote 
+    public byte[] exportRepository() throws SerializableException {
+        byte [] exportedOutput = null; 
+        try {
+             exportedOutput =  repository.exportRulesRepository();
+        } catch ( Exception e ) {
+            throw new SerializableException( "Unable to export repository" );
+        } 
+        return exportedOutput;
+    }
+    
     @WebRemote
     public String createPackage(String name,
                                 String description) throws SerializableException {
@@ -578,8 +592,6 @@
         
     }
 
-
-    
     @WebRemote    
     public void removeCategory(String categoryPath) throws SerializableException {
         log.info( "REMOVING CATEGORY path: [" + categoryPath + "]" );
@@ -591,6 +603,12 @@
             throw new SerializableException( e.getMessage() );
         }
     }
+    
+    @WebRemote 
+    public void clearRulesRepository() {
+        RulesRepositoryAdministrator admin = new RulesRepositoryAdministrator(repository.getSession());
+        admin.clearRulesRepository();
+    }
 
     @WebRemote    
     public SuggestionCompletionEngine loadSuggestionCompletionEngine(String packageName) throws SerializableException {




More information about the jboss-svn-commits mailing list