/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.app.xmlui.cocoon.servlet.multipart; import org.apache.cocoon.servlet.multipart.MultipartException; import org.apache.cocoon.servlet.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import java.io.File; import java.io.IOException; import java.util.Hashtable; /** * This is the interface of Request Wrapper in Cocoon. * * @version $Id: RequestFactory.java 587750 2007-10-24 02:35:22Z vgritsenko $ */ public class DSpaceRequestFactory { private boolean saveUploadedFilesToDisk; private File uploadDirectory; private boolean allowOverwrite; private boolean silentlyRename; private String defaultCharEncoding; private int maxUploadSize; public DSpaceRequestFactory(boolean saveUploadedFilesToDisk, File uploadDirectory, boolean allowOverwrite, boolean silentlyRename, int maxUploadSize, String defaultCharEncoding) { this.saveUploadedFilesToDisk = saveUploadedFilesToDisk; this.uploadDirectory = uploadDirectory; this.allowOverwrite = allowOverwrite; this.silentlyRename = silentlyRename; this.maxUploadSize = maxUploadSize; this.defaultCharEncoding = defaultCharEncoding; if (saveUploadedFilesToDisk) { // Empty the contents of the upload directory File[] files = uploadDirectory.listFiles(); for (int i = 0; i < files.length; i++) { files[i].delete(); } } } /** * If the request includes a "multipart/form-data", then wrap it with * methods that allow easier connection to those objects since the servlet * API doesn't provide those methods directly. */ public HttpServletRequest getServletRequest(HttpServletRequest request) throws IOException, MultipartException { HttpServletRequest req = request; String contentType = request.getContentType(); if ((contentType != null) && (contentType.toLowerCase().indexOf("multipart/form-data") > -1)) { String charEncoding = request.getCharacterEncoding(); if (charEncoding == null || charEncoding.equals("")) { charEncoding = this.defaultCharEncoding; } DSpaceMultipartParser parser = new DSpaceMultipartParser( this.saveUploadedFilesToDisk, this.uploadDirectory, this.allowOverwrite, this.silentlyRename, this.maxUploadSize, charEncoding); Hashtable parts = parser.getParts(request); req = new MultipartHttpServletRequest(request,parts); } return req; } }