001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/portal/context/LayerExtension.java $
002    /*----------------    FILE HEADER  ------------------------------------------
003    
004     This file is part of deegree.
005     Copyright (C) 2001-2008 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.portal.context;
045    
046    import java.util.HashMap;
047    import java.util.Iterator;
048    import java.util.Map;
049    
050    /**
051     * provides additional information about a layer described in a web map context document. Additional
052     * description is not requiered so an instance of <tt>org.deegree_impl.clients.context.Layer</tt>
053     * may doesn't provide an instance of this class.
054     * 
055     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
056     * @author last edited by: $Author: apoth $
057     * 
058     * @version $Revision: 9346 $, $Date: 2007-12-27 17:39:07 +0100 (Do, 27 Dez 2007) $
059     */
060    public class LayerExtension {
061    
062        public static final int NONE = -1;
063    
064        public static final int SESSIONID = 0;
065    
066        public static final int USERPASSWORD = 1;
067    
068        private DataService dataService = null;
069    
070        private boolean masterLayer = false;
071    
072        private double minScaleHint = 0;
073    
074        private double maxScaleHint = 9E99;
075    
076        private boolean selectedForQuery = false;
077    
078        private int authentication = NONE;
079    
080        private int parentNodeId = NONE;
081    
082        private boolean showLegendGraphic = false;
083        
084        private Map<String, String> vendorspecificParams = new HashMap<String, String>();
085    
086        /**
087         * default constructor
088         * 
089         */
090        public LayerExtension() {
091        }
092    
093        /**
094         * Creates a new LayerExtension object.
095         * 
096         * @param dataService
097         *            description of the service/server behind a WMS layer
098         * @param masterLayer
099         *            true if a layer is one of the main layers of an application; false if it just
100         *            provides background or additional informations.
101         * @param minScaleHint
102         * @param maxScaleHint
103         * @param selectedForQuery
104         * @param authentication
105         */
106        public LayerExtension( DataService dataService, boolean masterLayer, double minScaleHint,
107                               double maxScaleHint, boolean selectedForQuery, int authentication,
108                               int parentNodeId, boolean showLegendGraphic ) {
109            setDataService( dataService );
110            setMasterLayer( masterLayer );
111            setMinScaleHint( minScaleHint );
112            setMaxScaleHint( maxScaleHint );
113            setSelectedForQuery( selectedForQuery );
114            setAuthentication( authentication );
115            setParentNodeId( parentNodeId );
116            setShowLegendGraphic( showLegendGraphic );
117    
118        }
119    
120        /**
121         * returns a description of the service/server behind a WMS layer. The returned value will be
122         * <tt>null</tt> if the WMS uses an internal mechanism to access a layers data.
123         * 
124         * @return instance of <tt>DataService</tt>
125         */
126        public DataService getDataService() {
127            return this.dataService;
128            // return null;
129        }
130    
131        /**
132         * sets a description of the service/server behind a WMS layer. The returned value will be
133         * <tt>null</tt> if the WMS uses an internal mechanism to access a layers data.
134         * 
135         * @param dataService
136         */
137        public void setDataService( DataService dataService ) {
138            this.dataService = dataService;
139        }
140    
141        /**
142         * returns true if a layer is one of the main layers of an application; returns false if it just
143         * provides background or additional informations.
144         * 
145         * @return
146         */
147        public boolean isMasterLayer() {
148            return masterLayer;
149        }
150    
151        /**
152         * set to true if a layer is one of the main layers of an application; set to false if it just
153         * provides background or additional informations.
154         * 
155         * @param masterLayer
156         */
157        public void setMasterLayer( boolean masterLayer ) {
158            this.masterLayer = masterLayer;
159        }
160    
161        /**
162         * returns the maximum sclae the layer is valid
163         * 
164         * @return maximum scale hint
165         */
166        public double getMaxScaleHint() {
167            return maxScaleHint;
168        }
169    
170        /**
171         * sets the maximum scale the layer is valid for
172         * 
173         * @param maxScaleHint
174         */
175        public void setMaxScaleHint( double maxScaleHint ) {
176            this.maxScaleHint = maxScaleHint;
177        }
178    
179        /**
180         * returns the minimum sclae the layer is valid
181         * 
182         * @return minimum scale hint
183         */
184        public double getMinScaleHint() {
185            return minScaleHint;
186        }
187    
188        /**
189         * sets the minimum scale the layer is valid for
190         * 
191         * @param minScaleHint
192         */
193        public void setMinScaleHint( double minScaleHint ) {
194            this.minScaleHint = minScaleHint;
195        }
196    
197        /**
198         * returns true if a layer is currently selected for being active for feature info requests
199         * 
200         * @return <code>true</code> if a layer is currently selected for being active for feature
201         *         info requests
202         */
203        public boolean isSelectedForQuery() {
204            return selectedForQuery;
205        }
206    
207        /**
208         * sets a layer to active for feature info requests
209         * 
210         * @param selectedForFI
211         */
212        public void setSelectedForQuery( boolean selectedForFI ) {
213            this.selectedForQuery = selectedForFI;
214        }
215    
216        /**
217         * returns a code for authentication to be used for service requests
218         * 
219         * @return a code for authentication to be used for service requests
220         */
221        public int getAuthentication() {
222            return authentication;
223        }
224    
225        /**
226         * @see #getAuthentication()
227         * @param authentication
228         */
229        public void setAuthentication( int authentication ) {
230            this.authentication = authentication;
231        }
232    
233        /**
234         * returns true if the legendGraphic of the layer should be drawn in the layerlistview
235         * 
236         * @return <code>true</code> if the legendGraphic of the layer should be drawn in the
237         *         layerlistview
238         */
239        public boolean getShowLegendGraphic() {
240            return showLegendGraphic;
241        }
242    
243        /**
244         * returns true the id of the node to which the layer belongs in the layertree
245         * 
246         * @return <code>true</code> the id of the node to which the layer belongs in the layertree
247         */
248        public int getParentNodeId() {
249            return parentNodeId;
250        }
251    
252        /**
253         * 
254         * @param showLegendGraphic
255         */
256        public void setShowLegendGraphic( boolean showLegendGraphic ) {
257            this.showLegendGraphic = showLegendGraphic;
258        }
259    
260        /**
261         * 
262         * @param parentNodeId
263         */
264        public void setParentNodeId( int parentNodeId ) {
265            this.parentNodeId = parentNodeId;
266        }
267        
268        /**
269         * 
270         * @param name
271         * @param value
272         */
273        public void addVendorspecificParameter(String name, String value){
274            vendorspecificParams.put( name, value );
275        }
276        
277        /**
278         * 
279         * @param name
280         * @return
281         */
282        public String getVendorspecificParameter(String name){
283            return vendorspecificParams.get( name );
284        }
285        
286        /**
287         * 
288         * @return
289         */
290        public Iterator<String> getVendorspecificParameterNames(){
291            return vendorspecificParams.keySet().iterator();
292        }
293        
294        
295    
296    }