001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/ogcwebservices/wms/capabilities/Dimension.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.wms.capabilities;
037    
038    import static org.deegree.framework.xml.XMLTools.getNodeAsBoolean;
039    import static org.deegree.ogcbase.CommonNamespaces.getNamespaceContext;
040    
041    import org.deegree.framework.xml.NamespaceContext;
042    import org.deegree.framework.xml.XMLParsingException;
043    import org.w3c.dom.Element;
044    
045    /**
046     * The Dimension element declares the _existence_ of a dimension. The optional element <Dimension> is used in
047     * Capabilities XML to declare that one or more dimensional parameters are relevant to the information holdings of that
048     * server. The Dimension element does not provide valid values for a Dimension; that is the role of the Extent element
049     * described below. A Dimension element includes a required name, a required measurement units specifier, and an
050     * optional unitSymbol.
051     * <p>
052     * ----------------------------------------------------------------------
053     * </p>
054     *
055     * @author <a href="mailto:k.lupp@web.de">Katharina Lupp</a>
056     * @author <a href="mailto:mschneider@lat-lon.de">Markus Schneider</a>
057     * @version $Revision: 18195 $
058     */
059    public class Dimension {
060    
061        private static final NamespaceContext nsContext = getNamespaceContext();
062    
063        private String name = null;
064    
065        private String unitSymbol = null;
066    
067        private String units = null;
068    
069        private String defaultValue;
070    
071        private boolean multipleValues;
072    
073        private boolean nearestValue;
074    
075        private boolean current;
076    
077        private String values;
078    
079        /**
080         * constructor initializing the class with the <Dimension>
081         *
082         * @param name
083         * @param units
084         * @param unitSymbol
085         */
086        public Dimension( String name, String units, String unitSymbol ) {
087            setName( name );
088            setUnits( units );
089            setUnitSymbol( unitSymbol );
090        }
091    
092        /**
093         * @param elem
094         * @throws XMLParsingException
095         */
096        public Dimension( Element elem ) throws XMLParsingException {
097            name = elem.getAttribute( "name" );
098            units = elem.getAttribute( "units" );
099            unitSymbol = elem.hasAttribute( "unitSymbol" ) ? elem.getAttribute( "unitSymbol" ) : null;
100            defaultValue = elem.hasAttribute( "default" ) ? elem.getAttribute( "default" ) : null;
101            multipleValues = getNodeAsBoolean( elem, "@multipleValues", nsContext, false );
102            nearestValue = getNodeAsBoolean( elem, "@nearestValue", nsContext, false );
103            current = getNodeAsBoolean( elem, "@current", nsContext, false );
104            values = elem.getTextContent();
105        }
106    
107        /**
108         * @return the name of the dimension
109         */
110        public String getName() {
111            return name;
112        }
113    
114        /**
115         * sets the name of the dimension
116         *
117         * @param name
118         */
119        public void setName( String name ) {
120            this.name = name;
121        }
122    
123        /**
124         * @return the units the dimension is measured
125         */
126        public String getUnits() {
127            return units;
128        }
129    
130        /**
131         * sets the units the dimension is measured
132         *
133         * @param units
134         */
135        public void setUnits( String units ) {
136            this.units = units;
137        }
138    
139        /**
140         * @return the unit symbols
141         */
142        public String getUnitSymbol() {
143            return unitSymbol;
144        }
145    
146        /**
147         * sets the unit symbols
148         *
149         * @param unitSymbol
150         */
151        public void setUnitSymbol( String unitSymbol ) {
152            this.unitSymbol = unitSymbol;
153        }
154    
155        @Override
156        public String toString() {
157            String ret = null;
158            ret = "name = " + name + "\n";
159            ret += ( "units = " + units + "\n" );
160            ret += ( "unitSymbol = " + unitSymbol + "\n" );
161            return ret;
162        }
163    
164        /**
165         * @return the defaultValue
166         */
167        public String getDefaultValue() {
168            return defaultValue;
169        }
170    
171        /**
172         * @param defaultValue
173         *            the defaultValue to set
174         */
175        public void setDefaultValue( String defaultValue ) {
176            this.defaultValue = defaultValue;
177        }
178    
179        /**
180         * @return the multipleValues
181         */
182        public boolean isMultipleValues() {
183            return multipleValues;
184        }
185    
186        /**
187         * @param multipleValues
188         *            the multipleValues to set
189         */
190        public void setMultipleValues( boolean multipleValues ) {
191            this.multipleValues = multipleValues;
192        }
193    
194        /**
195         * @return the nearestValue
196         */
197        public boolean isNearestValue() {
198            return nearestValue;
199        }
200    
201        /**
202         * @param nearestValue
203         *            the nearestValue to set
204         */
205        public void setNearestValue( boolean nearestValue ) {
206            this.nearestValue = nearestValue;
207        }
208    
209        /**
210         * @return the current
211         */
212        public boolean isCurrent() {
213            return current;
214        }
215    
216        /**
217         * @param current
218         *            the current to set
219         */
220        public void setCurrent( boolean current ) {
221            this.current = current;
222        }
223    
224        /**
225         * @return the values
226         */
227        public String getValues() {
228            return values;
229        }
230    
231        /**
232         * @param values
233         *            the values to set
234         */
235        public void setValues( String values ) {
236            this.values = values;
237        }
238    
239    }