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