001: /*
002: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
003: * Distributed under the terms of either:
004: * - the common development and distribution license (CDDL), v1.0; or
005: * - the GNU Lesser General Public License, v2.1 or later
006: * $Id: UploadedFile.java 3634 2007-01-08 21:42:24Z gbevin $
007: */
008: package com.uwyn.rife.engine;
009:
010: import com.uwyn.rife.tools.ExceptionUtils;
011: import java.io.File;
012: import java.util.logging.Logger;
013:
014: /**
015: * An <code>UploadedFile</code> instance is created by the web engine when
016: * files are uploaded through a multi-part request.
017: * <p>The uploaded files can be retrieved through the
018: * <code>ElementSupport#getUploadedFile</code> method and its siblings. The
019: * web engine does its best to dispose of the temporary file at a convenient
020: * time, but the file is not guaranteed to persist after the request. If you
021: * want to make sure that the file is deleted, you should call {@link
022: * File#delete} yourself when you're finished with the uploaded file.
023: *
024: * @author Geert Bevin (gbevin[remove] at uwyn dot com)
025: * @version $Revision: 3634 $
026: * @since 1.0
027: */
028: public class UploadedFile implements Cloneable {
029: private File mTempFile = null;
030: private String mFilename = null;
031: private String mType = null;
032: private boolean mSizeExceeded = false;
033:
034: public UploadedFile(String filename, String type) {
035: mFilename = filename;
036: mType = type;
037: }
038:
039: protected void finalize() throws Throwable {
040: if (mTempFile != null) {
041: mTempFile.delete();
042: }
043:
044: super .finalize();
045: }
046:
047: public void setTempFile(File tempFile) {
048: assert tempFile != null;
049: assert tempFile.exists();
050: assert tempFile.isFile();
051: assert tempFile.canRead();
052:
053: mTempFile = tempFile;
054: mTempFile.deleteOnExit();
055: }
056:
057: public void setSizeExceeded(boolean exceeded) {
058: mSizeExceeded = exceeded;
059: }
060:
061: /**
062: * Retrieves the content type of the file.
063: *
064: * @return the content type of the uploaded file
065: * @since 1.0
066: */
067: public String getType() {
068: return mType;
069: }
070:
071: /**
072: * Retrieves the name of the file that was selected on the client when
073: * uploading.
074: *
075: * @return the name of the original file that was uploaded
076: * @since 1.0
077: */
078: public String getName() {
079: return mFilename;
080: }
081:
082: /**
083: * Retrieves the temporary file on the server that was created for the
084: * upload.
085: *
086: * @return the temporary uploaded file
087: * @since 1.0
088: */
089: public File getFile() {
090: return mTempFile;
091: }
092:
093: /**
094: * Indicates whether the uploaded file exceeded the file {@link
095: * com.uwyn.rife.config.RifeConfig.Engine#getFileuploadSizeLimit upload
096: * size limit}.
097: * <p>If the limit was exceeded, the temporary file will be
098: * <code>null</code> and deleted from the server.
099: *
100: * @return <code>true</code> if the upload file size limit was exceeded;
101: * or
102: * <p><code>false</code> otherwise
103: * @since 1.0
104: */
105: public boolean wasSizeExceeded() {
106: return mSizeExceeded;
107: }
108:
109: public UploadedFile clone() {
110: try {
111: return (UploadedFile) super .clone();
112: } catch (CloneNotSupportedException e) {
113: ///CLOVER:OFF
114: // this should never happen
115: Logger.getLogger("com.uwyn.rife.site").severe(
116: ExceptionUtils.getExceptionStackTrace(e));
117: return null;
118: ///CLOVER:ON
119: }
120: }
121: }
|