/**
* This file Copyright (c) 2003-2012 Magnolia International
* Ltd. (http://www.magnolia-cms.com). All rights reserved.
*
*
* This file is dual-licensed under both the Magnolia
* Network Agreement and the GNU General Public License.
* You may elect to use one or the other of these licenses.
*
* This file is distributed in the hope that it will be
* useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
* Redistribution, except as permitted by whichever of the GPL
* or MNA you select, is prohibited.
*
* 1. For the GPL license (GPL), you can redistribute and/or
* modify this file under the terms of the GNU General
* Public License, Version 3, as published by the Free Software
* Foundation. You should have received a copy of the GNU
* General Public License, Version 3 along with this program;
* if not, write to the Free Software Foundation, Inc., 51
* Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* 2. For the Magnolia Network Agreement (MNA), this file
* and the accompanying materials are made available under the
* terms of the MNA which accompanies this distribution, and
* is available at http://www.magnolia-cms.com/mna.html
*
* Any modifications to this file must keep this entire header
* intact.
*
*/
package info.magnolia.cms.beans.runtime;
import org.apache.commons.lang.StringUtils;
import java.io.File;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;
/**
* A util class to access file uploads in multipart post requests. Use {@link #getDocument(String)} to access an uploaded file.
* @author Sameer Charles
* @version 1.1
*/
public class MultipartForm {
/**
* The name of the request attribute containing a MultipartForm instance.
*/
public static final String REQUEST_ATTRIBUTE_NAME = "multipartform"; //$NON-NLS-1$
private final Map<String, String[]> parameters;
private final Map<String, Document> documents;
private final Map parameterList;
public MultipartForm() {
this.parameters = new Hashtable<String, String[]>();
this.documents = new Hashtable<String, Document>();
this.parameterList = new Hashtable();
}
/**
* @deprecated since 4.0 - should not be needed anymore since MAGNOLIA-2449 - request parameters should be correctly wrapped.
*/
public void addParameter(String name, Object value) {
if (value instanceof String[]) {
this.parameters.put(name, (String[]) value);
} else {
this.parameters.put(name, new String[]{(String) value });
}
}
/**
* @deprecated since 4.0 - should not be needed anymore since MAGNOLIA-2449 - request parameters should be correctly wrapped.
*/
public void removeParameter(String name) {
this.parameters.remove(name);
}
/**
* @deprecated since 4.0 - should not be needed anymore since MAGNOLIA-2449 - request parameters should be correctly wrapped.
*/
public Map<String, String[]> getParameters() {
return this.parameters;
}
/**
* @deprecated since 4.0 - should not be needed anymore since MAGNOLIA-2449 - request parameters should be correctly wrapped.
*/
public String getParameter(String name) {
try {
String[] params = this.parameters.get(name);
if (params != null && params.length > 0) {
return params[0];
}
return null;
} catch (Exception e) {
return null;
}
}
/**
* @deprecated since 4.0 - should not be needed anymore since MAGNOLIA-2449 - request parameters should be correctly wrapped.
*/
public String[] getParameterValues(String name) {
try {
return ((String[]) this.parameterList.get(name));
} catch (Exception e) {
return null;
}
}
/**
* @deprecated since 4.0 - should not be needed anymore since MAGNOLIA-2449 - request parameters should be correctly wrapped.
*/
public void addparameterValues(String name, String[] values) {
this.parameterList.put(name, values);
}
public void addDocument(String atomName, String fileName, String type, File file) {
if (StringUtils.isEmpty(fileName)) {
return;
}
Document document = new Document();
document.setAtomName(atomName);
document.setType(type);
document.setFile(file);
if (!StringUtils.contains(fileName, ".")) { //$NON-NLS-1$
document.setExtension(StringUtils.EMPTY);
document.setFileName(fileName);
} else {
document.setExtension(StringUtils.substringAfterLast(fileName, ".")); //$NON-NLS-1$
document.setFileName(StringUtils.substringBeforeLast(fileName, ".")); //$NON-NLS-1$
}
this.documents.put(atomName, document);
}
public Document getDocument(String name) {
return this.documents.get(name);
}
public Map<String, Document> getDocuments() {
return this.documents;
}
/**
* @deprecated since 4.0 - should not be needed anymore since MAGNOLIA-2449 - request parameters should be correctly wrapped.
*/
public Enumeration<String> getParameterNames() {
return ((Hashtable<String, String[]>) this.parameters).keys();
}
}