    001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.4_testing/src/org/deegree/portal/context/Layer.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.portal.context;
    037
    038    import org.deegree.ogcbase.BaseURL;
    039
    040    /**
    041     * encapsulates about a layer described/contained by a Web Map Context
    042     *
    043     * @version $Revision: 18195 $
    044     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
    045     */
    046    public class Layer {
    047        private BaseURL dataURL = null;
    048
    049        private BaseURL metadataURL = null;
    050
    051        private FormatList formatList = null;
    052
    053        private LayerExtension extension = null;
    054
    055        private Server server = null;
    056
    057        private String abstract_ = null;
    058
    059        private String name = null;
    060
    061        private String title = null;
    062
    063        private StyleList styleList = null;
    064
    065        private String[] srs = null;
    066
    067        private boolean hidden = false;
    068
    069        private boolean queryable = false;
    070
    071        /**
    072         * Creates a new ContextLayer object.
    073         *
    074         * @param server
    075         *            service from which the named Layer may be requested
    076         * @param name
    077         *            name of the selected layer (
    078         * @param title
    079         *            title of the selected layer (
    080         * @param abstract_
    081         *            abstract of the selected layer (
    082         * @param srs
    083         *            list of available SRS for the enclosing layer.
    084         * @param dataURL
    085         *            contains a link to an online resource where data corresponding to the layer can be found.
    086         * @param metadataURL
    087         *            contains a link to an online resource where descriptive metadata corresponding to the layer can be
    088         *            found.
    089         * @param formatList
    090         *            parent element containing the list of available image format for this layer.
    091         * @param styleList
    092         *            parent element containing the list of available styles for this layer.
    093         * @param queryable
    094         * @param hidden
    095         * @param extension
    096         *            container tag in which arbitrary vendor specific information can be included
    097         *
    098         * @throws ContextException
    099         */
    100        public Layer( Server server, String name, String title, String abstract_, String[] srs, BaseURL dataURL,
    101                      BaseURL metadataURL, FormatList formatList, StyleList styleList, boolean queryable, boolean hidden,
    102                      LayerExtension extension ) throws ContextException {
    103            setName( name );
    104            setTitle( title );
    105            setAbstract( abstract_ );
    106            setSrs( srs );
    107            setDataURL( dataURL );
    108            setMetadataURL( metadataURL );
    109            setFormatList( formatList );
    110            setStyleList( styleList );
    111            setExtension( extension );
    112            setServer( server );
    113            setQueryable( queryable );
    114            setHidden( hidden );
    115        }
    116
    117        /**
    118         * The element defining the service from which the named Layer may be requested
    119         *
    120         * @return The element defining the service from which the named Layer may be requested
    121         */
    122        public Server getServer() {
    123            return server;
    124        }
    125
    126        /**
    127         * The name of the selected layer (extracted from Capabilities by the Context document creator).
    128         *
    129         * @return The name of the selected layer (extracted from Capabilities by the Context document creator).
    130         */
    131        public String getName() {
    132            return name;
    133        }
    134
    135        /**
    136         * The title of the selected layer (extracted from Capabilities by the Context document creator).
    137         *
    138         * @return The title of the selected layer (extracted from Capabilities by the Context document creator).
    139         */
    140        public String getTitle() {
    141            return title;
    142        }
    143
    144        /**
    145         * The abstract of the selected layer (extracted from Capabilities by the Context document creator).
    146         *
    147         * @return The abstract of the selected layer (extracted from Capabilities by the Context document creator).
    148         */
    149        public String getAbstract() {
    150            return abstract_;
    151        }
    152
    153        /**
    154         * A list of available SRS for the enclosing layer. One of the listed SRS's must be the SRS mentioned in the
    155         * ViewerContext/General/BoundingBox@SRS element.
    156         *
    157         * @return A list of available SRS for the enclosing layer. One of the listed SRS's must be the SRS mentioned in the
    158         *         ViewerContext/General/BoundingBox@SRS element.
    159         */
    160        public String[] getSrs() {
    161            return srs;
    162        }
    163
    164        /**
    165         * This element contains a link to an online resource where data corresponding to the layer can be found.
    166         *
    167         * @return a link to an online resource where data corresponding to the layer can be found.
    168         */
    169        public BaseURL getDataURL() {
    170            return dataURL;
    171        }
    172
    173        /**
    174         * This element contains a link to an online resource where descriptive metadata corresponding to the layer can be
    175         * found.
    176         *
    177         * @return a link to an online resource where descriptive metadata corresponding to the layer can be found.
    178         */
    179        public BaseURL getMetadataURL() {
    180            return metadataURL;
    181        }
    182
    183        /**
    184         * The parent element containing the list of available image format for this layer. Image formats should be
    185         * expressed with MIME types as described in WMS 1.1.1 Specification.<p/> A FormatList shall include at least one
    186         * Format
    187         *
    188         * @return the list of available image format for this layer.
    189         */
    190        public FormatList getFormatList() {
    191            return formatList;
    192        }
    193
    194        /**
    195         * The parent element containing the list of available styles for this layer. A StyleList shall include at least one
    196         * Style
    197         *
    198         * @return the list of available styles for this layer
    199         */
    200        public StyleList getStyleList() {
    201            return styleList;
    202        }
    203
    204        /**
    205         * The Extension element is a container tag in which arbitrary vendor specific information can be included without
    206         * compromising the ability of other clients to enforce schema validation.
    207         *
    208         * @return a container tag in which arbitrary vendor specific information can be included
    209         */
    210        public LayerExtension getExtension() {
    211            return extension;
    212        }
    213
    214        /**
    215         * @return true if the layer can be queried with a GetFeatureInfo request
    216         */
    217        public boolean isQueryable() {
    218            return queryable;
    219        }
    220
    221        /**
    222         * @return true if the layer is not visible in the current view
    223         */
    224        public boolean isHidden() {
    225            return hidden;
    226        }
    227
    228        /**
    229         *
    230         * @param server
    231         *
    232         * @throws ContextException
    233         */
    234        public void setServer( Server server )
    235                                throws ContextException {
    236            if ( server == null ) {
    237                throw new ContextException( "server isn't allowed to be null" );
    238            }
    239
    240            this.server = server;
    241        }
    242
    243        /**
    244         *
    245         * @param name
    246         *
    247         * @throws ContextException
    248         */
    249        public void setName( String name )
    250                                throws ContextException {
    251            if ( name == null ) {
    252                throw new ContextException( "name isn't allowed to be null" );
    253            }
    254
    255            this.name = name;
    256        }
    257
    258        /**
    259         *
    260         * @param title
    261         *
    262         * @throws ContextException
    263         */
    264        public void setTitle( String title )
    265                                throws ContextException {
    266            if ( title == null ) {
    267                throw new ContextException( "title isn't allowed to be null" );
    268            }
    269
    270            this.title = title;
    271        }
    272
    273        /**
    274         *
    275         * @param abstract_
    276         */
    277        public void setAbstract( String abstract_ ) {
    278            this.abstract_ = abstract_;
    279        }
    280
    281        /**
    282         *
    283         * @param srs
    284         */
    285        public void setSrs( String[] srs ) {
    286            this.srs = srs;
    287        }
    288
    289        /**
    290         *
    291         * @param dataURL
    292         */
    293        public void setDataURL( BaseURL dataURL ) {
    294            this.dataURL = dataURL;
    295        }
    296
    297        /**
    298         *
    299         * @param metadataURL
    300         */
    301        public void setMetadataURL( BaseURL metadataURL ) {
    302            this.metadataURL = metadataURL;
    303        }
    304
    305        /**
    306         *
    307         * @param formatList
    308         */
    309        public void setFormatList( FormatList formatList ) {
    310            this.formatList = formatList;
    311        }
    312
    313        /**
    314         *
    315         * @param styleList
    316         */
    317        public void setStyleList( StyleList styleList ) {
    318            this.styleList = styleList;
    319        }
    320
    321        /**
    322         *
    323         *
    324         * @param queryable
    325         */
    326        public void setQueryable( boolean queryable ) {
    327            this.queryable = queryable;
    328        }
    329
    330        /**
    331         *
    332         *
    333         * @param hidden
    334         */
    335        public void setHidden( boolean hidden ) {
    336            this.hidden = hidden;
    337        }
    338
    339        /**
    340         * if extension is null, a default LayerExtension object is created
    341         *
    342         * @param extension
    343         */
    344        public void setExtension( LayerExtension extension ) {
    345            if ( extension == null ) {
    346                extension = new LayerExtension();
    347            }
    348            this.extension = extension;
    349        }
    350
    351    }