[jbpm-commits] JBoss JBPM SVN: r2560 - in jbpm3/trunk/modules/gwt-console: server and 6 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Oct 20 10:35:06 EDT 2008


Author: heiko.braun at jboss.com
Date: 2008-10-20 10:35:06 -0400 (Mon, 20 Oct 2008)
New Revision: 2560

Modified:
   jbpm3/trunk/modules/gwt-console/pom.xml
   jbpm3/trunk/modules/gwt-console/server/pom.xml
   jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/JBPM3Management.java
   jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/ProcessDAO.java
   jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java
   jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3ProcessDAO.java
   jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/MockProcessDAO.java
   jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/RestURL.java
   jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionList.java
   jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionListEditor.java
   jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java
   jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java
Log:
Implement process upload

Modified: jbpm3/trunk/modules/gwt-console/pom.xml
===================================================================
--- jbpm3/trunk/modules/gwt-console/pom.xml	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/pom.xml	2008-10-20 14:35:06 UTC (rev 2560)
@@ -21,6 +21,8 @@
       <jaf.version>1.1</jaf.version>
       <resteasy.version>1.0-beta-8</resteasy.version>
       <gson.version>1.2.2</gson.version>
+      <commons.fileupload.version>1.2.1</commons.fileupload.version>
+      <commons.io.version>1.3.2</commons.io.version>
    </properties>
 
    <modules>
@@ -59,8 +61,18 @@
          <dependency>
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
-            <version>${gson.version}</version>            
+            <version>${gson.version}</version>
          </dependency>
+         <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>${commons.fileupload.version}</version>
+         </dependency>
+         <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons.io.version}</version>
+         </dependency>
       </dependencies>
    </dependencyManagement>
 </project>

Modified: jbpm3/trunk/modules/gwt-console/server/pom.xml
===================================================================
--- jbpm3/trunk/modules/gwt-console/server/pom.xml	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/server/pom.xml	2008-10-20 14:35:06 UTC (rev 2560)
@@ -58,8 +58,17 @@
       </dependency>
       <dependency>
          <groupId>com.google.code.gson</groupId>
-         <artifactId>gson</artifactId>      
+         <artifactId>gson</artifactId>
       </dependency>
+      <dependency>
+         <groupId>commons-fileupload</groupId>
+         <artifactId>commons-fileupload</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>commons-io</groupId>
+         <artifactId>commons-io</artifactId>
+         <version>${commons.io.version}</version>
+      </dependency>
    </dependencies>
 
    <build>
@@ -84,5 +93,5 @@
          </plugin>
       </plugins>
       <finalName>gwt-console-server</finalName>
-   </build>   
+   </build>
 </project>

Modified: jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/JBPM3Management.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/JBPM3Management.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/JBPM3Management.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -21,6 +21,10 @@
  */
 package org.jboss.bpm.console.server;
 
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
 import org.jboss.bpm.console.client.model.jbpm3.ActiveNodeInfo;
 import org.jboss.bpm.console.client.model.jbpm3.DiagramInfo;
 import org.jboss.bpm.console.server.dao.DAOFactory;
@@ -28,12 +32,11 @@
 import org.jboss.bpm.console.server.dao.ProcessDAO;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
+import javax.ws.rs.*;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.Response;
+import java.util.Iterator;
+import java.util.List;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
@@ -68,6 +71,58 @@
 
    }
 
+   @POST
+   @Path("definitions/new")
+   @Produces("application/json")
+   public void postNewDefinition(
+     @Context
+     HttpServletRequest request
+   )
+   {
+      try
+      {
+         FileItemFactory factory = new DiskFileItemFactory();
+         ServletFileUpload upload = new ServletFileUpload(factory);
+         List items = upload.parseRequest(request);
+
+         Iterator iter = items.iterator();
+         while (iter.hasNext())
+         {
+            FileItem item = (FileItem) iter.next();
+
+            if (item.isFormField())
+            {
+               // ignore
+               System.out.println("Caught form field on file upload: " + item.getName());
+            }
+            else
+            {
+               String fieldName = item.getFieldName();
+               String fileName = item.getName();
+               String contentType = item.getContentType();
+               boolean isInMemory = item.isInMemory();
+               long sizeInBytes = item.getSize();
+
+               // Process a file upload in memory
+               byte[] data = item.get();
+
+               getProcessDAO(request).deployNewDefinition(data);
+
+               // Process stream
+               //InputStream uploadedStream = item.getInputStream();
+               //uploadedStream.close();
+
+            }
+
+
+         }
+      } catch (Exception e)
+      {
+         throw new WebApplicationException(e);
+      }
+
+   }
+
    @GET
    @Path("definitions/{id}/image")
    @Produces("image/jpeg")

Modified: jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/ProcessDAO.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/ProcessDAO.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/ProcessDAO.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -46,4 +46,6 @@
    void changeState(long instanceId, String nextState);
 
    ProcessInstance newInstance(long processId);
+
+   ProcessDefinition deployNewDefinition(byte[] data);
 }

Modified: jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3CommandDelegate.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -78,7 +78,7 @@
    public List<ProcessDefinition> getActualDefinitions()
    {
       List<org.jbpm.graph.def.ProcessDefinition> defs = (List<org.jbpm.graph.def.ProcessDefinition>)
-        facade.execute( new GetProcessDefinitionsCommand() );
+        facade.execute( new GetProcessDefinitionsCommand(false) );
       return defs;
    }
 
@@ -129,4 +129,13 @@
 
       return instance;
    }
+
+   public ProcessDefinition deploy(byte[] data)
+   {
+      org.jbpm.graph.def.ProcessDefinition p0 = (org.jbpm.graph.def.ProcessDefinition)
+        facade.execute(
+         new DeployProcessCommand(data)
+      );
+      return p0;  
+   }
 }

Modified: jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3ProcessDAO.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3ProcessDAO.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/JBPM3ProcessDAO.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -91,9 +91,16 @@
    public void changeState(long instanceId, String nextState)
    {
       org.jbpm.graph.exe.ProcessInstance p0 = delegate.getActualInstance(instanceId);
-      Transform.doTransition(p0, nextState);
+      Transform.doTransition(p0, nextState);  // modifies the actual PI
 
-      // persist
+      // TX commit will persist changes to the actual PI
+
       
    }
+
+   public ProcessDefinition deployNewDefinition(byte[] data)
+   {
+      org.jbpm.graph.def.ProcessDefinition p0 = delegate.deploy(data);
+      return Transform.processDefinition(p0);  
+   }
 }

Modified: jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/MockProcessDAO.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/MockProcessDAO.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/MockProcessDAO.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -142,4 +142,10 @@
    {
       throw new RuntimeException("Not implemented");
    }
+
+
+   public ProcessDefinition deployNewDefinition(byte[] data)
+   {
+      throw new RuntimeException("Not implemented");
+   }
 }

Modified: jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/RestURL.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/RestURL.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/RestURL.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -104,4 +104,9 @@
    {
       return getBaseUrl() + "/rs/process/definitions/"+processId+"/instances/new";
    }
+
+   public String getUploadDefinitionURL()
+   {
+      return getBaseUrl() + "/rs/jbpm3/definitions/new";
+   }
 }

Modified: jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionList.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionList.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionList.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -43,7 +43,7 @@
 
    public ProcessDefinitionList(String titleName, final ConsoleView view)
    {
-      super(titleName, view, getResourceUrl(view));
+      super(titleName, view, getResourceUrl(view), false);
    }
 
    private static String getResourceUrl(ConsoleView view)

Modified: jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionListEditor.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionListEditor.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessDefinitionListEditor.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -21,21 +21,29 @@
  */
 package org.jboss.bpm.console.client.process;
 
+import com.google.gwt.user.client.ui.HTML;
+import com.gwtext.client.core.Connection;
+import com.gwtext.client.core.EventObject;
+import com.gwtext.client.widgets.Button;
+import com.gwtext.client.widgets.Panel;
+import com.gwtext.client.widgets.Toolbar;
+import com.gwtext.client.widgets.ToolbarButton;
+import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+import com.gwtext.client.widgets.form.Form;
+import com.gwtext.client.widgets.form.FormPanel;
+import com.gwtext.client.widgets.form.TextField;
+import com.gwtext.client.widgets.form.event.FormListenerAdapter;
 import com.gwtext.client.widgets.layout.ColumnLayout;
 import com.gwtext.client.widgets.layout.ColumnLayoutData;
 import com.gwtext.client.widgets.layout.VerticalLayout;
-import com.gwtext.client.widgets.*;
-import com.gwtext.client.widgets.event.ButtonListenerAdapter;
-import com.gwtext.client.core.EventObject;
-import com.google.gwt.user.client.ui.HTML;
 import org.jboss.bpm.console.client.ConsoleView;
 import org.jboss.bpm.console.client.metric.MetricOverviewEditor;
 import org.jboss.bpm.console.client.model.DAOFactory;
 import org.jboss.bpm.console.client.model.HelpDAO;
 import org.jboss.bpm.console.client.widgets.*;
 
+import java.util.HashMap;
 import java.util.Map;
-import java.util.HashMap;
 
 /**
  * @author Heiko.Braun <heiko.braun at jboss.com>
@@ -62,10 +70,71 @@
 
       // ----------------------------------
 
+      final Panel leftHand = new Panel();
+      leftHand.setFrame(false);
+      leftHand.setHeader(false);
+      leftHand.setBorder(false);      
+      
       processDefinitions = new ProcessDefinitionList("Process Definitions", view);
 
       // ----------------------------------
 
+      Panel outerFormPanel = new Panel();
+      outerFormPanel.setBorder(false);
+      outerFormPanel.setPaddings(10);
+      
+
+      final FormPanel formPanel = new FormPanel();
+      formPanel.setFrame(true);
+      formPanel.setTitle("Upload new process definition");
+      formPanel.setLabelWidth(75);
+      formPanel.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
+     
+      formPanel.setFileUpload(true);
+      final TextField file = new TextField("File", "file");
+      file.setInputType("file");      
+      
+      formPanel.add(file);
+
+      Button uploadButton = new Button("Upload", new ButtonListenerAdapter()
+      {
+         public void onClick(Button button, EventObject e)
+         {
+            formPanel.getForm().submit(
+              view.getRestURL().getUploadDefinitionURL(), null,
+              Connection.POST, "Uploading definition ...", false);
+         }
+      });      
+      formPanel.addButton(uploadButton);
+      formPanel.getForm().addListener(
+        new FormListenerAdapter()
+        {
+
+           public boolean doBeforeAction(Form form)
+           {
+              // TODO: validation
+              return true;
+           }
+
+           public void onActionComplete(Form form, int i, String string)
+           {
+              processDefinitions.reloadStore();
+              leftHand.doLayout();
+              form.reset();
+           }
+
+           public void onActionFailed(Form form, int i, String string)
+           {
+              super.onActionFailed(form, i, string);
+              view.setError("Failed to upload process definition: " + string );
+           }
+        }
+      );
+
+      outerFormPanel.add(formPanel);
+
+      // ----------------------------------
+
       // TODO: introduce abstractions and integrate with DAO
       Map chartValues = new HashMap();
       chartValues.put("1", new Double(0.65));
@@ -99,7 +168,7 @@
 
       Toolbar bottomToolbar = new Toolbar();
       bottomToolbar.addFill();
-       bottomToolbar.addButton(
+      bottomToolbar.addButton(
         new ToolbarButton("More metrics", new ButtonListenerAdapter() {
            public void onClick(Button button, EventObject e)
            {
@@ -122,15 +191,18 @@
       HelpPanel help = new HelpPanel(UIConstants.TEASER_PANEL_WIDTH, 180, "About process definitions");
       help.setContent( DAOFactory.createHelpDAO().getHelpByReference(HelpDAO.REF_PROCESS_DEFINITIONS));
 
-       // ----------------------------------
+      // ----------------------------------
 
       teaserPanel = new TeaserPanel();
       teaserPanel.add(help);
       teaserPanel.add(metricPanel);
 
-       // ----------------------------------
+      // ----------------------------------
+
+      leftHand.add(processDefinitions);
+      leftHand.add(outerFormPanel);            
       
-      this.add(processDefinitions, new ColumnLayoutData(0.7) );
+      this.add(leftHand, new ColumnLayoutData(0.7) );
       this.add(teaserPanel , new ColumnLayoutData(0.3) );
 
       // init gchart

Modified: jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -48,7 +48,7 @@
 
    public ProcessInstanceList(ProcessDefinition procDef, String titleName, ConsoleView view)
    {
-      super(titleName, view, getResourceUrl(view, procDef.getProcessId()));
+      super(titleName, view, getResourceUrl(view, procDef.getProcessId()), true);
       this.parent = procDef;
    }
 
@@ -138,6 +138,7 @@
                              public void onResponseReceived(Request request, Response response)
                              {
                                 reloadStore();
+                                doLayout();
                              }
 
                              public void onError(Request request, Throwable t)

Modified: jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java	2008-10-20 14:30:32 UTC (rev 2559)
+++ jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java	2008-10-20 14:35:06 UTC (rev 2560)
@@ -39,7 +39,7 @@
  * The view will be lazily initialized by calling {@link com.gwtext.client.data.Store#load()}
  * in {@link com.gwtext.client.widgets.event.PanelListenerAdapter#doBeforeRender(com.gwtext.client.widgets.Component)}
  * and subsequently add the grid to the container panel upon {@link com.gwtext.client.data.event.StoreListenerAdapter#onLoad(com.gwtext.client.data.Store, com.gwtext.client.data.Record[])}
- * 
+ *
  * @author Heiko.Braun <heiko.braun at jboss.com>
  */
 public abstract class RemoteListView extends Panel
@@ -54,13 +54,15 @@
    private PagingToolbar pagingToolbar;
 
    private boolean storeInit = false;
-   
-   public RemoteListView(String titleName, ConsoleView view, String resourceUrl)
+   private boolean hasAddButton;
+
+   public RemoteListView(String titleName, ConsoleView view, String resourceUrl, boolean hasAddButton)
    {
       super();
 
       this.title = titleName;
       this.view = view;
+      this.hasAddButton = hasAddButton;
 
       // ----------------------------------------
 
@@ -117,9 +119,9 @@
 
       grid.setTitle(titleName);
       grid.setFrame(true);
-      grid.setWidth(UIConstants.EDITOR_PANEL_WIDTH);      
+      grid.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
       grid.stripeRows(true);
-      grid.setLoadMask(true);  
+      grid.setLoadMask(true);
 
       grid.addGridCellListener( new ListViewCellListener() );
 
@@ -132,7 +134,7 @@
       pagingToolbar.setPageSize(PAGE_SIZE);
       pagingToolbar.setDisplayInfo(true);
       pagingToolbar.setDisplayMsg("{0} - {1} of {2}");
-      pagingToolbar.setEmptyMsg("No entities to display");   
+      //pagingToolbar.setEmptyMsg("No entities to display");
 
       pagingToolbar.addSeparator();
       pagingToolbar.addSpacer();
@@ -152,17 +154,20 @@
       pagingToolbar.addButton(examineButton);
 
 
-      ToolbarButton addButton = new ToolbarButton("Add", new ButtonListenerAdapter()
+      if(hasAddButton)
       {
-         public void onClick(Button button, EventObject e)
+         ToolbarButton addButton = new ToolbarButton("Add", new ButtonListenerAdapter()
          {
-            onAdd();
-         }
-      });
-      //addButton.setIcon("images/icons/add.png");
-      addButton.setTooltip("Add");
-      pagingToolbar.addButton( addButton );
-
+            public void onClick(Button button, EventObject e)
+            {
+               onAdd();
+            }
+         });
+         //addButton.setIcon("images/icons/add.png");
+         addButton.setTooltip("Add");
+         pagingToolbar.addButton( addButton );
+      }
+      
       ToolbarButton deleteButton = new ToolbarButton("Remove", new ButtonListenerAdapter()
       {
          public void onClick(Button button, EventObject e)
@@ -179,12 +184,12 @@
       //deleteButton.setIcon("images/icons/remove.png");
       deleteButton.setTooltip("Remove");
       pagingToolbar.addButton(deleteButton);
-      
+
       return pagingToolbar;
    }
 
    protected abstract void onAdd();
-   
+
    protected abstract void onExamine(final int row);
 
    protected abstract void onDelete(final int row);
@@ -206,7 +211,7 @@
          this.containerPanel = containerPanel;
          this.grid = grid;
       }
-      
+
       /**
        * load callback will push records to implementation
        * and (!) add the grid to the container panel.
@@ -257,6 +262,6 @@
 
    public void reloadStore()
    {
-      store.load(0,PAGE_SIZE);      
+      store.load(0,PAGE_SIZE);
    }
 }




More information about the jbpm-commits mailing list