001    // $HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/ogcwebservices/LonLatEnvelope.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    
045    package org.deegree.ogcwebservices;
046    
047    import java.io.Serializable;
048    
049    import org.deegree.datatypes.time.TimePosition;
050    import org.deegree.framework.util.StringTools;
051    import org.deegree.model.spatialschema.Envelope;
052    import org.deegree.model.spatialschema.GeometryFactory;
053    import org.deegree.model.spatialschema.Point;
054    
055    /**
056     * @version $Revision: 9345 $
057     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
058     * @author last edited by: $Author: apoth $
059     * 
060     * @version 1.0. $Revision: 9345 $, $Date: 2007-12-27 17:22:25 +0100 (Do, 27 Dez 2007) $
061     * 
062     * @since 2.0
063     */
064    
065    public class LonLatEnvelope implements Cloneable, Serializable {
066    
067        private static final long serialVersionUID = 6225897903182806919L;
068    
069        private Point min = null;
070    
071        private Point max = null;
072    
073        private TimePosition[] timePositions = new TimePosition[0];
074    
075        private String srs = "WGS84(DD)";
076    
077        /**
078         * @param min
079         * @param max
080         */
081        public LonLatEnvelope( Point min, Point max ) {
082            this.min = min;
083            this.max = max;
084        }
085    
086        /**
087         * @param min
088         * @param max
089         * @param srs
090         */
091        public LonLatEnvelope( Point min, Point max, String srs ) {
092            this.min = min;
093            this.max = max;
094            this.srs = srs;
095        }
096    
097        /**
098         * @param min
099         * @param max
100         * @param timePositions
101         * @param srs
102         */
103        public LonLatEnvelope( Point min, Point max, TimePosition[] timePositions, String srs ) {
104            this.min = min;
105            this.max = max;
106            this.timePositions = timePositions;
107            this.srs = srs;
108        }
109    
110        /**
111         * @param minx
112         * @param miny
113         * @param maxx
114         * @param maxy
115         */
116        public LonLatEnvelope( double minx, double miny, double maxx, double maxy ) {
117            this.min = GeometryFactory.createPoint( minx, miny, null );
118            this.max = GeometryFactory.createPoint( maxx, maxy, null );
119        }
120    
121        /**
122         * @param envelope
123         */
124        public LonLatEnvelope( Envelope envelope ) {
125            this.min = GeometryFactory.createPoint( envelope.getMin().getX(), envelope.getMin().getY(), null );
126            this.max = GeometryFactory.createPoint( envelope.getMax().getX(), envelope.getMax().getY(), null );
127        }
128    
129        /**
130         * @return Returns the max.
131         */
132        public Point getMax() {
133            return max;
134        }
135    
136        /**
137         * @param max
138         *            The max to set.
139         */
140        public void setMax( Point max ) {
141            this.max = max;
142        }
143    
144        /**
145         * @return Returns the min.
146         */
147        public Point getMin() {
148            return min;
149        }
150    
151        /**
152         * @param min
153         *            The min to set.
154         */
155        public void setMin( Point min ) {
156            this.min = min;
157        }
158    
159        /**
160         * @return Returns the srs.
161         */
162        public String getSrs() {
163            return srs;
164        }
165    
166        /**
167         * @param srs
168         *            The srs to set.
169         */
170        public void setSrs( String srs ) {
171            this.srs = srs;
172        }
173    
174        /**
175         * @return Returns the timePositions.
176         */
177        public TimePosition[] getTimePositions() {
178            return timePositions;
179        }
180    
181        /**
182         * @param timePositions
183         *            The timePositions to set.
184         */
185        public void setTimePositions( TimePosition[] timePositions ) {
186            if ( timePositions == null ) {
187                timePositions = new TimePosition[0];
188            }
189            this.timePositions = timePositions;
190        }
191    
192        public Object clone() {
193            TimePosition[] timePositions_ = new TimePosition[timePositions.length];
194            for ( int i = 0; i < timePositions_.length; i++ ) {
195                timePositions_[i] = (TimePosition) timePositions[i].clone();
196            }
197    
198            return new LonLatEnvelope( min, max, timePositions_, new String( srs ) );
199        }
200    
201        public String toString() {
202            return StringTools.concat( 200, "min: ", min, " max: ", max );
203        }
204    }