001 //$$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/ogcwebservices/wpvs/configuration/WPVSDeegreeParams.java $$ 002 /*---------------- FILE HEADER ------------------------------------------ 003 004 This file is part of deegree. 005 Copyright (C) 2001-2006 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: rbezema $ 063 * 064 * $Revision: 7953 $, $Date: 2007-08-09 11:57:56 +0200 (Do, 09 Aug 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 /** 108 * 109 * 110 * @param defaultOnlineResource 111 * @param cacheSize 112 * @param requestTimeLimit 113 * @param characterSet 114 * @param copyright 115 * @param watermarked 116 * @param maxLifeTime 117 * @param viewQuality 118 * @param backgroundMap 119 * a <code>Map</code> for background images. This Map contains image names as keys 120 * and image URL as values 121 * @param maxWidth 122 * @param maxHeight 123 * @param requestQualityPreferred 124 * @param maximumFarClippingPlane 125 * to which extend the request can set a farclippingplane 126 * @param nearClippingPlane 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 */ 136 public WPVSDeegreeParams( OnlineResource defaultOnlineResource, int cacheSize, 137 int requestTimeLimit, String characterSet, String copyright, 138 boolean watermarked, int maxLifeTime, float viewQuality, 139 Map<String, URL> backgroundMap, int maxWidth, int maxHeight, 140 boolean requestQualityPreferred, double maximumFarClippingPlane, double nearClippingPlane, 141 String defaultSplitter, double minimalTerrainHeight, 142 double minimalWCS_DGMResolution, double extendRequestPercentage ) { 143 144 super( defaultOnlineResource, cacheSize, requestTimeLimit, characterSet ); 145 146 this.copyright = copyright; 147 this.maxLifeTime = maxLifeTime; 148 this.viewQuality = viewQuality; 149 this.backgroundMap = backgroundMap; 150 this.isWatermarked = watermarked; 151 this.maxViewWidth = maxWidth; 152 this.maxViewHeight = maxHeight; 153 this.requestQualityPreferred = requestQualityPreferred; 154 this.maximumFarClippingPlane = maximumFarClippingPlane; 155 this.nearClippingPlane = nearClippingPlane; 156 this.minimalWCS_DGMResolution = minimalWCS_DGMResolution; 157 this.defaultSplitter = defaultSplitter.toUpperCase(); 158 if ( !( "QUAD".equals( defaultSplitter ) || "BBOX".equals( defaultSplitter ) ) ) { 159 LOG.logWarning( "The configured defaultSplitter does not exist, setting to QUAD" ); 160 this.defaultSplitter = "QUAD"; 161 } 162 163 try { 164 URL url = new URL( this.copyright ); 165 if ( url != null ) { 166 copyrightImage = ImageUtils.loadImage( url.getFile() ); 167 } 168 } catch ( MalformedURLException murle ) { 169 // The Copyright is a String. 170 } catch ( IOException ioe ) { 171 // The Copyright is a String. 172 } 173 this.minimalTerrainHeight = minimalTerrainHeight; 174 this.extendRequestPercentage = extendRequestPercentage; 175 } 176 177 /** 178 * @return Returns the copyright. 179 */ 180 public String getCopyright() { 181 return copyright; 182 } 183 184 /** 185 * @return Returns the maxLifeTime. 186 */ 187 public int getMaxLifeTime() { 188 return maxLifeTime; 189 } 190 191 /** 192 * @return Returns the viewQuality. 193 */ 194 public float getViewQuality() { 195 return viewQuality; 196 } 197 198 /** 199 * @return the configured different backgroundimages 200 */ 201 public Map getBackgroundMap() { 202 return backgroundMap; 203 } 204 205 /** 206 * @return true if the image should be watermarked (with an image or text) 207 */ 208 public boolean isWatermarked() { 209 return isWatermarked; 210 } 211 212 /** 213 * @return maximum value of the width of a request 214 */ 215 public int getMaxViewWidth() { 216 return maxViewWidth; 217 } 218 219 /** 220 * @return maximum value of the height of a request 221 */ 222 public int getMaxViewHeight() { 223 return maxViewHeight; 224 } 225 226 /** 227 * @return true if the splitter should use hight quality (lot of request quads) or false 228 * otherwise. 229 */ 230 public boolean isRequestQualityPreferred() { 231 return requestQualityPreferred; 232 } 233 234 /** 235 * @return the maximumFarClippingPlane which a user can request. 236 */ 237 public double getMaximumFarClippingPlane() { 238 return maximumFarClippingPlane; 239 } 240 241 /** 242 * @return the copyrightImage as a BufferedImage. 243 */ 244 public BufferedImage getCopyrightImage() { 245 return copyrightImage; 246 } 247 248 /** 249 * @return the defaultSplitter. 250 */ 251 public String getDefaultSplitter() { 252 return defaultSplitter; 253 } 254 255 /** 256 * @return the minimalTerrainHeight which is used as zValue of a terrain if no dgm is found 257 * (configured) for a request. The default value is 0d. 258 */ 259 public double getMinimalTerrainHeight() { 260 return minimalTerrainHeight; 261 } 262 263 /** 264 * @return the minimalWCS_DGMResolution. 265 */ 266 public double getMinimalWCS_DGMResolution() { 267 return minimalWCS_DGMResolution; 268 } 269 270 /** 271 * @return the percentage to which wcs-request should be extended 272 */ 273 public double getExtendRequestPercentage() { 274 return extendRequestPercentage; 275 } 276 277 /** 278 * @return the configured nearclipping plane. 279 */ 280 public double getNearClippingPlane() { 281 return nearClippingPlane; 282 } 283 }