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