    001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.4_testing/src/org/deegree/datatypes/values/ValueRange.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.datatypes.values;
    037
    038    import java.io.Serializable;
    039    import java.net.URI;
    040
    041    /**
    042     * @version $Revision: 18195 $
    043     * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a>
    044     * @author last edited by: $Author: mschneider $
    045     *
    046     * @version 1.0. $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $
    047     *
    048     * @since 2.0
    049     */
    050
    051    public class ValueRange implements Cloneable, Serializable {
    052
    053        private static final long serialVersionUID = 1L;
    054
    055        private TypedLiteral min = null;
    056
    057        private TypedLiteral max = null;
    058
    059        private TypedLiteral spacing = null;
    060
    061        private URI type = null;
    062
    063        private URI semantic = null;
    064
    065        private boolean atomic = false;
    066
    067        private Closure closure = new Closure();
    068
    069        /**
    070         * default: atomic = false closure = closed
    071         *
    072         * @param min
    073         * @param max
    074         * @param type
    075         * @param semantic
    076         */
    077        public ValueRange( TypedLiteral min, TypedLiteral max, URI type, URI semantic ) {
    078            this.min = min;
    079            this.max = max;
    080            this.type = type;
    081            this.semantic = semantic;
    082        }
    083
    084        /**
    085         *
    086         * @param min
    087         * @param max
    088         * @param spacing
    089         */
    090        public ValueRange( TypedLiteral min, TypedLiteral max, TypedLiteral spacing ) {
    091            this.min = min;
    092            this.max = max;
    093            this.spacing = spacing;
    094        }
    095
    096        /**
    097         * @param min
    098         * @param max
    099         * @param type
    100         * @param semantic
    101         * @param atomic
    102         * @param closure
    103         */
    104        public ValueRange( TypedLiteral min, TypedLiteral max, URI type, URI semantic, boolean atomic, Closure closure ) {
    105            this.min = min;
    106            this.max = max;
    107            this.type = type;
    108            this.semantic = semantic;
    109            this.atomic = atomic;
    110            this.closure = closure;
    111        }
    112
    113        /**
    114         * @param min
    115         * @param max
    116         * @param spacing
    117         * @param type
    118         * @param semantic
    119         * @param atomic
    120         * @param closure
    121         */
    122        public ValueRange( TypedLiteral min, TypedLiteral max, TypedLiteral spacing, URI type, URI semantic,
    123                           boolean atomic, Closure closure ) {
    124            this.min = min;
    125            this.max = max;
    126            this.type = type;
    127            this.semantic = semantic;
    128            this.atomic = atomic;
    129            this.closure = closure;
    130            this.spacing = spacing;
    131        }
    132
    133        /**
    134         * @return Returns the atomic.
    135         *
    136         */
    137        public boolean isAtomic() {
    138            return atomic;
    139        }
    140
    141        /**
    142         * @param atomic
    143         *            The atomic to set.
    144         *
    145         */
    146        public void setAtomic( boolean atomic ) {
    147            this.atomic = atomic;
    148        }
    149
    150        /**
    151         * @return Returns the closure.
    152         *
    153         */
    154        public Closure getClosure() {
    155            return closure;
    156        }
    157
    158        /**
    159         * @param closure
    160         *            The closure to set.
    161         *
    162         */
    163        public void setClosure( Closure closure ) {
    164            this.closure = closure;
    165        }
    166
    167        /**
    168         * @return Returns the max.
    169         *
    170         */
    171        public TypedLiteral getMax() {
    172            return max;
    173        }
    174
    175        /**
    176         * @param max
    177         *            The max to set.
    178         *
    179         */
    180        public void setMax( TypedLiteral max ) {
    181            this.max = max;
    182        }
    183
    184        /**
    185         * @return Returns the min.
    186         *
    187         */
    188        public TypedLiteral getMin() {
    189            return min;
    190        }
    191
    192        /**
    193         * @param min
    194         *            The min to set.
    195         *
    196         */
    197        public void setMin( TypedLiteral min ) {
    198            this.min = min;
    199        }
    200
    201        /**
    202         * @return Returns the spacing.
    203         */
    204        public TypedLiteral getSpacing() {
    205            return spacing;
    206        }
    207
    208        /**
    209         * @param spacing
    210         *            The spacing to set.
    211         */
    212        public void setSpacing( TypedLiteral spacing ) {
    213            this.spacing = spacing;
    214        }
    215
    216        /**
    217         * @return Returns the semantic.
    218         *
    219         */
    220        public URI getSemantic() {
    221            return semantic;
    222        }
    223
    224        /**
    225         * @param semantic
    226         *            The semantic to set.
    227         *
    228         */
    229        public void setSemantic( URI semantic ) {
    230            this.semantic = semantic;
    231        }
    232
    233        /**
    234         * @return Returns the type.
    235         *
    236         */
    237        public URI getType() {
    238            return type;
    239        }
    240
    241        /**
    242         * @param type
    243         *            The type to set.
    244         *
    245         */
    246        public void setType( URI type ) {
    247            this.type = type;
    248        }
    249
    250        /**
    251         * @see java.lang.Object#clone()
    252         */
    253        @Override
    254        public Object clone() {
    255            TypedLiteral min_ = (TypedLiteral) min.clone();
    256            TypedLiteral max_ = (TypedLiteral) max.clone();
    257            TypedLiteral space_ = (TypedLiteral) spacing.clone();
    258            Closure closure_ = new Closure( closure.value );
    259            return new ValueRange( min_, max_, space_, type, semantic, atomic, closure_ );
    260        }
    261
    262    }