001 // $HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/enterprise/DeegreeParams.java $
002 /*---------------- FILE HEADER ------------------------------------------
003
004 This file is part of deegree.
005 Copyright (C) 2001-2008 by:
006 EXSE, Department of Geography, University of Bonn
007 http://www.giub.uni-bonn.de/deegree/
008 lat/lon GmbH
009 http://www.lat-lon.de
010
011 This library is free software; you can redistribute it and/or
012 modify it under the terms of the GNU Lesser General Public
013 License as published by the Free Software Foundation; either
014 version 2.1 of the License, or (at your option) any later version.
015
016 This library is distributed in the hope that it will be useful,
017 but WITHOUT ANY WARRANTY; without even the implied warranty of
018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019 Lesser General Public License for more details.
020
021 You should have received a copy of the GNU Lesser General Public
022 License along with this library; if not, write to the Free Software
023 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024
025 Contact:
026
027 Andreas Poth
028 lat/lon GmbH
029 Aennchenstr. 19
030 53115 Bonn
031 Germany
032 E-Mail: poth@lat-lon.de
033
034 Prof. Dr. Klaus Greve
035 Department of Geography
036 University of Bonn
037 Meckenheimer Allee 166
038 53115 Bonn
039 Germany
040 E-Mail: greve@giub.uni-bonn.de
041
042
043 ---------------------------------------------------------------------------*/
044 package org.deegree.enterprise;
045
046 import java.io.Serializable;
047 import java.nio.charset.Charset;
048
049 import org.deegree.model.metadata.iso19115.OnlineResource;
050 import org.deegree.ogcwebservices.wms.InvalidFormatException;
051
052 /**
053 * Base class for the <code>deegreeParams</code> section of configurations for all deegree web
054 * service types. The <code>deegreeParams</code> section contains deegree specific parameters that
055 * are not part of the OGC CSW capabilities specification. The concrete web service implementations
056 * (WMS, WFS CWS, ...) derive this class and add their specific configuration parameters.
057 * <p>
058 * The common <code>deegreeParams</code> elements are: <table border="1">
059 * <tr>
060 * <th>Name</th>
061 * <th>Mandatory</th>
062 * <th>Function</th>
063 * </tr>
064 * <tr>
065 * <td>DefaultOnlineResource</td>
066 * <td align="center">X</td>
067 * <td>The DefaultOnlineResource will be used whenever a required OnlineResource is not defined.</td>
068 * </tr>
069 * <tr>
070 * <td>CacheSize</td>
071 * <td align="center">-</td>
072 * <td>Amount of Memory to use for caching, default = 100 (MB).</td>
073 * </tr>
074 * <tr>
075 * <td>RequestTimeLimit</td>
076 * <td align="center">-</td>
077 * <td>Maximum amount of time that is allowed for the execution of a request, defaults to 2
078 * minutes.</td>
079 * </tr>
080 * <tr>
081 * <td>Encoding</td>
082 * <td align="center">-</td>
083 * <td>String encoding, default is UTF-8.</td>
084 * </tr>
085 * </table>
086 *
087 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth </a>
088 * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider </a>
089 * @author last edited by: $Author: apoth $
090 *
091 * @version 2.0, $Revision: 9338 $, $Date: 2007-12-27 13:31:31 +0100 (Do, 27 Dez 2007) $
092 *
093 * @since 2.0
094 */
095
096 public abstract class DeegreeParams implements Serializable {
097
098 private OnlineResource defaultOnlineResource = null;
099
100 private int cacheSize = 100;
101
102 private int requestTimeLimit = 0;
103
104 private Charset characterSet = null;
105
106 /**
107 * Creates a new instance of DeegreeParams with characterSet set to UTF-8.
108 *
109 * @param defaultOnlineResource
110 * @param cacheSize
111 * @param requestTimeLimit
112 * in milliseconds
113 */
114 public DeegreeParams( OnlineResource defaultOnlineResource, int cacheSize, int requestTimeLimit ) {
115 this.defaultOnlineResource = defaultOnlineResource;
116 this.cacheSize = cacheSize;
117 this.requestTimeLimit = requestTimeLimit;
118 if ( Charset.isSupported( "UTF-8" ) ) {// UTF-8 mus be supported
119 this.characterSet = Charset.forName( "UTF-8" );
120 }
121 }
122
123 /**
124 * Creates a new instance of DeegreeParams.
125 *
126 * @param defaultOnlineResource
127 * @param cacheSize
128 * @param requestTimeLimit
129 * @param characterSet
130 */
131 public DeegreeParams( OnlineResource defaultOnlineResource, int cacheSize, int requestTimeLimit, String characterSet ) {
132 this.defaultOnlineResource = defaultOnlineResource;
133 this.cacheSize = cacheSize;
134 this.requestTimeLimit = requestTimeLimit;
135 if ( Charset.isSupported( characterSet ) ) {
136 this.characterSet = Charset.forName( characterSet );
137 } else if ( Charset.isSupported( "UTF-8" ) ) {// UTF-8 mus be supported
138 this.characterSet = Charset.forName( "UTF-8" );
139 }
140 }
141
142 /**
143 * Returns the CacheSize.
144 *
145 * @return the size
146 */
147 public int getCacheSize() {
148 return cacheSize;
149 }
150
151 /**
152 * Sets the CacheSize.
153 *
154 * @param cacheSize
155 */
156 public void setCacheSize( int cacheSize ) {
157 this.cacheSize = cacheSize;
158 }
159
160 /**
161 * Returns the defaultOnlineResource.
162 *
163 * @return the URL
164 */
165 public OnlineResource getDefaultOnlineResource() {
166 return defaultOnlineResource;
167 }
168
169 /**
170 * Sets the defaultOnlineResource.
171 *
172 * @param defaultOnlineResource
173 */
174 public void setDefaultOnlineResource( OnlineResource defaultOnlineResource ) {
175 this.defaultOnlineResource = defaultOnlineResource;
176 }
177
178 /**
179 * @return the requestTimeLimit, in milliseconds.
180 */
181 public int getRequestTimeLimit() {
182 return requestTimeLimit;
183 }
184
185 /**
186 * Sets the requestTimeLimit.
187 *
188 * @param requestTimeLimit
189 *
190 */
191 public void setRequestTimeLimit( int requestTimeLimit ) {
192 this.requestTimeLimit = requestTimeLimit;
193 }
194
195 /**
196 * Returns the characterSet.
197 *
198 * @return the charset
199 *
200 */
201 public String getCharacterSet() {
202 return characterSet.displayName();
203 }
204
205 /**
206 * @return the Charset requested by the deegreeparams.
207 */
208 public Charset getCharset() {
209 return characterSet;
210 }
211
212 /**
213 * Sets the characterSet.
214 *
215 * @param characterSet
216 * @throws InvalidFormatException
217 *
218 */
219 public void setCharacterSet( String characterSet )
220 throws InvalidFormatException {
221 if ( Charset.isSupported( characterSet ) ) {
222 this.characterSet = Charset.forName( characterSet );
223 } else {
224 throw new InvalidFormatException( "DeegreeParams: The given charset is not supported by the jvm" );
225 }
226 }
227
228 }