orc.lib.orchard.forms.PlainFormData.java Source code

Java tutorial

Introduction

Here is the source code for orc.lib.orchard.forms.PlainFormData.java

Source

//
// PlainFormData.java -- Java class PlainFormData
// Project Orchard
//
// Copyright (c) 2016 The University of Texas at Austin. All rights reserved.
//
// Use and redistribution of this file is governed by the license terms in
// the LICENSE file found in the project's top-level directory and also found at
// URL: http://orc.csres.utexas.edu/license.shtml .
//

package orc.lib.orchard.forms;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemHeaders;

public class PlainFormData implements FormData {
    private final HttpServletRequest request;

    public PlainFormData(final HttpServletRequest request) {
        super();
        this.request = request;
    }

    @Override
    public FileItem getItem(final String key) {
        return new PlainFileItem(key, request.getParameter(key));
    }

    @Override
    public FileItem[] getItems(final String key) {
        final String[] values = request.getParameterValues(key);
        final FileItem[] out = new FileItem[values.length];
        for (int i = 0; i < values.length; ++i) {
            out[i] = new PlainFileItem(key, values[i]);
        }
        return out;
    }

    @Override
    public List<FileItem> getItems() {
        final LinkedList<FileItem> out = new LinkedList<FileItem>();
        for (final Enumeration<String> names = request.getParameterNames(); names.hasMoreElements();) {
            final String name = names.nextElement();
            for (final String value : request.getParameterValues(name)) {
                out.add(new PlainFileItem(name, value));
            }
        }
        return out;
    }

    @Override
    public String getParameter(final String key) {
        return request.getParameter(key);
    }

    @Override
    public String[] getParameterValues(final String key) {
        return request.getParameterValues(key);
    }
}

class PlainFileItem implements FileItem {
    private String name;
    private final String value;
    private FileItemHeaders headers;

    public PlainFileItem(final String name, final String value) {
        super();
        this.name = name;
        this.value = value;
    }

    @Override
    public void delete() {
        // do nothing
    }

    @Override
    public byte[] get() {
        return value.getBytes();
    }

    @Override
    public String getContentType() {
        return null;
    }

    @Override
    public String getFieldName() {
        return name;
    }

    @Override
    public InputStream getInputStream() throws IOException {
        return new ByteArrayInputStream(value.getBytes());
    }

    @Override
    public String getName() {
        return null;
    }

    @Override
    public OutputStream getOutputStream() throws IOException {
        return null;
    }

    @Override
    public long getSize() {
        return value.getBytes().length;
    }

    @Override
    public String getString() {
        return value;
    }

    @Override
    public String getString(final String arg0) throws UnsupportedEncodingException {
        return value;
    }

    @Override
    public boolean isFormField() {
        return false;
    }

    @Override
    public boolean isInMemory() {
        return true;
    }

    @Override
    public void setFieldName(final String arg0) {
        name = arg0;
    }

    @Override
    public void setFormField(final boolean arg0) {
        // do nothing
    }

    @Override
    public void write(final File arg0) throws Exception {
        throw new UnsupportedOperationException("write not supported for plain form data");
    }

    @Override
    public FileItemHeaders getHeaders() {
        return headers;
    }

    @Override
    public void setHeaders(FileItemHeaders headers) {
        this.headers = headers;
    }
}