001    /**
002     * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.upload;
016    
017    import com.liferay.portal.kernel.upload.UploadPortletRequest;
018    import com.liferay.portal.kernel.upload.UploadServletRequest;
019    
020    import java.io.File;
021    
022    import java.util.ArrayList;
023    import java.util.Collections;
024    import java.util.Enumeration;
025    import java.util.HashMap;
026    import java.util.List;
027    import java.util.Map;
028    
029    import javax.servlet.http.HttpServletRequestWrapper;
030    
031    /**
032     * @author Brian Wing Shun Chan
033     * @author Harry Mark
034     */
035    public class UploadPortletRequestImpl
036            extends HttpServletRequestWrapper implements UploadPortletRequest {
037    
038            public UploadPortletRequestImpl(
039                    UploadServletRequest uploadRequest, String namespace) {
040    
041                    super(uploadRequest);
042    
043                    _uploadRequest = uploadRequest;
044                    _namespace = namespace;
045            }
046    
047            public void cleanUp() {
048                    _uploadRequest.cleanUp();
049            }
050    
051            public String getContentType(String name) {
052                    String contentType = _uploadRequest.getContentType(_namespace + name);
053    
054                    if (contentType == null) {
055                            contentType = _uploadRequest.getContentType(name);
056                    }
057    
058                    return contentType;
059            }
060    
061            public File getFile(String name) {
062                    File file = _uploadRequest.getFile(_namespace + name);
063    
064                    if (file == null) {
065                            file = _uploadRequest.getFile(name);
066                    }
067    
068                    return file;
069            }
070    
071            public String getFileName(String name) {
072                    String fileName = _uploadRequest.getFileName(_namespace + name);
073    
074                    if (fileName == null) {
075                            fileName = _uploadRequest.getFileName(name);
076                    }
077    
078                    return fileName;
079            }
080    
081            public String getFullFileName(String name) {
082                    String fullFileName = _uploadRequest.getFullFileName(_namespace + name);
083    
084                    if (fullFileName == null) {
085                            fullFileName = _uploadRequest.getFullFileName(name);
086                    }
087    
088                    return fullFileName;
089            }
090    
091            public String getParameter(String name) {
092                    String parameter = _uploadRequest.getParameter(_namespace + name);
093    
094                    if (parameter == null) {
095                            parameter = _uploadRequest.getParameter(name);
096                    }
097    
098                    return parameter;
099            }
100    
101            public Map<String, String[]> getParameterMap() {
102                    Map<String, String[]> map = new HashMap<String, String[]>();
103    
104                    Enumeration<String> enu = getParameterNames();
105    
106                    while (enu.hasMoreElements()) {
107                            String name = enu.nextElement();
108    
109                            map.put(name, getParameterValues(name));
110                    }
111    
112                    return map;
113            }
114    
115            public Enumeration<String> getParameterNames() {
116                    List<String> parameterNames = new ArrayList<String>();
117    
118                    Enumeration<String> enu = _uploadRequest.getParameterNames();
119    
120                    while (enu.hasMoreElements()) {
121                            String name = enu.nextElement();
122    
123                            if (name.startsWith(_namespace)) {
124                                    parameterNames.add(
125                                            name.substring(_namespace.length(), name.length()));
126                            }
127                            else {
128                                    parameterNames.add(name);
129                            }
130                    }
131    
132                    return Collections.enumeration(parameterNames);
133            }
134    
135            public String[] getParameterValues(String name) {
136                    String[] parameterValues = _uploadRequest.getParameterValues(
137                            _namespace + name);
138    
139                    if (parameterValues == null) {
140                            parameterValues = _uploadRequest.getParameterValues(name);
141                    }
142    
143                    return parameterValues;
144            }
145    
146            public boolean isFormField(String name) {
147                    Boolean formField = _uploadRequest.isFormField(_namespace + name);
148    
149                    if (formField == null) {
150                            formField = _uploadRequest.isFormField(name);
151                    }
152    
153                    if (formField == null) {
154                            return true;
155                    }
156                    else {
157                            return formField.booleanValue();
158                    }
159            }
160    
161            private UploadServletRequest _uploadRequest;
162            private String _namespace;
163    
164    }