001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/portal/context/SLD.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.net.URL;
047
048 import org.deegree.graphics.sld.FeatureTypeStyle;
049 import org.deegree.graphics.sld.StyledLayerDescriptor;
050
051
052 /**
053 * This class encapsulates the descriptions of a SLD element as defined by the
054 * OGC Web Map Context specification.
055 * <p>
056 * The <SLD> element must contain required <Name> and optional <Title> elements
057 * which identify the particular element of a Styled Layer Descriptor to be used
058 * for this style. The <SLD> element must then contain one of three alternative
059 * sources of description of a layer style:</p>
060 * <p>
061 * 1. an <OnlineResource> element describing a link to the specified SLD document.<p/>
062 * <OnlineResource xmlns:xlink="http://www.w3.org/TR/xlink" xlink:type="simple"
063 * xlink:href=�http://example.org/this/is/an/example/link/to/the/sld"></p>
064 * <p>
065 * This reference may be to a separately referenced SLD document or to an inline
066 * <StyledLayerDescriptor> in the same context document (which may define the
067 * styles for multiple layers within the Web Map Context)</p>
068 * <p>
069 * 2. <StyledLayerDescriptor> element containing inline the namedStyle or
070 * userStyle named in the enclosing <Style> element</p>
071 * <p>
072 * 3. <FeatureTypeStyle> element containing inline the specific feature styling
073 * instructions for the enclosing <Style> element
074 *
075 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
076 * @version $Revision: 9346 $
077 */
078 public class SLD {
079 private FeatureTypeStyle featureTypeStyle = null;
080 private String name = null;
081 private String title = null;
082 private StyledLayerDescriptor styledLayerDescriptor = null;
083 private URL onlineResource = null;
084
085 /**
086 * Creates a new SLD object.
087 *
088 * @param name name of the SLD
089 * @param title title of the SLD
090 */
091 private SLD( String name, String title ) {
092 setName( name );
093 setTitle( title );
094 }
095
096 /**
097 * Creates a new SLD object.
098 *
099 * @param name name of the SLD
100 * @param title title of the SLD
101 * @param styledLayerDescriptor complete StyledLayerDescriptor
102 *
103 * @throws ContextException
104 */
105 public SLD( String name, String title, StyledLayerDescriptor styledLayerDescriptor )
106 throws ContextException {
107 this( name, title );
108 setStyledLayerDescriptor( styledLayerDescriptor );
109 }
110
111 /**
112 * Creates a new SLD object.
113 *
114 * @param name name of the SLD
115 * @param title title of the SLD
116 * @param onlineResource online resource where to access the StyledLayerDescriptor
117 *
118 * @throws ContextException
119 */
120 public SLD( String name, String title, URL onlineResource ) throws ContextException {
121 this( name, title );
122 setOnlineResource( onlineResource );
123 }
124
125 /**
126 * Creates a new SLD object.
127 *
128 * @param name name of the SLD
129 * @param title title of the SLD
130 * @param featureTypeStyle one concrete FeatureTypeStyle as part of a
131 * StyledLayerDescriptor
132 *
133 * @throws ContextException
134 */
135 public SLD( String name, String title, FeatureTypeStyle featureTypeStyle )
136 throws ContextException {
137 this( name, title );
138 setFeatureTypeStyle( featureTypeStyle );
139 }
140
141 /**
142 * name of the SLD
143 *
144 * @return
145 */
146 public String getName() {
147 return name;
148 }
149
150 /**
151 * title of the SLD
152 *
153 * @return
154 */
155 public String getTitle() {
156 return title;
157 }
158
159 /**
160 * describing a link to the specified SLD document.
161 *
162 * @return
163 */
164 public URL getOnlineResource() {
165 return onlineResource;
166 }
167
168 /**
169 * containing inline the specific feature styling instructions for the
170 * enclosing <code><Style></code> element
171 *
172 * @return
173 */
174 public FeatureTypeStyle getFeatureTypeStyle() {
175 return featureTypeStyle;
176 }
177
178 /**
179 * inline the namedStyle or userStyle named in the enclosing <Style> element
180 *
181 * @return
182 */
183 public StyledLayerDescriptor getStyledLayerDescriptor() {
184 return styledLayerDescriptor;
185 }
186
187 /**
188 * @see org.deegree.clients.context.SLD#getName()
189 *
190 * @param name
191 */
192 public void setName( String name ) {
193 this.name = name;
194 }
195
196 /**
197 * @see org.deegree.clients.context.Server#getTitle()
198 *
199 * @param title
200 */
201 public void setTitle( String title ) {
202 this.title = title;
203 }
204
205 /**
206 * @see org.deegree.clients.context.Server#getOnlineResource()
207 *
208 * @param onlineResource
209 *
210 * @throws ContextException
211 */
212 public void setOnlineResource( URL onlineResource ) throws ContextException {
213 if ( onlineResource == null ) {
214 throw new ContextException( "onlineResource isn't allowed to be null" );
215 }
216
217 this.onlineResource = onlineResource;
218 }
219
220 /**
221 * @see org.deegree.clients.context.SLD#getFeatureTypeStyle()
222 *
223 * @param featureTypeStyle
224 *
225 * @throws ContextException
226 */
227 public void setFeatureTypeStyle( FeatureTypeStyle featureTypeStyle ) throws ContextException {
228 if ( featureTypeStyle == null ) {
229 throw new ContextException( "featureTypeStyle isn't allowed to be null" );
230 }
231
232 this.featureTypeStyle = featureTypeStyle;
233 }
234
235 /**
236 * @see org.deegree.clients.context.SLD#getStyledLayerDescriptor()
237 *
238 * @param styledLayerDescriptor
239 *
240 * @throws ContextException
241 */
242 public void setStyledLayerDescriptor( StyledLayerDescriptor styledLayerDescriptor )
243 throws ContextException {
244 if ( styledLayerDescriptor == null ) {
245 throw new ContextException( "onlineResource isn't allowed to be null" );
246 }
247
248 this.styledLayerDescriptor = styledLayerDescriptor;
249 }
250
251
252 }