001 //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/ogcwebservices/sos/configuration/SourceServerConfiguration.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 package org.deegree.ogcwebservices.sos.configuration;
037
038 import java.net.URL;
039 import java.util.ArrayList;
040
041 import org.deegree.datatypes.QualifiedName;
042 import org.deegree.ogcwebservices.OGCWebService;
043
044 /**
045 * represent a sourceServer configuration
046 *
047 * @author <a href="mailto:mkulbe@lat-lon.de">Matthias Kulbe </a>
048 *
049 */
050
051 public class SourceServerConfiguration {
052
053 private String id;
054
055 private String service;
056
057 private String version;
058
059 private OGCWebService dataService;
060
061 // platform description configs
062 private QualifiedName platformDescriptionFeatureType;
063
064 private QualifiedName platformDescriptionIdPropertyName;
065
066 private QualifiedName platformDescriptionCoordPropertyName;
067
068 private URL platformDescriptionXSLTScriptSource;
069
070 // sensorDescription configs
071 private QualifiedName sensorDescriptionFeatureType;
072
073 private QualifiedName sensorDescriptionIdPropertyName;
074
075 private URL sensorDescriptionXSLTScriptSource;
076
077 // list of all provided sensors
078 private ArrayList<SensorConfiguration> sensors = new ArrayList<SensorConfiguration>();
079
080 // list of all provided platforms
081 private ArrayList<PlatformConfiguration> platforms = new ArrayList<PlatformConfiguration>();
082
083 /**
084 *
085 * @param id
086 * @param service
087 * @param version
088 * @param dataService
089 * @param platformDescriptionFeatureType
090 * @param platformDescriptionIdPropertyName
091 * @param platformDescriptionCoordPropertyName
092 * @param platformDescriptionXSLTScriptSource
093 * @param sensorDescriptionFeatureType
094 * @param sensorDescriptionIdPropertyName
095 * @param sensorDescriptionXSLTScriptSource
096 */
097 public SourceServerConfiguration( String id, String service, String version, OGCWebService dataService,
098 QualifiedName platformDescriptionFeatureType,
099 QualifiedName platformDescriptionIdPropertyName,
100 QualifiedName platformDescriptionCoordPropertyName,
101 URL platformDescriptionXSLTScriptSource,
102 QualifiedName sensorDescriptionFeatureType,
103 QualifiedName sensorDescriptionIdPropertyName,
104 URL sensorDescriptionXSLTScriptSource ) {
105
106 this.service = service;
107 this.id = id;
108 this.version = version;
109 this.dataService = dataService;
110 this.platformDescriptionFeatureType = platformDescriptionFeatureType;
111 this.platformDescriptionIdPropertyName = platformDescriptionIdPropertyName;
112 this.platformDescriptionCoordPropertyName = platformDescriptionCoordPropertyName;
113 this.platformDescriptionXSLTScriptSource = platformDescriptionXSLTScriptSource;
114 this.sensorDescriptionFeatureType = sensorDescriptionFeatureType;
115 this.sensorDescriptionIdPropertyName = sensorDescriptionIdPropertyName;
116 this.sensorDescriptionXSLTScriptSource = sensorDescriptionXSLTScriptSource;
117
118 }
119
120 public QualifiedName getPlatformDescriptionCoordPropertyName() {
121 return platformDescriptionCoordPropertyName;
122 }
123
124 public QualifiedName getPlatformDescriptionFeatureType() {
125 return platformDescriptionFeatureType;
126 }
127
128 public QualifiedName getPlatformDescriptionIdPropertyName() {
129 return platformDescriptionIdPropertyName;
130 }
131
132 public QualifiedName getSensorDescriptionFeatureType() {
133 return sensorDescriptionFeatureType;
134 }
135
136 public QualifiedName getSensorDescriptionIdPropertyName() {
137 return sensorDescriptionIdPropertyName;
138 }
139
140 /**
141 * adds a new sensor
142 *
143 * @param sensor
144 */
145 public void addSensor( SensorConfiguration sensor ) {
146 this.sensors.add( sensor );
147
148 }
149
150 /**
151 * returns all sensors
152 *
153 * @return ll sensors
154 */
155 public SensorConfiguration[] getSensors() {
156 return this.sensors.toArray( new SensorConfiguration[this.sensors.size()] );
157 }
158
159 /**
160 * returns the sensor by the given scs id
161 *
162 * @param id
163 * @return the sensor by the given scs id
164 */
165 public SensorConfiguration getSensorById( String id ) {
166 for ( int i = 0; i < this.sensors.size(); i++ ) {
167 if ( this.sensors.get( i ).getId().equals( id ) ) {
168 return this.sensors.get( i );
169 }
170 }
171 return null;
172 }
173
174 /**
175 * returns the sensor by the given idPropertyValue on the sourceServer
176 *
177 * @param id
178 * @return the sensor by the given idPropertyValue on the sourceServer
179 */
180 public SensorConfiguration getSensorByIdPropertyValue( String id ) {
181 for ( int i = 0; i < this.sensors.size(); i++ ) {
182 if ( this.sensors.get( i ).getIdPropertyValue().equals( id ) ) {
183 return this.sensors.get( i );
184 }
185 }
186 return null;
187 }
188
189 /**
190 * returns true if the sensor with the given id exists
191 *
192 * @param id
193 * @return <code>true</code> if the sensor with the given id exists
194 */
195 public boolean haveSensorById( String id ) {
196 for ( int i = 0; i < this.sensors.size(); i++ ) {
197 if ( this.sensors.get( i ).getId().equals( id ) ) {
198 return true;
199 }
200 }
201 return false;
202 }
203
204 /**
205 * returns true if the sensor with the given idPropertyValue exists
206 *
207 * @param id
208 * @return <code>true</code> if the sensor with the given idPropertyValue exists
209 */
210 public boolean haveSensorByIdPropertyValue( String id ) {
211 for ( int i = 0; i < this.sensors.size(); i++ ) {
212 if ( this.sensors.get( i ).getIdPropertyValue().equals( id ) ) {
213 return true;
214 }
215 }
216 return false;
217 }
218
219 public OGCWebService getDataService() {
220 return dataService;
221 }
222
223 public String getId() {
224 return id;
225 }
226
227 public String getService() {
228 return service;
229 }
230
231 public String getVersion() {
232 return version;
233 }
234
235 /**
236 * overwrites the equals function
237 */
238 public boolean equals( Object obj ) {
239 if ( !( obj instanceof SourceServerConfiguration ) ) {
240 return false;
241 }
242 if ( this.getId().equals( ( (SourceServerConfiguration) obj ).getId() ) ) {
243 return true;
244 }
245 return false;
246 }
247
248 /**
249 * overrides the hashCode function
250 */
251 public int hashCode() {
252 return this.getId().hashCode();
253 }
254
255 /**
256 * adds a new platform
257 *
258 * @param platform
259 */
260 public void addPlatform( PlatformConfiguration platform ) {
261 this.platforms.add( platform );
262
263 }
264
265 /**
266 * returns all platforms
267 *
268 * @return all platforms
269 */
270 public PlatformConfiguration[] getPlatforms() {
271 return this.platforms.toArray( new PlatformConfiguration[this.platforms.size()] );
272 }
273
274 /**
275 * returns the platform by the given scs id
276 *
277 * @param id
278 * @return the platform by the given scs id
279 */
280 public PlatformConfiguration getPlatformById( String id ) {
281 for ( int i = 0; i < this.platforms.size(); i++ ) {
282 if ( this.platforms.get( i ).getId().equals( id ) ) {
283 return this.platforms.get( i );
284 }
285 }
286 return null;
287 }
288
289 /**
290 * returns the platform by the given idPropertyValue on the sourceServer
291 *
292 * @param id
293 * @return the platform by the given idPropertyValue on the sourceServer
294 */
295 public PlatformConfiguration getPlatformByIdPropertyValue( String id ) {
296
297 for ( int i = 0; i < this.platforms.size(); i++ ) {
298 if ( this.platforms.get( i ).getId().equals( id ) ) {
299 return this.platforms.get( i );
300 }
301 }
302
303 return null;
304 }
305
306 /**
307 * returns true if the platform with the given id exists
308 *
309 * @param id
310 * @return <code>true</code> if the platform with the given id exists
311 */
312 public boolean havePlatformById( String id ) {
313 for ( int i = 0; i < this.platforms.size(); i++ ) {
314 if ( this.platforms.get( i ).getId().equals( id ) ) {
315 return true;
316 }
317 }
318 return false;
319 }
320
321 /**
322 * returns true if the platform with the given idPropertyValue exists
323 *
324 * @param id
325 * @return <code>true</code> if the platform with the given idPropertyValue exists
326 */
327 public boolean havePlatformByIdPropertyValue( String id ) {
328 for ( int i = 0; i < this.platforms.size(); i++ ) {
329 if ( this.platforms.get( i ).getIdPropertyValue().equals( id ) ) {
330 return true;
331 }
332 }
333 return false;
334 }
335
336 /**
337 * returns true, if all parameters, to request platform metadata, is set
338 *
339 * @return <code>true</code>, if all parameters, to request platform metadata, is set
340 */
341 public boolean havePlatformDescriptionData() {
342
343 if ( ( this.platformDescriptionFeatureType != null ) && ( this.platformDescriptionIdPropertyName != null )
344 && ( this.platformDescriptionCoordPropertyName != null ) ) {
345 return true;
346 }
347
348 return false;
349 }
350
351 /**
352 * returns true, if all parameters, to request sensor metadata, is set
353 *
354 * @return <code>true</code>, if all parameters, to request sensor metadata, is set
355 */
356 public boolean haveSensorDescriptionData() {
357 if ( ( this.sensorDescriptionFeatureType != null ) && ( this.sensorDescriptionIdPropertyName != null ) ) {
358 return true;
359 }
360
361 return false;
362 }
363
364 public URL getPlatformDescriptionXSLTScriptSource() {
365 return this.platformDescriptionXSLTScriptSource;
366 }
367
368 public URL getSensorDescriptionXSLTScriptSource() {
369 return this.sensorDescriptionXSLTScriptSource;
370 }
371 }