001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/graphics/sld/UserLayer.java $
002    /*----------------    FILE HEADER  ------------------------------------------
003    
004     This file is part of deegree.
005     Copyright (C) 2001-2007 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.graphics.sld;
045    
046    import org.deegree.framework.xml.Marshallable;
047    
048    /**
049     * In addition to using named layers, it is also useful to be able to define custom user-defined
050     * layers for rendering.
051     * <p>
052     * </p>
053     * Since a layer is defined as a collection of potentially mixed-type features, the UserLayer
054     * element must provide the means to identify the features to be used. All features to be rendered
055     * are assumed to be fetched from a Web Feature Server (WFS) or a Web Coverage CapabilitiesService
056     * (WCS, in which case the term features is used loosely).
057     * 
058     * 
059     * @author <a href="mailto:k.lupp@web.de">Katharina Lupp</a>
060     * @author last edited by: $Author: apoth $
061     * @version $Revision: 7941 $ $Date: 2007-08-09 10:58:28 +0200 (Do, 09 Aug 2007) $
062     */
063    
064    public class UserLayer extends AbstractLayer implements Marshallable {
065    
066        private RemoteOWS remoteOWS = null;
067    
068        /**
069         * constructor initializing the class with the &lt;UserLayer&gt;
070         */
071        public UserLayer( String name, LayerFeatureConstraints layerFeatureConstraints, AbstractStyle[] userStyles,
072                   RemoteOWS remoteOWS ) {
073            super( name, layerFeatureConstraints, userStyles );
074            setRemoteOWS( remoteOWS );
075        }
076    
077        /**
078         * the method returns a remote web service that enables the access to data that are not stored
079         * on same server as the WMS.
080         * 
081         * @return the RemoteOWS
082         * 
083         */
084        public RemoteOWS getRemoteOWS() {
085            return remoteOWS;
086        }
087    
088        /**
089         * sets the &lt;RemoteOWS&gt;
090         * 
091         * @param remoteOWS
092         *            the RemoteOWS
093         * 
094         */
095        public void setRemoteOWS( RemoteOWS remoteOWS ) {
096            this.remoteOWS = remoteOWS;
097        }
098    
099        /**
100         * 
101         * 
102         * @return
103         */
104        public String toString() {
105            String ret = getClass().getName() + "\n";
106            ret = "remoteOWS = " + remoteOWS + "\n";
107    
108            return ret;
109        }
110    
111        /**
112         * exports the content of the UserLayer as XML formated String
113         * 
114         * @return xml representation of the UserLayer
115         */
116        public String exportAsXML() {
117    
118            StringBuffer sb = new StringBuffer( 5000 );
119            sb.append( "<UserLayer>" );
120            sb.append( "<Name>" ).append( name ).append( "</Name>" );
121            if ( remoteOWS != null ) {
122                sb.append( ( (Marshallable) remoteOWS ).exportAsXML() );
123            }
124    
125            sb.append( ( (Marshallable) layerFeatureConstraints ).exportAsXML() );
126    
127            for ( int i = 0; i < styles.size(); i++ ) {
128                sb.append( ( (Marshallable) styles.get( i ) ).exportAsXML() );
129            }
130            sb.append( "</UserLayer>" );
131    
132            return sb.toString();
133        }
134    }