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 long 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 TupleInteger extends Tuple {
028: /**
029: * Defines the key for which we store the annotation.
030: */
031: private long m_value = 0;
032:
033: /**
034: * Constructs an instance of a long tuple.
035: *
036: * @param key is the key to store annotations for.
037: * @param value is the long value of the annotation.
038: */
039: public TupleInteger(String key, long 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 long.
048: * @see #setLong( long )
049: */
050: public long getLong() {
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 #getLong()
059: */
060: public void setLong(long 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.Long
070: */
071: public Object getValue() {
072: return new Long(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: */
084: public void setValue(Object value) throws ClassCastException {
085: if (value instanceof java.lang.Number)
086: m_value = ((Long) value).longValue();
087: else if (value instanceof java.lang.String)
088: m_value = Long.parseLong((String) value);
089: else
090: throw new ClassCastException("type cast failed: not a Long");
091: }
092:
093: /**
094: * Returns the type of the value as SQL Type.
095: *
096: * @return a constant from the set of SQL types.
097: * @see java.sql.Types
098: */
099: public int getType() {
100: return java.sql.Types.BIGINT;
101: }
102:
103: /**
104: * Returns the string representation of the type.
105: */
106: public String getTypeString() {
107: return "int";
108: }
109: }
|