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