001 //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/ogcwebservices/wmps/capabilities/WMPSCapabilities.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.wmps.capabilities;
037
038 import org.deegree.ogcwebservices.getcapabilities.OGCCapabilities;
039 import org.deegree.ogcwebservices.getcapabilities.OperationsMetadata;
040 import org.deegree.ogcwebservices.getcapabilities.ServiceIdentification;
041 import org.deegree.ogcwebservices.getcapabilities.ServiceProvider;
042 import org.deegree.ogcwebservices.wms.capabilities.Layer;
043 import org.deegree.ogcwebservices.wms.capabilities.UserDefinedSymbolization;
044
045 /**
046 * The purpose of the GetCapabilities operation is described in the Basic Capabilities Service
047 * Elements section, above. In the particular case of a Web Map Print Service Capabilities Service,
048 * the response of a GetCapabilities request is general information about the service itself and
049 * specific information about the available maps.
050 *
051 * The available output formats and the online resource are listed for each operation offered by the
052 * server,
053
054 *
055 * @author <a href="mailto:deshmukh@lat-lon.de">Anup Deshmukh</a>
056 * @version 2.0
057 */
058 public class WMPSCapabilities extends OGCCapabilities {
059
060 private static final long serialVersionUID = -5173204173366244735L;
061
062 private ServiceIdentification serviceIdentification;
063
064 private ServiceProvider serviceProvider;
065
066 private OperationsMetadata operationMetadata;
067
068 private UserDefinedSymbolization userDefinedSymbolization;
069
070 private Layer layer;
071
072 /**
073 * Constructor initializing the class with the <code>WMPSCapabilities</code>
074 *
075 * @param version
076 * @param serviceIdentification
077 * @param serviceProvider
078 * @param userDefinedSymbolization
079 * @param metadata
080 * @param layer
081 */
082 protected WMPSCapabilities( String version, ServiceIdentification serviceIdentification,
083 ServiceProvider serviceProvider,
084 UserDefinedSymbolization userDefinedSymbolization,
085 OperationsMetadata metadata, Layer layer ) {
086 super( version, null );
087 setServiceProvider( serviceProvider );
088 setServiceIdentification( serviceIdentification );
089 setUserDefinedSymbolization( userDefinedSymbolization );
090 setOperationMetadata( metadata );
091 setLayer( layer );
092 }
093
094 /**
095 * returns the service description section
096 *
097 * @return ServiceIdentification
098 */
099 public ServiceIdentification getServiceIdentification() {
100 return this.serviceIdentification;
101 }
102
103 /**
104 * the service description section
105 *
106 * @param serviceIdentification
107 */
108 public void setServiceIdentification( ServiceIdentification serviceIdentification ) {
109 this.serviceIdentification = serviceIdentification;
110 }
111
112 /**
113 * returns the root layer provided by a WMPS
114 *
115 * @return Layer
116 */
117 public Layer getLayer() {
118 return this.layer;
119 }
120
121 /**
122 * recursion over all layers to find the layer that matches the submitted name. If no layer can
123 * be found that fullfills the condition <tt>null</tt> will be returned.
124 *
125 * @param name
126 * @return Layer
127 */
128 public Layer getLayer( String name ) {
129 Layer lay = null;
130
131 if ( name.equals( this.layer.getName() ) ) {
132 lay = this.layer;
133 } else {
134 lay = getLayer( name, this.layer.getLayer() );
135 }
136
137 return lay;
138 }
139
140 /**
141 * returns the layer provided by a WMPS for the submitted name. If not found null will be
142 * returned.
143 *
144 * @param name
145 * name of the layer to be found
146 * @param layers
147 * list of searchable layers
148 *
149 * @return a layer object or <tt>null</tt>
150 */
151 private Layer getLayer( String name, Layer[] layers ) {
152 Layer lay = null;
153
154 if ( layers != null ) {
155 for ( int i = 0; i < layers.length; i++ ) {
156 if ( name.equals( layers[i].getName() ) ) {
157 lay = layers[i];
158 break;
159 }
160 lay = getLayer( name, layers[i].getLayer() );
161 if ( lay != null ) break;
162 }
163 }
164
165 return lay;
166 }
167
168 /**
169 * sets the root layer provided by a WMPS
170 *
171 * @param layer
172 */
173 public void setLayer( Layer layer ) {
174 this.layer = layer;
175 }
176
177 /**
178 * returns metadata about the offered access methods like PrintMap or GetCapabiliites
179 *
180 * @return OperationsMetadata
181 */
182 public OperationsMetadata getOperationMetadata() {
183 return this.operationMetadata;
184 }
185
186 /**
187 * sets metadata for the offered access methods like PrintMap or GetCapabiliites
188 *
189 * @param operationMetadata
190 */
191 public void setOperationMetadata( OperationsMetadata operationMetadata ) {
192 this.operationMetadata = operationMetadata;
193 }
194
195 /**
196 * returns informations about the provider of a WMPS
197 *
198 * @return ServiceProvider
199 */
200 public ServiceProvider getServiceProvider() {
201 return this.serviceProvider;
202 }
203
204 /**
205 * sets informations about the provider of a WMPS
206 *
207 * @param serviceProvider
208 */
209 public void setServiceProvider( ServiceProvider serviceProvider ) {
210 this.serviceProvider = serviceProvider;
211 }
212
213 public UserDefinedSymbolization getUserDefinedSymbolization() {
214 return this.userDefinedSymbolization;
215 }
216
217 public void setUserDefinedSymbolization( UserDefinedSymbolization userDefinedSymbolization ) {
218 this.userDefinedSymbolization = userDefinedSymbolization;
219 }
220 }