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 abstract base class defines the key value tuple that define 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 abstract class Tuple {
028: /**
029: * Defines the key for which we store the annotation.
030: */
031: private String m_key;
032:
033: /**
034: * Array constructor, please don't use.
035: */
036: public Tuple() {
037: m_key = null;
038: }
039:
040: /**
041: * Constructs the key portion of a tuple.
042: *
043: * @param key is the key to store annotations for.
044: */
045: public Tuple(String key) {
046: m_key = key;
047: }
048:
049: /**
050: * Obtains the current value of the key.
051: *
052: * @return the current value of the key.
053: * @see #setKey( String )
054: */
055: public String getKey() {
056: return m_key;
057: }
058:
059: /**
060: * Overwrites the key with a different name.
061: *
062: * @param key is the new key to use from now on.
063: * @see #getKey()
064: */
065: public void setKey(String key) {
066: m_key = key;
067: }
068:
069: /**
070: * Generate interface to obtain the value from an instance.
071: * The value will be wrapped into the appropriate Java class.
072: * For the timestamp object, the Java SQL Date will be used.
073: *
074: * @return the value wrapped as Java object.
075: * @see #setValue( Object )
076: */
077: public abstract Object getValue();
078:
079: /**
080: * Generic interface to set a value in an instance. Note
081: * that this action may fail, if the instance is of an
082: * incompatible type.
083: *
084: * @param value is the data object to set.
085: * @see #getValue()
086: * @exception ClassCastException if the actual argument type of the value
087: * is incompatible with the value maintained by the instance.
088: */
089: public abstract void setValue(Object value)
090: throws ClassCastException;
091:
092: /**
093: * Returns the type of the value as SQL Type.
094: *
095: * @return a constant from the set of SQL types.
096: * @see java.sql.Types
097: */
098: public abstract int getType();
099:
100: /**
101: * Returns the string representation of the type.
102: */
103: public abstract String getTypeString();
104:
105: /**
106: * Return a string representation of the tuple
107: */
108: public String toString() {
109: return m_key + "\t" + getTypeString() + "\t" + getValue();
110: }
111: }
|