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    }