001 //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/ogcwebservices/getcapabilities/CapabilitiesService.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.getcapabilities;
037
038 import java.net.URL;
039 import java.util.ArrayList;
040
041 import org.deegree.ogcbase.ContactInformation;
042
043 /**
044 * The interface provides acces to the <CapabilitiesService> element of the Capabilities XML
045 * providing general metadata for the service as a whole. It shall include a Name, Title, and Online
046 * Resource URL. Optionally, Abstract, Keyword List, Contact Information, Fees, and Access
047 * Constraints may be provided. The meaning of most of these elements is defined in [ISO 19115]. The
048 * CapabilitiesService Name shall be "ogc:WMS" in the case of a Web Map CapabilitiesService.
049 * <p>
050 * ----------------------------------------------------------------------
051 * </p>
052 *
053 * @author <a href="mailto:k.lupp@web.de">Katharina Lupp</a>
054 * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider</a>
055 * @version $Revision: 18195 $
056 */
057
058 public class CapabilitiesService {
059
060 private ArrayList<String> keywordList = null;
061
062 private ContactInformation contactInformation = null;
063
064 private String abstract_ = null;
065
066 private String accessConstraints = null;
067
068 private String fees = null;
069
070 private String name = null;
071
072 private String title = null;
073
074 private URL onlineResource = null;
075
076 /**
077 * constructor initializing the class with the OGCWebServiceCapabilities
078 *
079 * @param name
080 * @param title
081 * @param abstract_
082 * @param keywords
083 * @param onlineResource
084 * @param contactInformation
085 * @param fees
086 * @param accessConstraints
087 */
088 public CapabilitiesService( String name, String title, String abstract_, String[] keywords, URL onlineResource,
089 ContactInformation contactInformation, String fees, String accessConstraints ) {
090 keywordList = new ArrayList<String>();
091 setName( name );
092 setTitle( title );
093 setAbstract( abstract_ );
094 setKeywordList( keywords );
095 setOnlineResource( onlineResource );
096 setContactInformation( contactInformation );
097 setFees( fees );
098 setAccessConstraints( accessConstraints );
099 }
100
101 /**
102 * returns the name of the service. Typically, the Name is a single word used for
103 * machine-to-machine communication.
104 *
105 * @return name of the service
106 *
107 */
108 public String getName() {
109 return name;
110 }
111
112 /**
113 * sets the name of the service. Typically, the Name is a single word used for
114 * machine-to-machine communication.
115 *
116 * @param name
117 *
118 */
119 public void setName( String name ) {
120 this.name = name;
121 }
122
123 /**
124 * Returns the title of the service. The Title is for the benefit of humans. The
125 * CapabilitiesService Title is at the discretion of the provider, and should be brief yet
126 * descriptive enough to identify this server in a menu with other servers.
127 *
128 * @see #getName()
129 * @return title of the service
130 *
131 */
132 public String getTitle() {
133 return title;
134 }
135
136 /**
137 * Sets the title of the service. The Title is for the benefit of humans. The
138 * CapabilitiesService Title is at the discretion of the provider, and should be brief yet
139 * descriptive enough to identify this server in a menu with other servers.
140 *
141 * @param title
142 *
143 * @see #getName()
144 *
145 */
146 public void setTitle( String title ) {
147 this.title = title;
148 }
149
150 /**
151 * The Abstract element allows a descriptive narrative providing more information about the
152 * enclosing object.
153 *
154 * @return the abstract
155 */
156 public String getAbstract() {
157 return abstract_;
158 }
159
160 /**
161 * Sets the abstract element
162 *
163 * @param abstract_
164 */
165 public void setAbstract( String abstract_ ) {
166 this.abstract_ = abstract_;
167 }
168
169 /**
170 * A list of keywords or keyword phrases should be included to help catalog searching.
171 * Currently, no controlled vocabulary has been defined.
172 *
173 * @return the keyword list
174 *
175 */
176 public String[] getKeywordList() {
177 return keywordList.toArray( new String[keywordList.size()] );
178 }
179
180 /**
181 * adds the keywordList
182 *
183 * @param keyword
184 */
185 public void addKeyword( String keyword ) {
186 this.keywordList.add( keyword );
187 }
188
189 /**
190 * sets the keywordList
191 *
192 * @param keywordList
193 */
194 public void setKeywordList( String[] keywordList ) {
195 this.keywordList.clear();
196
197 if ( keywordList != null ) {
198 for ( int i = 0; i < keywordList.length; i++ ) {
199 this.keywordList.add( keywordList[i] );
200 }
201 }
202 }
203
204 /**
205 * The OnlineResource element within the CapabilitiesService element can be used, for example,
206 * to point to the web site of the service provider. There are other OnlineResource elements
207 * used for the URL prefix of each supported operation.
208 *
209 * @return the link
210 *
211 */
212 public URL getOnlineResource() {
213 return onlineResource;
214 }
215
216 /**
217 * sets URL prefix for get HTTP request method.
218 *
219 * @param onlineResource
220 *
221 */
222 public void setOnlineResource( URL onlineResource ) {
223 this.onlineResource = onlineResource;
224 }
225
226 /**
227 * Returns informations who to contact for questions about the service. This method returns
228 * <tt>null</tt> if no contact informations are available.
229 *
230 * @return informations who to contact for questions about the service. This method returns
231 * <tt>null</tt> if no contact informations are available.
232 *
233 */
234 public ContactInformation getContactInformation() {
235 return contactInformation;
236 }
237
238 /**
239 * Sets informations who to contact for questions about the service. This method returns
240 * <tt>null</tt> if no contact informations are available.
241 *
242 * @param contactInformation
243 *
244 */
245 public void setContactInformation( ContactInformation contactInformation ) {
246 this.contactInformation = contactInformation;
247 }
248
249 /**
250 * Returns fees assigned to the service. If no fees defined "none" will be returned.
251 *
252 * @return fees assigned to the service. If no fees defined "none" will be returned.
253 *
254 */
255 public String getFees() {
256 return fees;
257 }
258
259 /**
260 * Sets fees assigned to the service. If no fees defined "none" will be returned.
261 *
262 * @param fees
263 *
264 */
265 public void setFees( String fees ) {
266 this.fees = fees;
267 }
268
269 /**
270 * Returns access constraints assigned to the service. If no access constraints are defined
271 * "none" will be returned.
272 *
273 * @return the constraints
274 *
275 */
276 public String getAccessConstraints() {
277 return accessConstraints;
278 }
279
280 /**
281 * Sets access constraints assigned to the service. If no access constraints are defined "none"
282 * will be returned.
283 *
284 * @param accessConstraints
285 *
286 */
287 public void setAccessConstraints( String accessConstraints ) {
288 this.accessConstraints = accessConstraints;
289 }
290
291 }