Java tutorial
/** * Copyright (C) 2011 PROCESSBASE Ltd. * This library is free software; you can redistribute it and/or modify it under the terms * of the GNU Lesser General Public License as published by the Free Software Foundation * version 2.1 of the License. * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, see <http://www.gnu.org/licenses/>. */ package org.processbase.ui.bpm.admin; import com.vaadin.ui.Upload; import com.vaadin.ui.Upload.FailedEvent; import com.vaadin.ui.Upload.SucceededEvent; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.themes.Reindeer; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.UUID; import org.ow2.bonita.facade.def.element.BusinessArchive; import org.ow2.bonita.facade.def.majorElement.ProcessDefinition; import org.ow2.bonita.util.BusinessArchiveFactory; import org.processbase.ui.core.ProcessbaseApplication; import org.processbase.ui.core.template.PbWindow; /** * * @author mgubaidullin */ public class NewProcessDefinitionWindow extends PbWindow implements Upload.SucceededListener, Upload.FailedListener, Upload.Receiver { private Upload upload = new Upload("", (Upload.Receiver) this); private File file; private String filename; private String originalFilename; private String fileExt; public static String FILE_BAR = "FILE_BAR"; public static String FILE_JAR = "FILE_JAR"; private String fileType = null; public NewProcessDefinitionWindow() { super(); } public void initUI() { try { setCaption(ProcessbaseApplication.getCurrent().getPbMessages().getString("newProcessDefinition")); setModal(true); VerticalLayout layout = (VerticalLayout) this.getContent(); layout.setMargin(true); layout.setSpacing(true); layout.setStyleName(Reindeer.LAYOUT_WHITE); // prepare upload button upload.setButtonCaption(ProcessbaseApplication.getCurrent().getPbMessages().getString("btnUpload")); upload.addListener((Upload.SucceededListener) this); upload.addListener((Upload.FailedListener) this); addComponent(upload); setWidth("350px"); setResizable(false); } catch (Exception ex) { ex.printStackTrace(); showError(ex.getMessage()); } } public void uploadSucceeded(SucceededEvent event) { try { byte[] readData = new byte[new Long(event.getLength()).intValue()]; FileInputStream fis = null; fis = new FileInputStream(file); int i = fis.read(readData); fis.close(); if (this.fileType.equals(FILE_BAR)) { System.setProperty("javax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema", "com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory"); BusinessArchive businessArchive = BusinessArchiveFactory.getBusinessArchive(file); ProcessDefinition deployResult = ProcessbaseApplication.getCurrent().getBpmModule().deploy( businessArchive, ProcessbaseApplication.getCurrent().getPbMessages().getString("emptyCategory")); showInformation(ProcessbaseApplication.getCurrent().getPbMessages().getString("processUploaded") + ": " + deployResult.getLabel()); } else if (this.fileType.equals(FILE_JAR)) { ProcessbaseApplication.getCurrent().getBpmModule().deployJar(originalFilename, readData); showWarning(ProcessbaseApplication.getCurrent().getPbMessages().getString("jarUploaded") + ": " + originalFilename); } file.delete(); close(); } catch (Exception ex) { ex.printStackTrace(); showError(ex.getMessage()); } } public void uploadFailed(FailedEvent event) { showError(event.getReason().getMessage()); } public OutputStream receiveUpload(String filename, String MIMEType) { this.originalFilename = filename; this.filename = UUID.randomUUID().toString(); String[] fileNameParts = originalFilename.split("\\."); this.fileExt = fileNameParts.length > 0 ? fileNameParts[fileNameParts.length - 1] : null; if (fileExt.equalsIgnoreCase("bar")) { this.fileType = FILE_BAR; } else if (fileExt.equalsIgnoreCase("jar")) { this.fileType = FILE_JAR; } FileOutputStream fos = null; file = new File(this.filename); try { fos = new FileOutputStream(file); } catch (final java.io.FileNotFoundException ex) { ex.printStackTrace(); return null; } return fos; } }