Java tutorial
/******************************************************************************* * Copyright (c) 2002-2006 Innoopract Informationssysteme GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Innoopract Informationssysteme GmbH - initial API and implementation ******************************************************************************/ package com.w4t.webfileuploadkit; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.eclipse.rwt.internal.lifecycle.HtmlResponseWriter; import org.eclipse.rwt.internal.service.ContextProvider; import org.eclipse.rwt.internal.util.HTML; import com.w4t.*; import com.w4t.engine.lifecycle.standard.EventQueue; import com.w4t.engine.requests.IFileUploadRequest; import com.w4t.event.WebFileUploadEvent; import com.w4t.internal.adaptable.IFileUploadAdapter; public abstract class WebFileUploadRenderer extends Renderer { public void readData(final WebComponent component) { HttpServletRequest request = ContextProvider.getRequest(); String fileName = request.getParameter(component.getUniqueID()); // don't ask for fileName == null; in this case there is actually an upload if (!"".equals(fileName)) { IFileUploadRequest uploadRequest = (IFileUploadRequest) request; WebFileUpload upload = (WebFileUpload) component; FileItem uploadedFile = uploadRequest.getFileItem(upload.getUniqueID()); if (uploadedFile.getSize() != 0) { IFileUploadAdapter adapter = (IFileUploadAdapter) upload.getAdapter(IFileUploadAdapter.class); adapter.setFileItem(uploadedFile); int id = WebFileUploadEvent.FILEUPLOADED; WebFileUploadEvent evt = new WebFileUploadEvent(upload, id); EventQueue.getEventQueue().addToQueue(evt); } } } public void render(final WebComponent component) throws IOException { WebFileUpload fileUpload = (WebFileUpload) component; WebForm webForm = fileUpload.getWebForm(); IFileUploadAdapter adapter = (IFileUploadAdapter) webForm.getAdapter(IFileUploadAdapter.class); adapter.setMultipartFormEncoding(true); HtmlResponseWriter out = getResponseWriter(); out.startElement(HTML.INPUT, null); out.writeAttribute(HTML.TYPE, HTML.FILE, null); out.writeAttribute(HTML.NAME, fileUpload.getUniqueID(), null); RenderUtil.writeUniversalAttributes(fileUpload); createSizeAttribute(fileUpload); appendFocusHandling(fileUpload); out.endElement(HTML.INPUT); } // Helping Methods ////////////////// abstract void appendFocusHandling(final WebFileUpload fileUpload) throws IOException; private void createSizeAttribute(final WebFileUpload fileUpload) throws IOException { int size = fileUpload.getSize(); if (size >= 0) { HtmlResponseWriter out = getResponseWriter(); out.writeAttribute(HTML.SIZE, String.valueOf(size), null); } } }