001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/model/csct/cs/Datum.java $
002 /*---------------- FILE HEADER ------------------------------------------
003
004 This file is part of deegree.
005 Copyright (C) 2001 by:
006 EXSE, Department of Geography, University of Bonn
007 http://www.giub.uni-bonn.de/exse/
008 lat/lon GmbH
009 http://www.lat-lon.de
010
011 It has been implemented within SEAGIS - An OpenSource implementation of OpenGIS specification
012 (C) 2001, Institut de Recherche pour le D�veloppement (http://sourceforge.net/projects/seagis/)
013 SEAGIS Contacts: Surveillance de l'Environnement Assist�e par Satellite
014 Institut de Recherche pour le D�veloppement / US-Espace
015 mailto:seasnet@teledetection.fr
016
017
018 This library is free software; you can redistribute it and/or
019 modify it under the terms of the GNU Lesser General Public
020 License as published by the Free Software Foundation; either
021 version 2.1 of the License, or (at your option) any later version.
022
023 This library is distributed in the hope that it will be useful,
024 but WITHOUT ANY WARRANTY; without even the implied warranty of
025 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
026 Lesser General Public License for more details.
027
028 You should have received a copy of the GNU Lesser General Public
029 License along with this library; if not, write to the Free Software
030 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
031
032 Contact:
033
034 Andreas Poth
035 lat/lon GmbH
036 Aennchenstr. 19
037 53115 Bonn
038 Germany
039 E-Mail: poth@lat-lon.de
040
041 Klaus Greve
042 Department of Geography
043 University of Bonn
044 Meckenheimer Allee 166
045 53115 Bonn
046 Germany
047 E-Mail: klaus.greve@uni-bonn.de
048
049
050 ---------------------------------------------------------------------------*/
051 package org.deegree.model.csct.cs;
052
053 // OpenGIS dependencies
054 import java.util.Map;
055
056 import org.deegree.model.csct.resources.Utilities;
057
058 /**
059 * A set of quantities from which other quantities are calculated. It may be a textual description
060 * and/or a set of parameters describing the relationship of a coordinate system to some predefined
061 * physical locations (such as center of mass) and physical directions (such as axis of spin). It
062 * can be defined as a set of real points on the earth that have coordinates. For example a datum
063 * can be thought of as a set of parameters defining completely the origin and orientation of a
064 * coordinate system with respect to the earth. The definition of the datum may also include the
065 * temporal behavior (such as the rate of change of the orientation of the coordinate axes).
066 *
067 * @version 1.00
068 * @author OpenGIS (www.opengis.org)
069 * @author Martin Desruisseaux
070 *
071 * @author last edited by: $Author: bezema $
072 *
073 * @version $Revision: 6259 $, $Date: 2007-03-20 10:15:15 +0100 (Di, 20 Mär 2007) $
074 *
075 * @see "org.opengis.cs.CS_Datum"
076 */
077 public class Datum extends Info {
078 /**
079 * Serial number for interoperability with different versions.
080 */
081 private static final long serialVersionUID = 2175857309476007487L;
082
083 /**
084 * The datum type.
085 */
086 private final DatumType type;
087
088 /**
089 * Construct a new datum with the specified name and datum type.
090 *
091 * @param name
092 * The datum name.
093 * @param type
094 * The datum type.
095 */
096 public Datum( final String name, final DatumType type ) {
097 super( name );
098 this.type = type;
099 ensureNonNull( "type", type );
100 }
101
102 /**
103 * Construct a new datum with the specified properties.
104 *
105 * @param properties
106 * The set of properties (see {@link Info}).
107 * @param type
108 * The datum type.
109 */
110 Datum( final Map properties, final DatumType type ) {
111 super( properties );
112 this.type = type;
113 // Accept null value.
114 }
115
116 /**
117 * Gets the type of the datum as an enumerated code.
118 *
119 * @return the type of the datum as an enumerated code.
120 *
121 * @see "org.opengis.cs.CS_Datum#getDatumType()"
122 */
123 public DatumType getDatumType() {
124 return type;
125 }
126
127 /**
128 * Returns a hash value for this datum.
129 *
130 * @return a hash value for this datum.
131 */
132 public int hashCode() {
133 int code = 37 * super.hashCode();
134 final DatumType type = getDatumType();
135 if ( type != null )
136 code += type.hashCode();
137 return code;
138 }
139
140 /**
141 * Compares the specified object with this datum for equality.
142 *
143 * @param object
144 *
145 * @return
146 */
147 public boolean equals( final Object object ) {
148 if ( super.equals( object ) ) {
149 final Datum that = (Datum) object;
150 return Utilities.equals( this.type, that.type );
151 }
152 return false;
153 }
154
155 /**
156 * Fill the part inside "[...]". Used for formatting Well Know Text (WKT).
157 *
158 * @param buffer
159 * @return
160 */
161 String addString( final StringBuffer buffer ) {
162 buffer.append( ", " );
163 buffer.append( type.getName() );
164 return "DATUM";
165 }
166
167 }