001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/ogcwebservices/wcs/describecoverage/RangeSet.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.ogcwebservices.wcs.describecoverage;
037    
038    import java.net.URI;
039    
040    import org.deegree.datatypes.values.ValueEnum;
041    import org.deegree.ogcbase.Description;
042    import org.deegree.ogcbase.OGCException;
043    import org.deegree.ogcwebservices.MetadataLink;
044    
045    /**
046     * @version $Revision: 18195 $
047     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
048     * @author last edited by: $Author: mschneider $
049     *
050     * @version 1.0. $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $
051     *
052     * @since 2.0
053     */
054    
055    public class RangeSet extends Description implements Cloneable {
056    
057        private URI semantic = null;
058    
059        private URI refSys = null;
060    
061        private String refSysLabel = null;
062    
063        private ValueEnum nullValues = null;
064    
065        private AxisDescription[] axisDescription = new AxisDescription[0];
066    
067        /**
068         * @param name
069         * @param label
070         * @throws OGCException
071         */
072        public RangeSet( String name, String label ) throws OGCException {
073            super( name, label );
074        }
075    
076        /**
077         * @param name
078         * @param label
079         * @param nullValues
080         * @param axisDescription
081         * @throws OGCException
082         */
083        public RangeSet( String name, String label, ValueEnum nullValues, AxisDescription[] axisDescription )
084                                throws OGCException {
085            super( name, label );
086            this.nullValues = nullValues;
087            setAxisDescription( axisDescription );
088        }
089    
090        /**
091         * @param name
092         * @param label
093         * @param description
094         * @param metadataLink
095         * @param semantic
096         * @param refSys
097         * @param refSysLabel
098         * @param nullValues
099         * @param axisDescription
100         * @throws OGCException
101         */
102        public RangeSet( String name, String label, String description, MetadataLink metadataLink, URI semantic,
103                         URI refSys, String refSysLabel, ValueEnum nullValues, AxisDescription[] axisDescription )
104                                throws OGCException {
105            super( name, label, description, metadataLink );
106            this.semantic = semantic;
107            this.refSys = refSys;
108            this.refSysLabel = refSysLabel;
109            this.nullValues = nullValues;
110            if ( axisDescription != null ) {
111                this.axisDescription = axisDescription;
112            }
113        }
114    
115        /**
116         * @return Returns the axisDescription.
117         */
118        public AxisDescription[] getAxisDescription() {
119            return axisDescription;
120        }
121    
122        /**
123         * @param axisDescription
124         *            The axisDescription to set.
125         */
126        public void setAxisDescription( AxisDescription[] axisDescription ) {
127            if ( axisDescription != null ) {
128                this.axisDescription = axisDescription;
129            }
130        }
131    
132        /**
133         * @return Returns the nullValues.
134         */
135        public ValueEnum getNullValues() {
136            return nullValues;
137        }
138    
139        /**
140         * @param nullValues
141         *            The nullValues to set.
142         */
143        public void setNullValues( ValueEnum nullValues ) {
144            this.nullValues = nullValues;
145        }
146    
147        /**
148         * @return Returns the refSys.
149         */
150        public URI getRefSys() {
151            return refSys;
152        }
153    
154        /**
155         * @param refSys
156         *            The refSys to set.
157         */
158        public void setRefSys( URI refSys ) {
159            this.refSys = refSys;
160        }
161    
162        /**
163         * @return Returns the refSysLabel.
164         */
165        public String getRefSysLabel() {
166            return refSysLabel;
167        }
168    
169        /**
170         * @param refSysLabel
171         *            The refSysLabel to set.
172         */
173        public void setRefSysLabel( String refSysLabel ) {
174            this.refSysLabel = refSysLabel;
175        }
176    
177        /**
178         * @return Returns the semantic.
179         */
180        public URI getSemantic() {
181            return semantic;
182        }
183    
184        /**
185         * @param semantic
186         *            The semantic to set.
187         */
188        public void setSemantic( URI semantic ) {
189            this.semantic = semantic;
190        }
191    
192        /**
193         * @see java.lang.Object#clone()
194         */
195        public Object clone() {
196            ValueEnum nullValues_ = null;
197            if ( nullValues_ != null ) {
198                nullValues_ = (ValueEnum) nullValues.clone();
199            }
200    
201            AxisDescription[] ad = new AxisDescription[axisDescription.length];
202            for ( int i = 0; i < ad.length; i++ ) {
203                ad[i] = (AxisDescription) axisDescription[i].clone();
204            }
205            Description des = (Description) super.clone();
206            try {
207                return new RangeSet( des.getName(), des.getLabel(), des.getDescription(), des.getMetadataLink(), semantic,
208                                     refSys, refSysLabel, nullValues_, ad );
209            } catch ( Exception e ) {
210            }
211            return null;
212        }
213    
214    }