001: /*
002: * ====================================================================
003: * JAFFA - Java Application Framework For All
004: *
005: * Copyright (C) 2002 JAFFA Development Group
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation; either
010: * version 2.1 of the License, or (at your option) any later version.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this library; if not, write to the Free Software
019: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
020: *
021: * Redistribution and use of this software and associated documentation ("Software"),
022: * with or without modification, are permitted provided that the following conditions are met:
023: * 1. Redistributions of source code must retain copyright statements and notices.
024: * Redistributions must also contain a copy of this document.
025: * 2. Redistributions in binary form must reproduce the above copyright notice,
026: * this list of conditions and the following disclaimer in the documentation
027: * and/or other materials provided with the distribution.
028: * 3. The name "JAFFA" must not be used to endorse or promote products derived from
029: * this Software without prior written permission. For written permission,
030: * please contact mail to: jaffagroup@yahoo.com.
031: * 4. Products derived from this Software may not be called "JAFFA" nor may "JAFFA"
032: * appear in their names without prior written permission.
033: * 5. Due credit should be given to the JAFFA Project (http://jaffa.sourceforge.net).
034: *
035: * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: */
049:
050: package org.jaffa.datatypes;
051:
052: import java.util.*;
053:
054: /**
055: * This class has the various supported datatypes.
056: */
057: public class Defaults {
058:
059: /** A constant for the boolean datatype */
060: public static final String BOOLEAN = "BOOLEAN";
061:
062: /** A constant for the string datatype */
063: public static final String STRING = "STRING";
064:
065: /** A constant for the integer datatype */
066: public static final String INTEGER = "INTEGER";
067:
068: /** A constant for the decimal datatype */
069: public static final String DECIMAL = "DECIMAL";
070:
071: /** A constant for the date datatype */
072: public static final String DATEONLY = "DATE_ONLY";
073:
074: /** A constant for the datetime datatype */
075: public static final String DATETIME = "DATE_TIME";
076:
077: /** A constant for the currency datatype */
078: public static final String CURRENCY = "CURRENCY";
079:
080: /** A constant for the raw datatype */
081: public static final String RAW = "RAW";
082:
083: /** A constant for the long-string datatype */
084: public static final String LONG_STRING = "LONGSTRING";
085:
086: /** A constant for the long-raw datatype */
087: public static final String LONG_RAW = "LONGRAW";
088:
089: /** A constant for the clob datatype */
090: public static final String CLOB = "CLOB";
091:
092: /** A constant for the blob datatype */
093: public static final String BLOB = "BLOB";
094:
095: private static final Map MAP = new LinkedHashMap();
096: static {
097: MAP.put(BOOLEAN, java.lang.Boolean.class);
098: MAP.put(STRING, java.lang.String.class);
099: MAP.put(INTEGER, java.lang.Long.class);
100: MAP.put(DECIMAL, java.lang.Double.class);
101: MAP.put(DATEONLY, org.jaffa.datatypes.DateOnly.class);
102: MAP.put(DATETIME, org.jaffa.datatypes.DateTime.class);
103: MAP.put(CURRENCY, org.jaffa.datatypes.Currency.class);
104: MAP.put(RAW, byte[].class);
105: MAP.put(LONG_STRING, java.lang.String.class);
106: MAP.put(LONG_RAW, byte[].class);
107: MAP.put(CLOB, java.lang.String.class);
108: MAP.put(BLOB, byte[].class);
109: }
110:
111: // no need for an instance of this class
112: private Defaults() {
113: }
114:
115: /**Returns the className for a logicalDataType.
116: * @param key the logicalDataType.
117: * @return the className for a logicalDataType.
118: */
119: public static String getClassString(String key) {
120: Class clazz = (Class) MAP.get(key);
121: if (clazz != null)
122: return clazz.getName().equals("[B") ? "byte[]" : clazz
123: .getName();
124: else
125: return null;
126: }
127:
128: /**Returns the Class object for a logicalDataType.
129: * @param key the logicalDataType.
130: * @return the Class object for a logicalDataType.
131: */
132: public static Class getClass(String key) {
133: return (Class) MAP.get(key);
134: }
135:
136: /** Returns logicalDataType for an object.
137: * NOTE: If more than one datatype utilises the same JAVA class, then any one of them will be returned.
138: * @param obj the object whose datatype is to be determined.
139: * @return logicalDataType for an object.
140: */
141: public static String getDataType(Object obj) {
142: String output = null;
143: Set entrySet = MAP.entrySet();
144: for (Iterator itr = entrySet.iterator(); itr.hasNext();) {
145: Map.Entry me = (Map.Entry) itr.next();
146: if (((Class) me.getValue()).isInstance(obj)) {
147: output = (String) me.getKey();
148: break;
149: }
150: }
151: return output;
152: }
153:
154: /** Returns logicalDataType for an specified java class.
155: * NOTE: If more than one datatype utilises the same JAVA class, then any one of them will be returned.
156: * @param obj the object whose datatype is to be determined.
157: * @return logicalDataType for an object.
158: */
159: public static String getDataType(String clazz) {
160: String output = null;
161: Set entrySet = MAP.entrySet();
162: for (Iterator itr = entrySet.iterator(); itr.hasNext();) {
163: Map.Entry me = (Map.Entry) itr.next();
164: if (((Class) me.getValue()).getName().equals(clazz)) {
165: output = (String) me.getKey();
166: break;
167: }
168: }
169: return output;
170: }
171: }
|