001 //$$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/ogcwebservices/wpvs/configuration/WPVSDeegreeParams.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 Aennchenstraße 19
030 53177 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.ogcwebservices.wpvs.configuration;
045
046 import java.awt.image.BufferedImage;
047 import java.io.IOException;
048 import java.net.MalformedURLException;
049 import java.net.URL;
050 import java.util.Map;
051
052 import org.deegree.enterprise.DeegreeParams;
053 import org.deegree.framework.log.ILogger;
054 import org.deegree.framework.log.LoggerFactory;
055 import org.deegree.framework.util.ImageUtils;
056 import org.deegree.model.metadata.iso19115.OnlineResource;
057
058 /**
059 *
060 *
061 * @author <a href="mailto:mays@lat-lon.de">Judit Mays</a>
062 * @author last edited by: $Author: apoth $
063 *
064 * $Revision: 9345 $, $Date: 2007-12-27 17:22:25 +0100 (Do, 27 Dez 2007) $
065 *
066 */
067 public class WPVSDeegreeParams extends DeegreeParams {
068
069 /**
070 *
071 */
072 private static final long serialVersionUID = 4480667559177855009L;
073
074 private static final ILogger LOG = LoggerFactory.getLogger( WPVSDeegreeParams.class );
075
076 private String copyright; // copyright is either text-string or url-string
077
078 // the configured copyrightImage to paint over the GetView response
079 private BufferedImage copyrightImage = null;
080
081 private float viewQuality = 0.95f;
082
083 private int maxLifeTime = 3600;
084
085 private final Map<String, URL> backgroundMap;
086
087 private final boolean isWatermarked;
088
089 private final int maxViewWidth;
090
091 private final int maxViewHeight;
092
093 private final boolean requestQualityPreferred;
094
095 private double maximumFarClippingPlane;
096
097 private String defaultSplitter;
098
099 private double minimalTerrainHeight;
100
101 private final double minimalWCS_DGMResolution;
102
103 private double extendRequestPercentage;
104
105 private double nearClippingPlane;
106
107 private final int maxTextureDimension;
108
109 private int quadMergeCount;
110
111 /**
112 *
113 *
114 * @param defaultOnlineResource
115 * @param cacheSize
116 * @param requestTimeLimit
117 * @param characterSet
118 * @param copyright
119 * @param watermarked
120 * @param maxLifeTime
121 * @param viewQuality
122 * @param backgroundMap
123 * a <code>Map</code> for background images. This Map contains image names as keys and image URL as
124 * values
125 * @param maxWidth
126 * @param maxHeight
127 * @param requestQualityPreferred
128 * @param maximumFarClippingPlane
129 * to which extend the request can set a farclippingplane
130 * @param nearClippingPlane
131 * of the viewport
132 * @param defaultSplitter
133 * What kind of splitter to use if the GetView request has no field named "splitter"
134 * @param minimalTerrainHeight
135 * the minimalheight of a terrain if no dgm is found.
136 * @param minimalWCS_DGMResolution
137 * the configured minimal resolution of a wcs dgm
138 * @param extendRequestPercentage
139 * the percentage to which wcs/wms request should be extended.
140 * @param maxTextureDimension
141 * the maximums request size of the textures
142 * @param quadMergeCount
143 * a value for the quadtree-splitter to tell at which amount the leaves should be merged.
144 */
145 public WPVSDeegreeParams( OnlineResource defaultOnlineResource, int cacheSize, int requestTimeLimit,
146 String characterSet, String copyright, boolean watermarked, int maxLifeTime,
147 float viewQuality, Map<String, URL> backgroundMap, int maxWidth, int maxHeight,
148 boolean requestQualityPreferred, double maximumFarClippingPlane,
149 double nearClippingPlane, String defaultSplitter, double minimalTerrainHeight,
150 double minimalWCS_DGMResolution, double extendRequestPercentage, int maxTextureDimension,
151 int quadMergeCount ) {
152
153 super( defaultOnlineResource, cacheSize, requestTimeLimit, characterSet );
154
155 this.copyright = copyright;
156 this.maxLifeTime = maxLifeTime;
157 this.viewQuality = viewQuality;
158 this.backgroundMap = backgroundMap;
159 this.isWatermarked = watermarked;
160 this.maxViewWidth = maxWidth;
161 this.maxViewHeight = maxHeight;
162 this.requestQualityPreferred = requestQualityPreferred;
163 this.maximumFarClippingPlane = maximumFarClippingPlane;
164 this.nearClippingPlane = nearClippingPlane;
165 this.minimalWCS_DGMResolution = minimalWCS_DGMResolution;
166 this.defaultSplitter = defaultSplitter.toUpperCase();
167 if ( !( "QUAD".equals( defaultSplitter ) || "BBOX".equals( defaultSplitter ) ) ) {
168 LOG.logWarning( "The configured defaultSplitter does not exist, setting to QUAD" );
169 this.defaultSplitter = "QUAD";
170 }
171
172 if ( copyright != null && !"".equals( copyright.trim() ) ) {
173 try {
174 URL url = new URL( this.copyright );
175 if ( url != null ) {
176 copyrightImage = ImageUtils.loadImage( url.getFile() );
177 }
178 } catch ( MalformedURLException murle ) {
179 // The Copyright is a String.
180 } catch ( IOException ioe ) {
181 // The Copyright is a String.
182 }
183 }
184 this.minimalTerrainHeight = minimalTerrainHeight;
185 this.extendRequestPercentage = extendRequestPercentage;
186 this.maxTextureDimension = maxTextureDimension;
187 if ( quadMergeCount < 0 ) {
188 quadMergeCount = 0;
189 }
190 this.quadMergeCount = quadMergeCount;
191 }
192
193 /**
194 * @return Returns the copyright.
195 */
196 public String getCopyright() {
197 return copyright;
198 }
199
200 /**
201 * @return Returns the maxLifeTime.
202 */
203 public int getMaxLifeTime() {
204 return maxLifeTime;
205 }
206
207 /**
208 * @return Returns the viewQuality.
209 */
210 public float getViewQuality() {
211 return viewQuality;
212 }
213
214 /**
215 * @return the configured different backgroundimages
216 */
217 public Map getBackgroundMap() {
218 return backgroundMap;
219 }
220
221 /**
222 * @return true if the image should be watermarked (with an image or text)
223 */
224 public boolean isWatermarked() {
225 return isWatermarked;
226 }
227
228 /**
229 * @return maximum value of the width of a request
230 */
231 public int getMaxViewWidth() {
232 return maxViewWidth;
233 }
234
235 /**
236 * @return maximum value of the height of a request
237 */
238 public int getMaxViewHeight() {
239 return maxViewHeight;
240 }
241
242 /**
243 * @return true if the splitter should use hight quality (lot of request quads) or false otherwise.
244 */
245 public boolean isRequestQualityPreferred() {
246 return requestQualityPreferred;
247 }
248
249 /**
250 * @return the maximumFarClippingPlane which a user can request.
251 */
252 public double getMaximumFarClippingPlane() {
253 return maximumFarClippingPlane;
254 }
255
256 /**
257 * @return the copyrightImage as a BufferedImage.
258 */
259 public BufferedImage getCopyrightImage() {
260 return copyrightImage;
261 }
262
263 /**
264 * @return the defaultSplitter.
265 */
266 public String getDefaultSplitter() {
267 return defaultSplitter;
268 }
269
270 /**
271 * @return the minimalTerrainHeight which is used as zValue of a terrain if no dgm is found (configured) for a
272 * request. The default value is 0d.
273 */
274 public double getMinimalTerrainHeight() {
275 return minimalTerrainHeight;
276 }
277
278 /**
279 * @return the minimalWCS_DGMResolution.
280 */
281 public double getMinimalWCS_DGMResolution() {
282 return minimalWCS_DGMResolution;
283 }
284
285 /**
286 * @return the percentage to which wcs-request should be extended
287 */
288 public double getExtendRequestPercentage() {
289 return extendRequestPercentage;
290 }
291
292 /**
293 * @return the configured nearclipping plane.
294 */
295 public double getNearClippingPlane() {
296 return nearClippingPlane;
297 }
298
299 /**
300 * @return the maxim dimension of a requested Texture.
301 */
302 public final int getMaxTextureDimension() {
303 return maxTextureDimension;
304 }
305
306 /**
307 * @return the number of leaves a quadtree-splitter can have before it starts merging leaves together.
308 */
309 public final int getQuadMergeCount() {
310 return quadMergeCount;
311 }
312 }