001: /*
002: * $Header: /home/cvs/jakarta-commons/fileupload/src/java/org/apache/commons/fileupload/DefaultFileItemFactory.java,v 1.2 2003/05/31 22:31:08 martinc Exp $
003: * $Revision: 1.2 $
004: * $Date: 2003/05/31 22:31:08 $
005: *
006: * ====================================================================
007: *
008: * The Apache Software License, Version 1.1
009: *
010: * Copyright (c) 2001-2003 The Apache Software Foundation. All rights
011: * reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions
015: * are met:
016: *
017: * 1. Redistributions of source code must retain the above copyright
018: * notice, this list of conditions and the following disclaimer.
019: *
020: * 2. Redistributions in binary form must reproduce the above copyright
021: * notice, this list of conditions and the following disclaimer in
022: * the documentation and/or other materials provided with the
023: * distribution.
024: *
025: * 3. The end-user documentation included with the redistribution, if
026: * any, must include the following acknowlegement:
027: * "This product includes software developed by the
028: * Apache Software Foundation (http://www.apache.org/)."
029: * Alternately, this acknowlegement may appear in the software itself,
030: * if and wherever such third-party acknowlegements normally appear.
031: *
032: * 4. The names "The Jakarta Project", "Commons", and "Apache Software
033: * Foundation" must not be used to endorse or promote products derived
034: * from this software without prior written permission. For written
035: * permission, please contact apache@apache.org.
036: *
037: * 5. Products derived from this software may not be called "Apache"
038: * nor may "Apache" appear in their names without prior written
039: * permission of the Apache Group.
040: *
041: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
042: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
043: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
044: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
045: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
046: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
047: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
048: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
049: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
050: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
051: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
052: * SUCH DAMAGE.
053: * ====================================================================
054: *
055: * This software consists of voluntary contributions made by many
056: * individuals on behalf of the Apache Software Foundation. For more
057: * information on the Apache Software Foundation, please see
058: * <http://www.apache.org/>.
059: *
060: */
061:
062: package de.ug2t.extTools.httpFileUpLoad;
063:
064: import java.io.*;
065:
066: /**
067: * <p>
068: * The default {@link org.apache.commons.fileupload.FileItemFactory}
069: * implementation. This implementation creates
070: * {@link org.apache.commons.fileupload.FileItem} instances which keep their
071: * content either in memory, for smaller items, or in a temporary file on disk,
072: * for larger items. The size threshold, above which content will be stored on
073: * disk, is configurable, as is the directory in which temporary files will be
074: * created.
075: * </p>
076: *
077: * <p>
078: * If not otherwise configured, the default configuration values are as follows:
079: * <ul>
080: * <li>Size threshold is 10KB.</li>
081: * <li>Repository is the system default temp directory, as returned by
082: * <code>System.getProperty("java.io.tmpdir")</code>.</li>
083: * </ul>
084: * </p>
085: *
086: * @author <a href="mailto:martinc@apache.org">Martin Cooper</a>
087: *
088: * @version $Id: DefaultFileItemFactory.java,v 1.2 2003/05/31 22:31:08 martinc
089: * Exp $
090: */
091: public class DefaultFileItemFactory implements FileItemFactory {
092:
093: // ----------------------------------------------------- Manifest constants
094:
095: /**
096: * The default threshold above which uploads will be stored on disk.
097: */
098: public static final int DEFAULT_SIZE_THRESHOLD = 10240;
099:
100: // ----------------------------------------------------- Instance Variables
101:
102: /**
103: * The directory in which uploaded files will be stored, if stored on disk.
104: */
105: private File repository;
106:
107: /**
108: * The threshold above which uploads will be stored on disk.
109: */
110: private int sizeThreshold = DEFAULT_SIZE_THRESHOLD;
111:
112: // ----------------------------------------------------------- Constructors
113:
114: /**
115: * Constructs an unconfigured instance of this class. The resulting factory
116: * may be configured by calling the appropriate setter methods.
117: */
118: public DefaultFileItemFactory() {
119: }
120:
121: /**
122: * Constructs a preconfigured instance of this class.
123: *
124: * @param sizeThreshold
125: * The threshold, in bytes, below which items will be retained in
126: * memory and above which they will be stored as a file.
127: * @param repository
128: * The data repository, which is the directory in which files will be
129: * created, should the item size exceed the threshold.
130: */
131: public DefaultFileItemFactory(int sizeThreshold, File repository) {
132: this .sizeThreshold = sizeThreshold;
133: this .repository = repository;
134: }
135:
136: // ------------------------------------------------------------- Properties
137:
138: /**
139: * Returns the directory used to temporarily store files that are larger than
140: * the configured size threshold.
141: *
142: * @return The directory in which temporary files will be located.
143: *
144: * @see #setRepository(java.io.File)
145: *
146: */
147: public File getRepository() {
148: return repository;
149: }
150:
151: /**
152: * Sets the directory used to temporarily store files that are larger than the
153: * configured size threshold.
154: *
155: * @param repository
156: * The directory in which temporary files will be located.
157: *
158: * @see #getRepository()
159: *
160: */
161: public void setRepository(File repository) {
162: this .repository = repository;
163: }
164:
165: /**
166: * Returns the size threshold beyond which files are written directly to disk.
167: * The default value is 1024 bytes.
168: *
169: * @return The size threshold, in bytes.
170: *
171: * @see #setSizeThreshold(int)
172: */
173: public int getSizeThreshold() {
174: return sizeThreshold;
175: }
176:
177: /**
178: * Sets the size threshold beyond which files are written directly to disk.
179: *
180: * @param sizeThreshold
181: * The size threshold, in bytes.
182: *
183: * @see #getSizeThreshold()
184: *
185: */
186: public void setSizeThreshold(int sizeThreshold) {
187: this .sizeThreshold = sizeThreshold;
188: }
189:
190: // --------------------------------------------------------- Public Methods
191:
192: /**
193: * Create a new {@link org.apache.commons.fileupload.DefaultFileItem} instance
194: * from the supplied parameters and the local factory configuration.
195: *
196: * @param fieldName
197: * The name of the form field.
198: * @param contentType
199: * The content type of the form field.
200: * @param isFormField
201: * <code>true</code> if this is a plain form field;
202: * <code>false</code> otherwise.
203: * @param fileName
204: * The name of the uploaded file, if any, as supplied by the browser
205: * or other client.
206: *
207: * @return The newly created file item.
208: */
209: public FileItem createItem(String fieldName, String contentType,
210: boolean isFormField, String fileName) {
211: return new DefaultFileItem(fieldName, contentType, isFormField,
212: fileName, sizeThreshold, repository);
213: }
214:
215: }
|