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