001 //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.4_testing/src/org/deegree/owscommon_1_1_0/DomainType.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
037 package org.deegree.owscommon_1_1_0;
038
039 import java.util.ArrayList;
040 import java.util.List;
041
042 import org.deegree.framework.util.Pair;
043
044 /**
045 * <code>DomainType</code> encapsulation of the domaintype parameters, used in a operationmetadata of ows 1.1.0
046 *
047 * @author <a href="mailto:bezema@lat-lon.de">Rutger Bezema</a>
048 *
049 * @author last edited by: $Author: mschneider $
050 *
051 * @version $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $
052 *
053 */
054
055 public class DomainType {
056
057 private final List<String> values;
058
059 private final List<Range> ranges;
060
061 private final String defaultValue;
062
063 private final Pair<String, String> meaning;
064
065 private final Pair<String, String> dataType;
066
067 private final Pair<String, String> uom;
068
069 private final Pair<String, String> referenceSystem;
070
071 private final List<Metadata> metadataAttribs;
072
073 private final String name;
074
075 private final boolean anyValue;
076
077 private final boolean noValues;
078
079 private final Pair<String, String> valuesReference;
080
081 /**
082 * @param values
083 * <code>null</code> if allowedvalues was not set
084 * @param ranges
085 * <code>null</code> if allowedvalues was not set
086 * @param valuesReference
087 * <code>null</code> if not set
088 * @param noValues
089 * true if the noValues element was set.
090 * @param anyValue
091 * true if the anyvalues element was set.
092 * @param defaultValue
093 * @param meaning
094 * a pair containing <text(), reference-attribute> values
095 * @param dataType
096 * a pair containing <text(), reference-attribute> values
097 * @param uom
098 * a pair containing <text(), reference-attribute> values
099 * @param referenceSystem
100 * a pair containing <text(), reference-attribute> values
101 * @param metadataAttribs
102 * list containing metadatas
103 * @param name
104 * attribute.
105 */
106 public DomainType( List<String> values, List<Range> ranges, boolean anyValue, boolean noValues,
107 Pair<String, String> valuesReference, String defaultValue, Pair<String, String> meaning,
108 Pair<String, String> dataType, Pair<String, String> uom, Pair<String, String> referenceSystem,
109 List<Metadata> metadataAttribs, String name ) {
110 this.values = values;
111 this.ranges = ranges;
112 this.anyValue = anyValue;
113 this.noValues = noValues;
114 this.valuesReference = valuesReference;
115
116 this.defaultValue = defaultValue;
117 this.meaning = meaning;
118 this.dataType = dataType;
119 this.uom = uom;
120 this.referenceSystem = referenceSystem;
121 if ( metadataAttribs == null ) {
122 this.metadataAttribs = new ArrayList<Metadata>();
123 } else {
124 this.metadataAttribs = metadataAttribs;
125 }
126 this.name = name;
127 }
128
129 /**
130 * @return true if the allowedValues was defined.
131 */
132 public boolean hasAllowedValues() {
133 return ( values != null || ranges != null );
134 }
135
136 /**
137 * @return the values <code>null</code> if none present
138 */
139 public final List<String> getValues() {
140 return values;
141 }
142
143 /**
144 * @return the ranges <code>null</code> if none present
145 */
146 public final List<Range> getRanges() {
147 return ranges;
148 }
149
150 /**
151 * @return the defaultValues <code>null</code> if none present
152 */
153 public final String getDefaultValue() {
154 return defaultValue;
155 }
156
157 /**
158 * @return the meaning <text(), reference-attribute> or <code>null</code> if none present
159 */
160 public final Pair<String, String> getMeaning() {
161 return meaning;
162 }
163
164 /**
165 * @return the dataType <text(), reference-attribute> or <code>null</code> if none present
166 */
167 public final Pair<String, String> getDataType() {
168 return dataType;
169 }
170
171 /**
172 * @return true if the DomaintType valuesUnit was set (uom || referencesystem != null ).
173 */
174 public final boolean hasValuesUnit() {
175 return ( uom != null || referenceSystem != null );
176 }
177
178 /**
179 * @return the uom, <text(), reference-attribute> or <code>null</code> if none present
180 */
181 public final Pair<String, String> getUom() {
182 return uom;
183 }
184
185 /**
186 * @return the referenceSystem <text(), reference-attribute> or <code>null</code> if none present
187 */
188 public final Pair<String, String> getReferenceSystem() {
189 return referenceSystem;
190 }
191
192 /**
193 * @return the metadataAttribs may be empty but will never be <code>null</code>.
194 */
195 public final List<Metadata> getMetadataAttribs() {
196 return metadataAttribs;
197 }
198
199 /**
200 * @return the name, mandatory not <code>null</code>
201 */
202 public final String getName() {
203 return name;
204 }
205
206 /**
207 * @return true if the anyValue element was set.
208 */
209 public final boolean hasAnyValue() {
210 return anyValue;
211 }
212
213 /**
214 * @return true if the noValues element was set.
215 */
216 public final boolean hasNoValues() {
217 return noValues;
218 }
219
220 /**
221 * @return the valuesReference <text(), reference-attribute> or <code>null</code> if none present
222 */
223 public final Pair<String, String> getValuesReference() {
224 return valuesReference;
225 }
226
227 }