[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