001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/portal/context/General.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.awt.Rectangle;
047
048 import org.deegree.model.crs.CoordinateSystem;
049 import org.deegree.model.metadata.iso19115.CitedResponsibleParty;
050 import org.deegree.model.spatialschema.Envelope;
051 import org.deegree.model.spatialschema.GeometryFactory;
052 import org.deegree.model.spatialschema.Point;
053 import org.deegree.ogcbase.BaseURL;
054 import org.deegree.ogcbase.ImageURL;
055
056 /**
057 * The class encapsulates the general informations common to all types of contexts
058 *
059 * @version $Revision: 9346 $
060 * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
061 */
062 public class General {
063 private CitedResponsibleParty contactInformation = null;
064
065 private Point[] boundingBox = null;
066
067 private GeneralExtension extension = null;
068
069 private String abstract_ = null;
070
071 private String title = null;
072
073 private BaseURL descriptionURL = null;
074
075 private ImageURL logoURL = null;
076
077 private String[] keywords = null;
078
079 private Rectangle window = null;
080
081 /**
082 * Creates a new General object.
083 *
084 * @param title
085 * title of the context
086 * @param abstract_
087 * short description
088 * @param contactInformation
089 * informations about creator of the context
090 * @param boundingBox
091 * bounding box of the map/data
092 * @param descriptionURL
093 * reference to a webpage which contains relevant information to the view.
094 * @param logoURL
095 * A reference to an image that might be attached to the context document.
096 * @param keywords
097 * @param extension
098 * The Extension element is a container tag in which arbitrary vendor specific
099 * information can be included without compromising the ability of other clients to
100 * enforce schema validation.
101 *
102 * @throws ContextException
103 */
104 public General( String title, String abstract_, Rectangle window, CitedResponsibleParty contactInformation,
105 Point[] boundingBox, BaseURL descriptionURL, ImageURL logoURL, String[] keywords,
106 GeneralExtension extension ) throws ContextException {
107 setTitle( title );
108 setAbstract( abstract_ );
109 setWindow( window );
110 setContactInformation( contactInformation );
111 setBoundingBox( boundingBox );
112 setDescriptionURL( descriptionURL );
113 setLogoURL( logoURL );
114 setKeywords( keywords );
115 setExtension( extension );
116 }
117
118 /**
119 * An element �Window� presenting the size in pixels of the map the Context document describes.
120 * Negotiation between Context defined aspect ratio and typical client aspect ratio (according
121 * to the client�s vendor) is left to the client.
122 *
123 * @param window
124 */
125 public void setWindow( Rectangle window ) {
126 this.window = window;
127 }
128
129 /**
130 * �BoundingBox� formatted as defined in the WMS 1.1.1 Specification. It represents the
131 * geographic extent that should be presented by the client1.
132 *
133 * @param boundingBox
134 */
135 public void setBoundingBox( Point[] boundingBox )
136 throws ContextException {
137 if ( boundingBox == null ) {
138 throw new ContextException( "A context's bounding box isn't allowed to be null" );
139 }
140
141 this.boundingBox = boundingBox;
142 }
143
144 /**
145 * �BoundingBox� formatted as defined in the WMS 1.1.1 Specification. It represents the
146 * geographic extent that should be presented by the client1.
147 *
148 * @param boundingBox
149 */
150 public void setBoundingBox( Envelope boundingBox )
151 throws ContextException {
152 if ( boundingBox == null ) {
153 throw new ContextException( "A context's bounding box isn't allowed to be null" );
154 }
155
156 CoordinateSystem cs = this.boundingBox[0].getCoordinateSystem();
157 Point p0 = GeometryFactory.createPoint( boundingBox.getMin().getX(), boundingBox.getMin().getY(), cs );
158 Point p1 = GeometryFactory.createPoint( boundingBox.getMax().getX(), boundingBox.getMax().getY(), cs );
159 this.boundingBox = new Point[] { p0, p1 };
160 }
161
162 /**
163 * An element �KeywordList� that contains one or more Keyword elements which allow search across
164 * context collections.
165 *
166 * @param keywords
167 */
168 public void setKeywords( String[] keywords ) {
169 this.keywords = keywords;
170 }
171
172 /**
173 * An element �Title� that contains a human readable title of the Context.
174 *
175 * @param title
176 */
177 public void setTitle( String title )
178 throws ContextException {
179 if ( title == null ) {
180 throw new ContextException( "A context's title isn't allowed to be null" );
181 }
182
183 this.title = title;
184 }
185
186 /**
187 * An element �Abstract� that contains a description for the Context document describing its
188 * content.
189 *
190 * @param abstract_
191 */
192 public void setAbstract( String abstract_ ) {
193 this.abstract_ = abstract_;
194 }
195
196 /**
197 * A reference to an image that might be attached to the Context document. It can be, for
198 * instance, the logo of the project for which the context has been setup, or an overview of the
199 * map the context describes. This element contains a link to the image as well as the dimension
200 * of the image (in pixels) and its format.
201 *
202 * @param logoURL
203 */
204 public void setLogoURL( ImageURL logoURL ) {
205 this.logoURL = logoURL;
206 }
207
208 /**
209 * A URL reference to a webpage which contains relevant information to the view.
210 *
211 * @param descriptionURL
212 */
213 public void setDescriptionURL( BaseURL descriptionURL ) {
214 this.descriptionURL = descriptionURL;
215 }
216
217 /**
218 * An element �ContactInformation� that presents contact information of the creator of the
219 * Context document. Contact is described as defined in WMS 1.1.1 Specification.
220 *
221 * @param contactInformation
222 */
223 public void setContactInformation( CitedResponsibleParty contactInformation ) {
224 this.contactInformation = contactInformation;
225 }
226
227 /**
228 * The Extension element is a container tag in which arbitrary vendor specific information can
229 * be included without compromising the ability of other clients to enforce schema validation.<p/>
230 * This tag should not be used to introduce new candidate elements that are intended to promote
231 * interoperability. Content in an <Extension> element should not be expected to be preserved in
232 * transfers of ViewContext documents between different systems.
233 *
234 * @param extension
235 */
236 public void setExtension( GeneralExtension extension ) {
237 this.extension = extension;
238 }
239
240 /**
241 *
242 *
243 * @return
244 */
245 public Rectangle getWindow() {
246 return window;
247 }
248
249 /**
250 *
251 * @return
252 */
253 public Point[] getBoundingBox() {
254 return boundingBox;
255 }
256
257 /**
258 *
259 * @return
260 */
261 public String[] getKeywords() {
262 return keywords;
263 }
264
265 /**
266 *
267 * @return
268 */
269 public String getTitle() {
270 return title;
271 }
272
273 /**
274 *
275 * @return
276 */
277 public String getAbstract() {
278 return abstract_;
279 }
280
281 /**
282 *
283 * @return
284 */
285 public ImageURL getLogoURL() {
286 return logoURL;
287 }
288
289 /**
290 *
291 * @return
292 */
293 public BaseURL getDescriptionURL() {
294 return descriptionURL;
295 }
296
297 /**
298 *
299 * @return
300 */
301 public CitedResponsibleParty getContactInformation() {
302 return contactInformation;
303 }
304
305 /**
306 *
307 * @return
308 */
309 public GeneralExtension getExtension() {
310 return extension;
311 }
312
313 }