001: /*
002: * This file or a portion of this file is licensed under the terms of
003: * the Globus Toolkit Public License, found in file GTPL, or at
004: * http://www.globus.org/toolkit/download/license.html. This notice must
005: * appear in redistributions of this file, with or without modification.
006: *
007: * Redistributions of this Software, with or without modification, must
008: * reproduce the GTPL in: (1) the Software, or (2) the Documentation or
009: * some other similar material which is provided with the Software (if
010: * any).
011: *
012: * Copyright 1999-2004 University of Chicago and The University of
013: * Southern California. All rights reserved.
014: */
015: package org.griphyn.vdl.annotation;
016:
017: import java.sql.Types;
018:
019: /**
020: * This simple class defines the double values for the values at the
021: * heart of Yong's annotations.
022: *
023: * @author Jens-S. Vöckler
024: * @author Yong Zhao
025: * @version $Revision: 50 $
026: */
027: public class TupleFloat extends Tuple {
028: /**
029: * Defines the key for which we store the annotation.
030: */
031: private double m_value = 0.0;
032:
033: /**
034: * Constructs an instance of a double tuple.
035: *
036: * @param key is the key to store annotations for.
037: * @param value is the double value of the annotation.
038: */
039: public TupleFloat(String key, double value) {
040: super (key);
041: m_value = value;
042: }
043:
044: /**
045: * Obtains the current value of the value part.
046: *
047: * @return the current value as double.
048: * @see #setDouble( double )
049: */
050: public double getDouble() {
051: return m_value;
052: }
053:
054: /**
055: * Overwrites the current value of the value part.
056: *
057: * @param value is the new value to use from now on.
058: * @see #getDouble()
059: */
060: public void setDouble(double value) {
061: m_value = value;
062: }
063:
064: /**
065: * Return generically the value wrapped into a Java class.
066: *
067: * @return the value wrapped as Java object.
068: * @see #setValue( Object )
069: * @see java.lang.Double
070: */
071: public Object getValue() {
072: return new Double(m_value);
073: }
074:
075: /**
076: * Generic interface to set a value in an instance. Note that this
077: * action may fail, if the instance is of an incompatible type.
078: *
079: * @param value is the data object to set.
080: * @see #getValue()
081: * @exception ClassCastException if the actual argument type of the value
082: * is incompatible with the value maintained by the instance.
083: * @exception NumberFormatException if the String does not contain
084: * something that is parsable into a double value. */
085: public void setValue(Object value) throws ClassCastException {
086: if (value instanceof java.lang.Number)
087: m_value = ((Number) value).doubleValue();
088: else if (value instanceof java.lang.String)
089: m_value = Double.parseDouble((String) value);
090: else
091: throw new ClassCastException(
092: "type cast failed: not a number");
093: }
094:
095: /**
096: * Returns the type of the value as SQL Type.
097: *
098: * @return a constant from the set of SQL types.
099: * @see java.sql.Types
100: */
101: public int getType() {
102: return java.sql.Types.DOUBLE;
103: }
104:
105: /**
106: * Returns the string representation of the type.
107: */
108: public String getTypeString() {
109: return "float";
110: }
111: }
|