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 }