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    }