    001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.4_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 &lt;CapabilitiesService&gt; 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    }