001 //$$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/ogcwebservices/wpvs/configuration/WPVSDeegreeParams.java $$ 002 /*---------------------------------------------------------------------------- 003 This file is part of deegree, http://deegree.org/ 004 Copyright (C) 2001-2009 by: 005 Department of Geography, University of Bonn 006 and 007 lat/lon GmbH 008 009 This library is free software; you can redistribute it and/or modify it under 010 the terms of the GNU Lesser General Public License as published by the Free 011 Software Foundation; either version 2.1 of the License, or (at your option) 012 any later version. 013 This library is distributed in the hope that it will be useful, but WITHOUT 014 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 015 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 016 details. 017 You should have received a copy of the GNU Lesser General Public License 018 along with this library; if not, write to the Free Software Foundation, Inc., 019 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 020 021 Contact information: 022 023 lat/lon GmbH 024 Aennchenstr. 19, 53177 Bonn 025 Germany 026 http://lat-lon.de/ 027 028 Department of Geography, University of Bonn 029 Prof. Dr. Klaus Greve 030 Postfach 1147, 53001 Bonn 031 Germany 032 http://www.geographie.uni-bonn.de/deegree/ 033 034 e-mail: info@deegree.org 035 ----------------------------------------------------------------------------*/ 036 037 package org.deegree.ogcwebservices.wpvs.configuration; 038 039 import java.awt.image.BufferedImage; 040 import java.io.IOException; 041 import java.net.MalformedURLException; 042 import java.net.URL; 043 import java.util.Map; 044 045 import org.deegree.enterprise.DeegreeParams; 046 import org.deegree.framework.log.ILogger; 047 import org.deegree.framework.log.LoggerFactory; 048 import org.deegree.framework.util.ImageUtils; 049 import org.deegree.model.metadata.iso19115.OnlineResource; 050 051 /** 052 * 053 * 054 * @author <a href="mailto:mays@lat-lon.de">Judit Mays</a> 055 * @author last edited by: $Author: rbezema $ 056 * 057 * $Revision: 19665 $, $Date: 2009-09-16 10:11:29 +0200 (Mi, 16 Sep 2009) $ 058 * 059 */ 060 public class WPVSDeegreeParams extends DeegreeParams { 061 062 /** 063 * 064 */ 065 private static final long serialVersionUID = 4480667559177855009L; 066 067 private static final ILogger LOG = LoggerFactory.getLogger( WPVSDeegreeParams.class ); 068 069 private String copyright; // copyright is either text-string or url-string 070 071 // the configured copyrightImage to paint over the GetView response 072 private BufferedImage copyrightImage = null; 073 074 private float viewQuality = 0.95f; 075 076 private int maxLifeTime = 3600; 077 078 private final Map<String, URL> backgroundMap; 079 080 private final boolean isWatermarked; 081 082 private final int maxViewWidth; 083 084 private final int maxViewHeight; 085 086 private final boolean requestQualityPreferred; 087 088 private double maximumFarClippingPlane; 089 090 private String defaultSplitter; 091 092 private double minimalTerrainHeight; 093 094 private final double minimalWCS_DGMResolution; 095 096 private double extendRequestPercentage; 097 098 private double nearClippingPlane; 099 100 private final int maxTextureDimension; 101 102 private int quadMergeCount; 103 104 private final boolean antialiasingEnabled; 105 106 /** 107 * 108 * 109 * @param defaultOnlineResource 110 * @param cacheSize 111 * @param requestTimeLimit 112 * @param characterSet 113 * @param copyright 114 * @param watermarked 115 * @param maxLifeTime 116 * @param viewQuality 117 * @param backgroundMap 118 * a <code>Map</code> for background images. This Map contains image names as keys and image URL as 119 * values 120 * @param maxWidth 121 * @param maxHeight 122 * @param requestQualityPreferred 123 * @param maximumFarClippingPlane 124 * to which extend the request can set a farclippingplane 125 * @param nearClippingPlane 126 * of the viewport 127 * @param defaultSplitter 128 * What kind of splitter to use if the GetView request has no field named "splitter" 129 * @param minimalTerrainHeight 130 * the minimalheight of a terrain if no dgm is found. 131 * @param minimalWCS_DGMResolution 132 * the configured minimal resolution of a wcs dgm 133 * @param extendRequestPercentage 134 * the percentage to which wcs/wms request should be extended. 135 * @param maxTextureDimension 136 * the maximums request size of the textures 137 * @param quadMergeCount 138 * a value for the quadtree-splitter to tell at which amount the leaves should be merged. 139 * @param antialiasingEnabled 140 * true if the scene should be rendered with antialiasing. 141 */ 142 public WPVSDeegreeParams( OnlineResource defaultOnlineResource, int cacheSize, int requestTimeLimit, 143 String characterSet, String copyright, boolean watermarked, int maxLifeTime, 144 float viewQuality, Map<String, URL> backgroundMap, int maxWidth, int maxHeight, 145 boolean requestQualityPreferred, double maximumFarClippingPlane, 146 double nearClippingPlane, String defaultSplitter, double minimalTerrainHeight, 147 double minimalWCS_DGMResolution, double extendRequestPercentage, int maxTextureDimension, 148 int quadMergeCount, boolean antialiasingEnabled ) { 149 150 super( defaultOnlineResource, cacheSize, requestTimeLimit, characterSet ); 151 152 this.copyright = copyright; 153 this.maxLifeTime = maxLifeTime; 154 this.viewQuality = viewQuality; 155 this.backgroundMap = backgroundMap; 156 this.isWatermarked = watermarked; 157 this.maxViewWidth = maxWidth; 158 this.maxViewHeight = maxHeight; 159 this.requestQualityPreferred = requestQualityPreferred; 160 this.maximumFarClippingPlane = maximumFarClippingPlane; 161 this.nearClippingPlane = nearClippingPlane; 162 this.minimalWCS_DGMResolution = minimalWCS_DGMResolution; 163 this.defaultSplitter = defaultSplitter.toUpperCase(); 164 if ( !( "QUAD".equals( defaultSplitter ) || "BBOX".equals( defaultSplitter ) ) ) { 165 LOG.logWarning( "The configured defaultSplitter does not exist, setting to QUAD" ); 166 this.defaultSplitter = "QUAD"; 167 } 168 169 if ( copyright != null && !"".equals( copyright.trim() ) ) { 170 try { 171 copyrightImage = ImageUtils.loadImage( new URL( this.copyright ).getFile() ); 172 } catch ( MalformedURLException murle ) { 173 // The Copyright is a String. 174 } catch ( IOException ioe ) { 175 // The Copyright is a String. 176 } 177 } 178 this.minimalTerrainHeight = minimalTerrainHeight; 179 this.extendRequestPercentage = extendRequestPercentage; 180 this.maxTextureDimension = maxTextureDimension; 181 if ( quadMergeCount < 0 ) { 182 quadMergeCount = 0; 183 } 184 this.quadMergeCount = quadMergeCount; 185 this.antialiasingEnabled = antialiasingEnabled; 186 } 187 188 /** 189 * @return Returns the copyright. 190 */ 191 public String getCopyright() { 192 return copyright; 193 } 194 195 /** 196 * @return Returns the maxLifeTime. 197 */ 198 public int getMaxLifeTime() { 199 return maxLifeTime; 200 } 201 202 /** 203 * @return Returns the viewQuality. 204 */ 205 public float getViewQuality() { 206 return viewQuality; 207 } 208 209 /** 210 * @return the configured different backgroundimages 211 */ 212 public Map<String, URL> getBackgroundMap() { 213 return backgroundMap; 214 } 215 216 /** 217 * @return true if the image should be watermarked (with an image or text) 218 */ 219 public boolean isWatermarked() { 220 return isWatermarked; 221 } 222 223 /** 224 * @return maximum value of the width of a request 225 */ 226 public int getMaxViewWidth() { 227 return maxViewWidth; 228 } 229 230 /** 231 * @return maximum value of the height of a request 232 */ 233 public int getMaxViewHeight() { 234 return maxViewHeight; 235 } 236 237 /** 238 * @return true if the splitter should use hight quality (lot of request quads) or false otherwise. 239 */ 240 public boolean isRequestQualityPreferred() { 241 return requestQualityPreferred; 242 } 243 244 /** 245 * @return the maximumFarClippingPlane which a user can request. 246 */ 247 public double getMaximumFarClippingPlane() { 248 return maximumFarClippingPlane; 249 } 250 251 /** 252 * @return the copyrightImage as a BufferedImage. 253 */ 254 public BufferedImage getCopyrightImage() { 255 return copyrightImage; 256 } 257 258 /** 259 * @return the defaultSplitter. 260 */ 261 public String getDefaultSplitter() { 262 return defaultSplitter; 263 } 264 265 /** 266 * @return the minimalTerrainHeight which is used as zValue of a terrain if no dgm is found (configured) for a 267 * request. The default value is 0d. 268 */ 269 public double getMinimalTerrainHeight() { 270 return minimalTerrainHeight; 271 } 272 273 /** 274 * @return the minimalWCS_DGMResolution. 275 */ 276 public double getMinimalWCS_DGMResolution() { 277 return minimalWCS_DGMResolution; 278 } 279 280 /** 281 * @return the percentage to which wcs-request should be extended 282 */ 283 public double getExtendRequestPercentage() { 284 return extendRequestPercentage; 285 } 286 287 /** 288 * @return the configured nearclipping plane. 289 */ 290 public double getNearClippingPlane() { 291 return nearClippingPlane; 292 } 293 294 /** 295 * @return the maxim dimension of a requested Texture. 296 */ 297 public final int getMaxTextureDimension() { 298 return maxTextureDimension; 299 } 300 301 /** 302 * @return the number of leaves a quadtree-splitter can have before it starts merging leaves together. 303 */ 304 public final int getQuadMergeCount() { 305 return quadMergeCount; 306 } 307 308 /** 309 * @return true if the scene should be rendered antialiased. 310 */ 311 public boolean isAntialiasingEnabled() { 312 return antialiasingEnabled; 313 } 314 }