001 //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.3_testing/src/org/deegree/owscommon/com110/OWSDomainType110.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.com110; 038 039 import org.deegree.datatypes.values.TypedLiteral; 040 import org.deegree.owscommon.OWSMetadata; 041 042 /** 043 * FIXME should be renamed. 044 * 045 * @author <a href="mailto:mays@lat-lon.de">Judit Mays</a> 046 * @author last edited by: $Author: mschneider $ 047 * 048 * @version 2.0, $Revision: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $ 049 * 050 * @since 2.0 051 */ 052 public class OWSDomainType110 { 053 054 /* 055 * FIXME When this class OWSDomainType110 gets integrated properly, the class OWSMetadata should 056 * be provided with an identifier (private String name), to enable identification of the kind of 057 * OWSMetadata. With this handle, the implemented String 'measurementType' becomes obsolete, 058 * because its content could be moved into the String 'name' within the OWSMetadata object. 059 */ 060 061 public static final String REFERENCE_SYSTEM = "REFERENCE_SYSTEM"; 062 063 public static final String UOM = "UOM"; 064 065 // the choice of one of these four elements is mandatory: 066 private OWSAllowedValues allowedValues; 067 068 private boolean anyValue; 069 070 private boolean noValues; 071 072 private OWSMetadata valuesListReference; 073 074 // these elements are optional: 075 private TypedLiteral defaultValue; 076 077 private OWSMetadata meaning; 078 079 private OWSMetadata owsDataType; 080 081 private String measurementType; // choice between REFERENCE_SYSTEM and UOM 082 083 private OWSMetadata measurement; 084 085 private OWSMetadata[] metadata; 086 087 // mandatory attribute: 088 public String name; 089 090 /** 091 * Creates a new <code>DomainType110</code> object. This is the basic constructor, which is 092 * called from any other public constructor. 093 * 094 * @param allowedValues 095 * @param anyValue 096 * @param noValues 097 * @param valuesListReference 098 * @param defaultValue 099 * @param meaning 100 * @param dataType 101 * @param measurementType 102 * @param measurement 103 * @param metadata 104 * @param name 105 */ 106 private OWSDomainType110( OWSAllowedValues allowedValues, boolean anyValue, boolean noValues, 107 OWSMetadata valuesListReference, String defaultValue, OWSMetadata meaning, 108 OWSMetadata dataType, String measurementType, OWSMetadata measurement, 109 OWSMetadata[] metadata, String name ) { 110 111 if ( anyValue == true && noValues == true ) { 112 throw new IllegalArgumentException( "anyValue and noValues cannot both be true." ); 113 } 114 115 if ( measurement != null ) { 116 117 if ( measurementType == null ) { 118 throw new NullPointerException( "measurementType cannot be null." ); 119 } 120 if ( REFERENCE_SYSTEM.equals( measurementType ) || UOM.equals( measurementType ) ) { 121 this.measurementType = measurementType; 122 } else { 123 throw new IllegalArgumentException( "measurementType must be either " + getClass().getName() 124 + ".REFERENCE_SYSTEM or " + getClass().getName() + ".UOM" ); 125 } 126 this.measurement = measurement; 127 } 128 129 this.allowedValues = allowedValues; 130 this.anyValue = anyValue; 131 this.noValues = noValues; 132 this.valuesListReference = valuesListReference; 133 setDefaultValue( defaultValue ); 134 this.meaning = meaning; 135 this.owsDataType = dataType; 136 if ( metadata == null ) { 137 this.metadata = new OWSMetadata[0]; 138 } else { 139 this.metadata = metadata; 140 } 141 this.name = name; 142 143 } 144 145 /** 146 * Creates a new <code>DomainType110</code> object. 147 * 148 * Use this constructor to create the <code>DomainType110</code> object with an 149 * <code>OWSAllowedValues</code> object. 150 * 151 * @param allowedValues 152 * @param defaultValue 153 * @param meaning 154 * @param dataType 155 * @param measurementType 156 * Must be either "REFERENCE_SYSTEM" or "UOM". 157 * @param measurement 158 * @param metadata 159 * @param name 160 * mandatory attribute 161 */ 162 public OWSDomainType110( OWSAllowedValues allowedValues, String defaultValue, OWSMetadata meaning, 163 OWSMetadata dataType, String measurementType, OWSMetadata measurement, 164 OWSMetadata[] metadata, String name ) { 165 166 this( allowedValues, false, false, null, defaultValue, meaning, dataType, measurementType, measurement, 167 metadata, name ); 168 } 169 170 /** 171 * Creates a new <code>DomainType110</code> object. 172 * 173 * Use this constructor to create the <code>DomainType110</code> object when 174 * <code>anyValue</code> OR <code>noValues</code> is true. 175 * 176 * @param anyValue 177 * Cannot be true if noValues is true. 178 * @param noValues 179 * Cannot be true if anyValue is true. 180 * @param defaultValue 181 * @param meaning 182 * @param dataType 183 * @param measurementType 184 * Must be either "REFERENCE_SYSTEM" or "UOM". 185 * @param measurement 186 * @param metadata 187 * @param name 188 * mandatory attribute 189 */ 190 public OWSDomainType110( boolean anyValue, boolean noValues, String defaultValue, OWSMetadata meaning, 191 OWSMetadata dataType, String measurementType, OWSMetadata measurement, 192 OWSMetadata[] metadata, String name ) { 193 194 this( null, anyValue, noValues, null, defaultValue, meaning, dataType, measurementType, measurement, metadata, 195 name ); 196 } 197 198 /** 199 * Creates a new <code>DomainType110</code> object. 200 * 201 * Use this constructor to create the <code>DomainType110</code> object with an 202 * <code>OWSMetadata</code> object of valuesListReference. 203 * 204 * @param valuesListReference 205 * @param defaultValue 206 * @param meaning 207 * @param dataType 208 * @param measurementType 209 * Must be either "REFERENCE_SYSTEM" or "UOM". 210 * @param measurement 211 * @param metadata 212 * @param name 213 * mandatory attribute 214 */ 215 public OWSDomainType110( OWSMetadata valuesListReference, String defaultValue, OWSMetadata meaning, 216 OWSMetadata dataType, String measurementType, OWSMetadata measurement, 217 OWSMetadata[] metadata, String name ) { 218 219 this( null, false, false, valuesListReference, defaultValue, meaning, dataType, measurementType, measurement, 220 metadata, name ); 221 } 222 223 /** 224 * @return Returns the allowedValues. 225 */ 226 public OWSAllowedValues getAllowedValues() { 227 return allowedValues; 228 } 229 230 /** 231 * @return Returns the anyValue. 232 */ 233 public boolean isAnyValue() { 234 return anyValue; 235 } 236 237 /** 238 * @return Returns the noValues. 239 */ 240 public boolean hasNoValues() { 241 return noValues; 242 } 243 244 /** 245 * @return Returns the valuesListReference. 246 */ 247 public OWSMetadata getValuesListReference() { 248 return valuesListReference; 249 } 250 251 /** 252 * @return Returns the defaultValue. 253 */ 254 public TypedLiteral getDefaultValue() { 255 return defaultValue; 256 } 257 258 /** 259 * @return Returns the meaning. 260 */ 261 public OWSMetadata getMeaning() { 262 return meaning; 263 } 264 265 /** 266 * @return Returns the owsDataType. 267 */ 268 public OWSMetadata getOwsDataType() { 269 return owsDataType; 270 } 271 272 /** 273 * Returns the measurementType, or null if the measurement object is null. 274 * 275 * @return Returns the measurementType. 276 */ 277 public String getMeasurementType() { 278 return measurementType; 279 } 280 281 /** 282 * @return Returns the measurement. 283 */ 284 public OWSMetadata getMeasurement() { 285 return measurement; 286 } 287 288 /** 289 * Returns an array of OWSMetadata objects. If metadata is null, an array of size 0 is returned. 290 * 291 * @return Returns the metadata. 292 */ 293 public OWSMetadata[] getMetadata() { 294 return metadata; 295 } 296 297 /** 298 * @return Returns the name. 299 */ 300 public String getName() { 301 return name; 302 } 303 304 /** 305 * @param defaultValue 306 * The defaultValue to set. 307 */ 308 public void setDefaultValue( TypedLiteral defaultValue ) { 309 this.defaultValue = defaultValue; 310 } 311 312 /** 313 * Sets the defaultValue to a new TypedLiteral with the given value. 314 * 315 * @param defaultURI 316 */ 317 private void setDefaultValue( String value ) { 318 this.defaultValue = new TypedLiteral( value, null ); 319 } 320 321 }