001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/ogcwebservices/wpvs/capabilities/Dataset.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.capabilities; 038 039 import java.util.ArrayList; 040 import java.util.List; 041 042 import org.deegree.model.crs.CoordinateSystem; 043 import org.deegree.model.metadata.iso19115.Keywords; 044 import org.deegree.model.spatialschema.Envelope; 045 import org.deegree.ogcwebservices.wpvs.configuration.AbstractDataSource; 046 047 /** 048 * This class represents a <code>Dataset</code> object. 049 * Exactly one root dataset is mandatory. It may contain zero to any number of child datasets. 050 * 051 * @author <a href="mailto:taddei@lat-lon.de">Ugo Taddei</a> 052 * @author last edited by: $Author: mschneider $ 053 * 054 * @version 2.0, $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18 Jun 2009) $ 055 * 056 * @since 2.0 057 */ 058 public class Dataset { 059 060 // dataset attribs 061 private boolean queryable; 062 private boolean opaque; 063 private boolean noSubset; 064 private int fixedWidth; 065 private int fixedHeight; 066 067 // dataset elements 068 private String name; 069 private String title; 070 private String abstract_; 071 private Keywords[] keywords; 072 private List<CoordinateSystem> crsList; 073 private String[] mimeTypeFormat; 074 private Dimension[] dimensions; 075 private Identifier identifier; 076 private DataProvider dataProvider; 077 private Envelope wgs84BoundingBox; 078 private Envelope[] boundingBoxes; 079 private MetaData[] metadata; 080 private DatasetReference[] datasetReferences; 081 private double minimumScaleDenominator; 082 private double maximumScaleDenominator; 083 private FeatureListReference[] featureListReferences; 084 private Style[] styles; 085 private List<Dataset> datasets; 086 private ElevationModel elevationModel; 087 private AbstractDataSource[] dataSources; 088 private Dataset parent; 089 090 /** 091 * Creates a new dataset object from the given parameters. 092 * 093 * @param queryable 094 * @param opaque 095 * @param noSubset 096 * @param fixedWidth 097 * @param fixedHeight 098 * @param name 099 * @param title 100 * @param abstract_ 101 * @param keywords 102 * @param crsList a list of available crs' 103 * @param mimeTypeFormat 104 * @param wgs84BoundingBox 105 * @param boundingBoxes 106 * @param dimensions 107 * @param dataProvider 108 * @param identifier 109 * @param metadata 110 * @param datasetReferences 111 * @param featureListReferences 112 * @param styles 113 * @param minScaleDenominator 114 * @param maxScaleDenominator 115 * @param datasets 116 * @param elevationModel 117 * @param dataSources 118 * @param parent 119 */ 120 public Dataset( boolean queryable, boolean opaque, boolean noSubset, int fixedWidth, 121 int fixedHeight, String name, String title, String abstract_, 122 Keywords[] keywords, List<CoordinateSystem> crsList, String[] mimeTypeFormat, 123 Envelope wgs84BoundingBox, Envelope[] boundingBoxes, Dimension[] dimensions, 124 DataProvider dataProvider, Identifier identifier, MetaData[] metadata, 125 DatasetReference[] datasetReferences, FeatureListReference[] featureListReferences, 126 Style[] styles, double minScaleDenominator, double maxScaleDenominator, 127 Dataset[] datasets, ElevationModel elevationModel, 128 AbstractDataSource[] dataSources, Dataset parent ) { 129 130 this.queryable = queryable; 131 this.opaque = opaque; 132 this.noSubset = noSubset; 133 this.fixedWidth = fixedWidth; 134 this.fixedHeight = fixedHeight; 135 this.name = name; 136 this.title = title; 137 this.abstract_ = abstract_; 138 this.keywords = keywords; 139 this.crsList = crsList; 140 this.mimeTypeFormat = mimeTypeFormat; 141 this.wgs84BoundingBox = wgs84BoundingBox; 142 this.boundingBoxes = boundingBoxes; 143 this.dimensions = dimensions; 144 this.dataProvider = dataProvider; 145 this.identifier = identifier; 146 this.metadata = metadata; 147 this.datasetReferences = datasetReferences; 148 this.featureListReferences = featureListReferences; 149 this.styles = styles; 150 this.minimumScaleDenominator = minScaleDenominator; 151 this.maximumScaleDenominator = maxScaleDenominator; 152 setDatasets(datasets); 153 this.elevationModel = elevationModel; 154 if( elevationModel != null ){ 155 this.elevationModel.setParentDataset( this ); 156 } 157 158 this.dataSources = dataSources; 159 this.parent = parent; 160 161 // if ( dataSource instanceof LocalWCSDataSource ){ 162 // dataSource = (LocalWCSDataSource)dataSource; 163 // } else { 164 // ((LocalWFSDataSource)dataSource).getGeometryProperty(); 165 // } 166 167 } 168 169 @Override 170 public String toString ( ){ 171 StringBuilder sb = new StringBuilder( 512 ); 172 sb.append( "name=").append( name ); 173 sb.append( "; title=").append( title ); 174 sb.append( "; queryable=" ).append( queryable ); 175 sb.append( "; opaque=").append( opaque ); 176 sb.append( "; noSubset=").append( noSubset ); 177 sb.append( "; fixedWidth=").append( fixedWidth ); 178 sb.append( "; fixedHeight=").append( fixedHeight ); 179 sb.append( "; crsList=").append( crsList); 180 sb.append( "; wgs84BoundingBox=").append( wgs84BoundingBox ); 181 sb.append( "; identifier=").append( identifier ); 182 sb.append( "; minimumScaleDenominator=").append( minimumScaleDenominator ); 183 sb.append( "; maximumScaleDenominator=").append( maximumScaleDenominator ); 184 sb.append( "; elevationModel=").append( elevationModel); 185 return sb.toString(); 186 } 187 188 189 /** 190 * Each dataset may contain zero to any number of child datasets. 191 * 192 * @param datasets the datasets within this dataset. 193 */ 194 public void setDatasets(Dataset[] datasets) { 195 if( datasets == null ){ 196 return; 197 } 198 199 if ( this.datasets == null ){ 200 this.datasets = new ArrayList<Dataset>(); 201 } else { 202 this.datasets.clear(); 203 } 204 205 for (int i = 0; i < datasets.length; i++) { 206 this.datasets.add( datasets[i] ); 207 } 208 209 } 210 211 /** 212 * @return Returns the abstract. 213 */ 214 public String getAbstract() { 215 return abstract_; 216 } 217 218 /** 219 * @return Returns the boundingBoxes. 220 */ 221 public Envelope[] getBoundingBoxes() { 222 return boundingBoxes; 223 } 224 225 /** 226 * @return Returns the crs. 227 */ 228 public CoordinateSystem[] getCrs() { 229 return crsList.toArray( new CoordinateSystem[crsList.size()]); 230 } 231 232 /** 233 * @return Returns the dataProvider. 234 */ 235 public DataProvider getDataProvider() { 236 return dataProvider; 237 } 238 239 /** 240 * @return all child datasets. 241 */ 242 public Dataset[] getDatasets() { 243 return datasets.toArray(new Dataset[datasets.size()]); 244 } 245 246 /** 247 * @return Returns the datasetReferences. 248 */ 249 public DatasetReference[] getDatasetReferences() { 250 return datasetReferences; 251 } 252 253 /** 254 * @return Returns the dataSources. 255 */ 256 public AbstractDataSource[] getDataSources() { 257 return dataSources; 258 } 259 260 /** 261 * @return Returns the dimensions. 262 */ 263 public Dimension[] getDimensions() { 264 return dimensions; 265 } 266 267 /** 268 * @return Returns the featureListReferences. 269 */ 270 public FeatureListReference[] getFeatureListReferences() { 271 return featureListReferences; 272 } 273 274 /** 275 * @return Returns the identifier. 276 */ 277 public Identifier getIdentifier() { 278 return identifier; 279 } 280 281 /** 282 * @return Returns the keywords. 283 */ 284 public Keywords[] getKeywords() { 285 return keywords; 286 } 287 288 /** 289 * @return Returns the maximumScaleDenominator. 290 */ 291 public double getMaximumScaleDenominator() { 292 return maximumScaleDenominator; 293 } 294 295 /** 296 * @return Returns the metadata. 297 */ 298 public MetaData[] getMetadata() { 299 return metadata; 300 } 301 302 /** 303 * @return Returns the mimeTypeFormat. 304 */ 305 public String[] getMimeTypeFormat() { 306 return mimeTypeFormat; 307 } 308 309 /** 310 * @return Returns the minimumScaleDenominator. 311 */ 312 public double getMinimumScaleDenominator() { 313 return minimumScaleDenominator; 314 } 315 316 /** 317 * @return Returns the name. 318 */ 319 public String getName() { 320 return name; 321 } 322 323 /** 324 * @return Returns the styles. 325 */ 326 public Style[] getStyles() { 327 return styles; 328 } 329 330 /** 331 * @return Returns the title. 332 */ 333 public String getTitle() { 334 return title; 335 } 336 337 /** 338 * @return Returns the wgs84BoundingBox. 339 */ 340 public Envelope getWgs84BoundingBox() { 341 return wgs84BoundingBox; 342 } 343 344 /** 345 * @return Returns the fixedHeight. 346 */ 347 public int getFixedHeight() { 348 return fixedHeight; 349 } 350 351 /** 352 * @return Returns the fixedWidth. 353 */ 354 public int getFixedWidth() { 355 return fixedWidth; 356 } 357 358 /** 359 * @return Returns the noSubset. 360 */ 361 public boolean getNoSubset() { 362 return noSubset; 363 } 364 365 /** 366 * @return Returns the opaque. 367 */ 368 public boolean getOpaque() { 369 return opaque; 370 } 371 372 /** 373 * @return Returns the queryable. 374 */ 375 public boolean getQueryable() { 376 return queryable; 377 } 378 379 /** 380 * @return Returns the elevationModel. 381 */ 382 public ElevationModel getElevationModel() { 383 return elevationModel; 384 } 385 386 /** 387 * Returns the parent dataset of this dataset. If the method returns 388 * <code>null</code> the current dataset is the root dataset. 389 * 390 * @return Returns the parent. 391 */ 392 public Dataset getParent() { 393 return parent; 394 } 395 396 397 /** 398 * @param elevationModel An other elevationModel. 399 */ 400 public void setElevationModel( ElevationModel elevationModel ) { 401 this.elevationModel = elevationModel; 402 } 403 404 405 406 }