001: package org.apache.turbine.services.upload;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import javax.servlet.http.HttpServletRequest;
023:
024: import org.apache.turbine.services.InstantiationException;
025: import org.apache.turbine.services.TurbineServices;
026: import org.apache.turbine.util.TurbineException;
027: import org.apache.turbine.util.parser.ParameterParser;
028:
029: /**
030: * <p> This is a facade class for {@link UploadService}.
031: *
032: * <p> This class provides static methods that retrieve the configured
033: * (in TurbineResource.properties) implementation of {@link
034: * UploadService} and perform certain operations on it. It uses
035: * constants defined in {@link UploadService} interface for accessing
036: * the service's properties and default values for them.
037: *
038: * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
039: * @version $Id: TurbineUpload.java 534527 2007-05-02 16:10:59Z tv $
040: */
041: public abstract class TurbineUpload {
042: /**
043: * <p> Retrieves an instance of system's configured implementation
044: * of <code>UploadService</code>
045: *
046: * @return An instance of UploadService
047: */
048: public static UploadService getService() {
049: return (UploadService) TurbineServices.getInstance()
050: .getService(UploadService.SERVICE_NAME);
051: }
052:
053: /**
054: * Checks whether an Upload Service is configured.
055: * This method is safe to call even with no Upload
056: * service installed.
057: *
058: * @return True if an upload Service is configured
059: */
060: public static boolean isAvailable() {
061: try {
062: getService();
063: } catch (InstantiationException ie) {
064: // If the service couldn't be instantiated, it obviously
065: // isn't configured.
066: return false;
067: }
068: return true;
069: }
070:
071: /**
072: * Retrieves the value of the 'automatic' property of {@link
073: * UploadService}. This reports whether the Upload Service
074: * is available and (if yes), the Parameter parser should
075: * allow "automatic" uploads if it is submitted to Turbine.
076: *
077: * This method is safe to call even with no Upload Service
078: * configured.
079: *
080: * @return The value of 'automatic' property of {@link
081: * UploadService}.
082: */
083: public static boolean getAutomatic() {
084: // Short circuit evaluation of the && operator!
085: return isAvailable() && getService().getAutomatic();
086: }
087:
088: /**
089: * <p> Retrieves the value of 'size.max' property of {@link
090: * UploadService}.
091: *
092: * @return The value of 'size.max' property of {@link
093: * UploadService}.
094: */
095: public static long getSizeMax() {
096: return getService().getSizeMax();
097: }
098:
099: /**
100: * <p> Retrieves the value of <code>size.threshold</code> property of
101: * {@link org.apache.turbine.services.upload.UploadService}.
102: *
103: * @return The threshold beyond which files are written directly to disk.
104: */
105: public static int getSizeThreshold() {
106: return getService().getSizeThreshold();
107: }
108:
109: /**
110: * <p> Retrieves the value of the <code>repository</code> property of
111: * {@link org.apache.turbine.services.upload.UploadService}.
112: *
113: * @return The repository.
114: */
115: public static String getRepository() {
116: return getService().getRepository();
117: }
118:
119: /**
120: * <p> Performs parsing the request and storing files and form
121: * fields. Default file repository is used. This method is
122: * called by the {@link ParameterParser} if automatic upload is
123: * enabled.
124: *
125: * @param req The servlet request to be parsed.
126: * @param params The ParameterParser instance to insert form
127: * fields into.
128: * @exception TurbineException If there are problems reading/parsing
129: * the request or storing files.
130: */
131: public static void parseRequest(HttpServletRequest req,
132: ParameterParser params) throws TurbineException {
133: UploadService upload = getService();
134: upload.parseRequest(req, params, upload.getRepository());
135: }
136:
137: /**
138: * <p> Performs parsing the request and storing files and form
139: * fields. Custom file repository may be specified. You can call
140: * this method in your file upload {@link
141: * org.apache.turbine.modules.Action} to if you need to specify a
142: * custom directory for storing files.
143: *
144: * @param req The servlet request to be parsed.
145: * @param params The ParameterParser instance to insert form
146: * fields into.
147: * @param path The location where the files should be stored.
148: * @exception TurbineException If there are problems reading/parsing
149: * the request or storing files.
150: */
151: public static void parseRequest(HttpServletRequest req,
152: ParameterParser params, String path)
153: throws TurbineException {
154: getService().parseRequest(req, params, path);
155: }
156: }
|