001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/portal/standard/csw/configuration/CSWClientConfiguration.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.portal.standard.csw.configuration; 038 039 import java.net.URL; 040 import java.util.ArrayList; 041 import java.util.Arrays; 042 import java.util.HashMap; 043 import java.util.Iterator; 044 import java.util.List; 045 import java.util.Map; 046 import java.util.Set; 047 048 import org.deegree.framework.util.StringTools; 049 import org.deegree.i18n.Messages; 050 import org.deegree.model.spatialschema.Envelope; 051 052 /** 053 * This class stores the parameters defined in the WMC, so that the csw module can use them 054 * 055 * @author <a href="mailto:mays@lat-lon.de">Judit Mays</a> 056 * @author last edited by: $Author: mschneider $ 057 * 058 * @version $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18 Jun 2009) $ 059 */ 060 public class CSWClientConfiguration { 061 062 private int maxRecords = 10; 063 064 /** 065 * key<String> = catalog name; value<String> = catalog address 066 */ 067 private Map<String, String> catalogToUrlMap; 068 069 /** 070 * key<String> = catalog name; value<List<String>> = list of supported protocols ( e.g. POST, SOAP ) 071 */ 072 private Map<String, List<String>> catalogToProtocolMap; 073 074 /** 075 * key<String> = catalog name; value<List<String>> = list of supported formats ( e.g. ISO19115, ISO19119, OGCCORE ) 076 */ 077 private Map<String, List<String>> catalogToFormatMap; 078 079 /** 080 * key<String> = profile name ( e.g. Profile.ISO19115, Profile.OGCCORE, etc. ); value<HashMap<String,String>> = 081 * key: e.g. brief, summary, full; value: e.g. metaList2html.xsl 082 */ 083 private Map<String, HashMap<String, String>> profilesToXsl; 084 085 private String srs = null; 086 087 private String xPathToDataIdentifier = null; 088 089 private String xPathToDataTitle = null; 090 091 private String xPathToServiceIdentifier = null; 092 093 private String xPathToServiceTitle = null; 094 095 private String xPathToServiceOperatesOnTitle = null; 096 097 private String xPathToServiceAddress = null; 098 099 private String xPathToServiceType = null; 100 101 private String xPathToServiceTypeVersion = null; 102 103 // is needed for shopping cart, but shopping cart is currently disabled. 104 private String mapContextTemplatePath = null; 105 106 /* 107 * ignorig for now private HashMap thesauri = null; private Download download = null; private CCatalog[] ccatalog = 108 * null; private int maxInactiveInterval = 0; private String[] filterIDs = null; private int queryScope = 0; private 109 * GM_Envelope rootBoundingBox = null; private WMSClientConfiguration wmsCConfig = null; // seems to be not needed 110 */ 111 112 /** 113 * 114 */ 115 public CSWClientConfiguration() { 116 catalogToUrlMap = new HashMap<String, String>( 5 ); 117 profilesToXsl = new HashMap<String, HashMap<String, String>>( 5 ); 118 catalogToProtocolMap = new HashMap<String, List<String>>( 5 ); 119 catalogToFormatMap = new HashMap<String, List<String>>( 5 ); 120 } 121 122 /** 123 * @return Returns the names of all served catalogs 124 */ 125 public String[] getCatalogNames() { 126 Set<String> keySet = catalogToUrlMap.keySet(); 127 return keySet.toArray( new String[keySet.size()] ); 128 } 129 130 /** 131 * @return Returns the addresses of all served catalogs 132 */ 133 public String[] getCatalogServerAddresses() { 134 String[] addresses = new String[catalogToUrlMap.size()]; 135 Iterator it = catalogToUrlMap.values().iterator(); 136 for ( int i = 0; i < addresses.length && it.hasNext(); i++ ) { 137 addresses[i] = (String) it.next(); 138 } 139 return addresses; 140 } 141 142 /** 143 * @param catalogName 144 * @return Returns the address of the submitted catalog, or <tt>null</tt> if the map contains no mapping for this 145 * key. 146 */ 147 public String getCatalogServerAddress( String catalogName ) { 148 return catalogToUrlMap.get( catalogName ); 149 } 150 151 /** 152 * @return Returns the catalogToFormatMap. 153 */ 154 public Map getCatalogToFormatMap() { 155 return catalogToFormatMap; 156 } 157 158 /** 159 * @param catalogName 160 * The name of the catalog 161 * @return Returns the format types of a given catalog, e.g. "ISO19115" or "ISO19119". May be null, if the passed 162 * catalogName is unknown. 163 */ 164 public List getCatalogFormats( String catalogName ) { 165 return catalogToFormatMap.get( catalogName ); 166 } 167 168 /** 169 * @return Returns the catalogToProtocolMap. 170 */ 171 public Map getCatalogToProtocolMap() { 172 return catalogToProtocolMap; 173 } 174 175 /** 176 * @param catalogName 177 * The name of the catalog 178 * @return Returns the protocol type of a given catalog, e.g. "POST" or "SOAP". May be null, if the passed 179 * catalogName is unknown. 180 */ 181 public List getCatalogProtocols( String catalogName ) { 182 return catalogToProtocolMap.get( catalogName ); 183 } 184 185 /** 186 * @return Returns the catalogToUrlMap. 187 */ 188 public Map getCatalogToUrlMap() { 189 return catalogToUrlMap; 190 } 191 192 /** 193 * 194 * @return Returns a List of the service metadata catalogues. 195 */ 196 public List<String> getServiceMetadataCatalogs() { 197 List<String> serviceCatalogs = new ArrayList<String>( 10 ); 198 199 Iterator it = catalogToFormatMap.keySet().iterator(); 200 while ( it.hasNext() ) { 201 String catalog = (String) it.next(); 202 List formats = getCatalogFormats( catalog ); 203 String smf = ServiceMetadataFormats.getString( "CSWClientConfiguration.serviceMetadata" ); 204 String[] s = StringTools.toArray( smf, ",", true ); 205 List<String> list = new ArrayList<String>( Arrays.asList( s ) ); 206 for ( int i = 0; i < formats.size(); i++ ) { 207 if ( list.contains( formats.get( i ) ) ) { 208 serviceCatalogs.add( catalog ); 209 break; 210 } 211 } 212 } 213 214 return serviceCatalogs; 215 } 216 217 /** 218 * @return Returns an array of IDs that marks UDK objects that are valid for the catalog 219 */ 220 public String[] getFilterIDs() { 221 throw new UnsupportedOperationException( Messages.getMessage( "IGEO_STD_CSW_UNSUPPORTED_METHOD", 222 "getFilterIDs()" ) ); 223 } 224 225 /** 226 * @param catalogField 227 * @return Returns the catalog (iso-) elements that shall be targeted by a html form element 228 */ 229 public String[] getFormElements( String catalogField ) { 230 throw new UnsupportedOperationException( Messages.getMessage( "IGEO_STD_CSW_UNSUPPORTED_METHOD", 231 "getFormElements()" ) ); 232 } 233 234 /** 235 * Method is needed for shopping cart, but shopping cart is currently disabled 236 * TODO when shopping cart is enabled again, please adjust javadoc! 237 * 238 * @return Returns the mapContextTemplatePath. 239 */ 240 public String getMapContextTemplatePath() { 241 return mapContextTemplatePath; 242 } 243 244 /** 245 * @return Returns the maximum number records requested in a GetRecord request. 246 */ 247 public int getMaxRecords() { 248 return maxRecords; 249 } 250 251 /** 252 * @return Returns the maximun time a session will be alive after the last change in seconds 253 */ 254 public int getMaxSessionLifeTime() { 255 return 3600;// maxInactiveInterval; 256 } 257 258 /** 259 * @return Returns the profilesToXsl. 260 */ 261 public Map getProfilesToXsl() { 262 return profilesToXsl; 263 } 264 265 /** 266 * @param profileName 267 * @return Returns the profiles to xsl for the passed profile or <tt>null</tt> if the profile map contains no 268 * mapping for this key. 269 */ 270 public HashMap getProfileXSL( String profileName ) { 271 return this.profilesToXsl.get( profileName ); 272 } 273 274 /** 275 * @return Returns the names of possible protocol types 276 */ 277 public String[] getProtocolNames() { 278 Set<String> keySet = catalogToProtocolMap.keySet(); 279 return keySet.toArray( new String[keySet.size()] ); 280 } 281 282 /** 283 * @return Returns the maximum number (iterations) to cascaded catalogs that shall be performed. 284 */ 285 public int getQueryScope() { 286 return 9999;// queryScope; 287 } 288 289 /** 290 * @return Returns the bounding box of the maximum area that shall be searched for (meta)data. This parameter will 291 * be extracted from the searchmap parameter 292 */ 293 public Envelope getRootBoundingBox() { 294 throw new UnsupportedOperationException( Messages.getMessage( "IGEO_STD_CSW_UNSUPPORTED_METHOD", 295 "getRootBoundingBox()" ) ); 296 // return rootBoundingBox; 297 } 298 299 /** 300 * @return Returns the srs. 301 */ 302 public String getSrs() { 303 return srs; 304 } 305 306 /** 307 * @param thesaurus 308 * @return Returns the address of the submitted thesaurus 309 */ 310 public URL getThesaurusAddress( String thesaurus ) { 311 throw new UnsupportedOperationException( Messages.getMessage( "IGEO_STD_CSW_UNSUPPORTED_METHOD", 312 "getThesaurusAddress()" ) ); 313 // return (URL)thesauri.get( thesaurus ); 314 } 315 316 /** 317 * @return Returns the names of the thesauri known by the client 318 */ 319 public String[] getThesaurusNames() { 320 throw new UnsupportedOperationException( Messages.getMessage( "IGEO_STD_CSW_UNSUPPORTED_METHOD", 321 "getThesaurusNames()" ) ); 322 // String[] tn = new String[thesauri.size()]; 323 // return (String[])thesauri.keySet().toArray( tn ); 324 } 325 326 /** 327 * @return Returns the xPathToDataIdentifier. 328 */ 329 public String getXPathToDataIdentifier() { 330 return xPathToDataIdentifier; 331 } 332 333 /** 334 * @return Returns the xPathToDataTitle. 335 */ 336 public String getXPathToDataTitle() { 337 return xPathToDataTitle; 338 } 339 340 /** 341 * @return Returns the xPathToServiceAddress. 342 */ 343 public String getXPathToServiceAddress() { 344 return xPathToServiceAddress; 345 } 346 347 /** 348 * @return Returns the xPathToServiceIdentifier. 349 */ 350 public String getXPathToServiceIdentifier() { 351 return xPathToServiceIdentifier; 352 } 353 354 /** 355 * @return Returns the xPathToServiceOperatesOnTitle. 356 */ 357 public String getXPathToServiceOperatesOnTitle() { 358 return xPathToServiceOperatesOnTitle; 359 } 360 361 /** 362 * @return Returns the xPathToServiceTitle. 363 */ 364 public String getXPathToServiceTitle() { 365 return xPathToServiceTitle; 366 } 367 368 /** 369 * @return Returns the xPathToServiceType. 370 */ 371 public String getXPathToServiceType() { 372 return xPathToServiceType; 373 } 374 375 /** 376 * @return Returns the xPathToServiceTypeVersion. 377 */ 378 public String getXPathToServiceTypeVersion() { 379 return xPathToServiceTypeVersion; 380 } 381 382 // ########################################################### 383 384 /** 385 * method is needed for shopping cart, but shopping cart is currently disabled 386 * TODO when shopping cart is enabled again, please adjust javadoc! 387 * 388 * @param mapContextTemplatePath 389 * The mapContextTemplatePath to set. 390 */ 391 public void setMapContextTemplatePath( String mapContextTemplatePath ) { 392 this.mapContextTemplatePath = mapContextTemplatePath; 393 } 394 395 /** 396 * @param maxRecords 397 */ 398 public void setMaxRecords( int maxRecords ) { 399 this.maxRecords = maxRecords; 400 } 401 402 /** 403 * @param srs 404 * The srs to set. 405 */ 406 public void setSrs( String srs ) { 407 this.srs = srs; 408 } 409 410 /** 411 * @param pathToIdentifier 412 * The xPath to the FileIdentifier to set. 413 */ 414 public void setXPathToDataIdentifier( String pathToIdentifier ) { 415 this.xPathToDataIdentifier = pathToIdentifier; 416 } 417 418 /** 419 * @param pathToDataTitle 420 * The xPathToDataTitle to set. 421 */ 422 public void setXPathToDataTitle( String pathToDataTitle ) { 423 xPathToDataTitle = pathToDataTitle; 424 } 425 426 /** 427 * @param pathToServiceAddress 428 * The xPathToServiceAddress to set. 429 */ 430 public void setXPathToServiceAddress( String pathToServiceAddress ) { 431 xPathToServiceAddress = pathToServiceAddress; 432 } 433 434 /** 435 * @param pathToServiceIdentifier 436 * The xPathToServiceIdentifier to set. 437 */ 438 public void setXPathToServiceIdentifier( String pathToServiceIdentifier ) { 439 xPathToServiceIdentifier = pathToServiceIdentifier; 440 } 441 442 /** 443 * @param pathToServiceOperatesOnTitle 444 * The xPathToServiceOperatesOnTitle to set. 445 */ 446 public void setXPathToServiceOperatesOnTitle( String pathToServiceOperatesOnTitle ) { 447 xPathToServiceOperatesOnTitle = pathToServiceOperatesOnTitle; 448 } 449 450 /** 451 * @param pathToServiceTitle 452 * The xPathToServiceTitle to set. 453 */ 454 public void setXPathToServiceTitle( String pathToServiceTitle ) { 455 xPathToServiceTitle = pathToServiceTitle; 456 } 457 458 /** 459 * @param pathToServiceType 460 * The xPathToServiceType to set. 461 */ 462 public void setXPathToServiceType( String pathToServiceType ) { 463 xPathToServiceType = pathToServiceType; 464 } 465 466 /** 467 * @param pathToServiceTypeVersion 468 * The xPathToServiceTypeVersion to set. 469 */ 470 public void setXPathToServiceTypeVersion( String pathToServiceTypeVersion ) { 471 xPathToServiceTypeVersion = pathToServiceTypeVersion; 472 } 473 474 // ########################################################### 475 476 /** 477 * @param catalogueName 478 * @param formatList 479 */ 480 public void addCatalogueFormat( String catalogueName, List<String> formatList ) { 481 this.catalogToFormatMap.put( catalogueName, formatList ); 482 } 483 484 /** 485 * @param catalogueName 486 * @param protocolList 487 */ 488 public void addCatalogueProtocol( String catalogueName, List<String> protocolList ) { 489 this.catalogToProtocolMap.put( catalogueName, protocolList ); 490 } 491 492 /** 493 * @param catalogueName 494 * @param catURL 495 */ 496 public void addCatalogueURL( String catalogueName, String catURL ) { 497 this.catalogToUrlMap.put( catalogueName, catURL ); 498 } 499 500 /** 501 * @param profileName 502 * The name of the profile (ie: Profiles.ISO19115, Profiles.ISO19119, Profiles.OGCCORE) 503 * @param elementSetKeyToXSL 504 * HashMap containing the elementset name as key and the xsl file name as value. 505 */ 506 public void addProfileXSL( String profileName, HashMap<String, String> elementSetKeyToXSL ) { 507 this.profilesToXsl.put( profileName, elementSetKeyToXSL ); 508 } 509 }