//============================================================================== // FieldTypeMap.java //============================================================================== package tribble.sql; import java.lang.Class; import java.lang.IllegalAccessException; import java.lang.IllegalArgumentException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.math.BigDecimal; import java.net.URL; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; import java.util.HashMap; /******************************************************************************* * Maps an SQL field (table column) to a class member variable or setter method. * *

* This class acts as both a factory and a field mapper. * As a factory, it creates a mapping object which assigns a single column from * an SQL query result set row to a single member of the result object, either by * calling a setter member method of the result class or by directly assigning * the value to a member value of the result class. * *

* Method {@link #getInstance getInstance()} is used to find a factory object for * a specific field type. * *

* The {@link #create(Method) create()} methods are called from a factory object * to create a mapping object for a specific query result field. * * *

*
Source code:
*
Available at: * http://david.tribble.com/src/java/tribble/sql/FieldTypeMap.java *
*
Documentation:
*
Available at: * http://david.tribble.com/docs/tribble/sql/FieldTypeMap.html *
*
* * @version @(#)$Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since 2008-09-04 * @author David R. Tribble (david@tribble.com) *

* Copyright ©2008 by David R. Tribble, all rights reserved.
* Permission is granted to any person or entity except those designated by * by the United States Department of State as a terrorist, or terrorist * government or agency, to use and distribute this source code provided * that the original copyright notice remains present and unaltered. */ abstract class FieldTypeMap { static final String REV = "@(#)tribble/sql/FieldTypeMap.java $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $\n"; // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Constants /** Assignment-compatible type mappings. */ private static final HashMap COMPATIBLE_TYPES; static { // Initialize the COMPATIBLE_TYPES hash table COMPATIBLE_TYPES = new HashMap(37); try { // Primitive Java types COMPATIBLE_TYPES.put(boolean.class, new BooleanMap()); COMPATIBLE_TYPES.put(char.class, new CharMap()); COMPATIBLE_TYPES.put(byte.class, new ByteMap()); COMPATIBLE_TYPES.put(short.class, new ShortMap()); COMPATIBLE_TYPES.put(int.class, new IntMap()); COMPATIBLE_TYPES.put(long.class, new LongMap()); COMPATIBLE_TYPES.put(float.class, new FloatMap()); COMPATIBLE_TYPES.put(double.class, new DoubleMap()); // Primitive Java class types COMPATIBLE_TYPES.put(java.lang.Boolean.class, new BooleanClassMap()); COMPATIBLE_TYPES.put(java.lang.Character.class, new CharacterClassMap()); COMPATIBLE_TYPES.put(java.lang.Byte.class, new ByteClassMap()); COMPATIBLE_TYPES.put(java.lang.Short.class, new ShortClassMap()); COMPATIBLE_TYPES.put(java.lang.Integer.class, new IntegerClassMap()); COMPATIBLE_TYPES.put(java.lang.Long.class, new LongClassMap()); COMPATIBLE_TYPES.put(java.lang.Float.class, new FloatClassMap()); COMPATIBLE_TYPES.put(java.lang.Double.class, new DoubleClassMap()); // Basic Java class types COMPATIBLE_TYPES.put(java.lang.String.class, new StringClassMap()); COMPATIBLE_TYPES.put(java.math.BigDecimal.class, new BigDecimalClassMap()); COMPATIBLE_TYPES.put(java.util.Date.class, new DateClassMap()); COMPATIBLE_TYPES.put(java.net.URL.class, new URLClassMap()); COMPATIBLE_TYPES.put(java.lang.Object.class, new ObjectClassMap()); // Basic SQL class types COMPATIBLE_TYPES.put(java.sql.Date.class, new SqlDateClassMap()); COMPATIBLE_TYPES.put(java.sql.Time.class, new SqlTimeClassMap()); COMPATIBLE_TYPES.put(java.sql.Timestamp.class, new SqlTimestampClassMap()); } catch (Exception ex) { System.out.println("Can't load class FieldTypeMap"); throw new RuntimeException(ex); } }; // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Static methods /*************************************************************************** * Constructor. * * @param type * A class type for a class member variable or setter method parameter. * * @return * A factory object for creating a mapper for a field of the * given type, or null if type is not a supported convertible type. * * @since 1.1, 2008-09-04 */ static FieldTypeMap getInstance(Class type) { return (FieldTypeMap) COMPATIBLE_TYPES.get(type); } // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Variables /** Result type member variable. */ Field m_var; /** Result type member setter method. */ Method m_setter; // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Constructor /*************************************************************************** * Default constructor. * Used for the factory objects derived from this class. * * @since 1.1, 2008-09-04 */ FieldTypeMap() { } /*************************************************************************** * Constructor. * Used to create a mapping object derived from this class which assigns an * SQL query result field to an object member setter method. * * @param meth * Class member setter method of the result object type. * * @since 1.1, 2008-09-04 */ FieldTypeMap(Method meth) { m_setter = meth; } /*************************************************************************** * Constructor. * Used to create a mapping object derived from this class which assigns an * SQL query result field to an object member variable. * * @param var * Class member variable of the result object type. * * @since 1.1, 2008-09-04 */ FieldTypeMap(Field var) { m_var = var; } // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Methods /*************************************************************************** * Create a {@link FieldTypeMap} object for converting a specific column * value from the current row of the result set and assigning it to the * appropriate result class member setter method. * * @param meth * Class member setter method of the result object type. * * @return * A subclass instance of class {@link FieldTypeMap}. * * @since 1.1, 2008-09-04 */ abstract FieldTypeMap create(Method meth); /*************************************************************************** * Create a {@link FieldTypeMap} object for converting a specific column * value from the current row of the result set and assigning it to the * appropriate result class member variable. * * @param var * Class member variable of the result object type. * * @return * A subclass instance of class {@link FieldTypeMap}. * * @since 1.1, 2008-09-04 */ abstract FieldTypeMap create(Field var); /*************************************************************************** * Retrieve the column value from the current row of the result set and * assign it to the appropriate result class member variable or setter * method. * * @param result * The result object whose members are to be populated with the column values * from the current result set row. * * @param colNo * Column index to retrieve within the current result set row. * * @param rset * Result set row, containing the column value to retrieve. * * @return * True if the assignment succeeds, otherwise false (i.e., the column value * is null). * * @since 1.1, 2008-09-04 */ abstract boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException; // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Inner classes // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Mapping classes for primitive Java types /*************************************************************************** * Retrieves a column value and assigns it to a boolean * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class BooleanMap extends FieldTypeMap { private Boolean[] m_val; BooleanMap() { } private BooleanMap(Method meth) { super(meth); m_val = new Boolean[1]; } private BooleanMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new BooleanMap(meth); } FieldTypeMap create(Field var) { return new BooleanMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { boolean col; col = rset.getBoolean(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) return false; else { m_val[0] = new Boolean(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) return false; else { m_var.setBoolean(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a char * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class CharMap extends FieldTypeMap { private Character[] m_val; CharMap() { } private CharMap(Method meth) { super(meth); m_val = new Character[1]; } private CharMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new CharMap(meth); } FieldTypeMap create(Field var) { return new CharMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { String col; col = rset.getString(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null || col.length() == 0) return false; else { m_val[0] = new Character(col.charAt(0)); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null || col.length() == 0) return false; else { m_var.setChar(result, col.charAt(0)); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a byte * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class ByteMap extends FieldTypeMap { private Byte[] m_val; ByteMap() { } private ByteMap(Method meth) { super(meth); m_val = new Byte[1]; } private ByteMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new ByteMap(meth); } FieldTypeMap create(Field var) { return new ByteMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { byte col; col = rset.getByte(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) return false; else { m_val[0] = new Byte(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) return false; else { m_var.setByte(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a short * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class ShortMap extends FieldTypeMap { private Short[] m_val; ShortMap() { } private ShortMap(Method meth) { super(meth); m_val = new Short[1]; } private ShortMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new ShortMap(meth); } FieldTypeMap create(Field var) { return new ShortMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { short col; col = rset.getShort(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) return false; else { m_val[0] = new Short(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) return false; else { m_var.setShort(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a int * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class IntMap extends FieldTypeMap { private Integer[] m_val; IntMap() { } private IntMap(Method meth) { super(meth); m_val = new Integer[1]; } private IntMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new IntMap(meth); } FieldTypeMap create(Field var) { return new IntMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { int col; col = rset.getInt(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) return false; else { m_val[0] = new Integer(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) return false; else { m_var.setInt(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a long * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class LongMap extends FieldTypeMap { private Long[] m_val; LongMap() { } private LongMap(Method meth) { super(meth); m_val = new Long[1]; } private LongMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new LongMap(meth); } FieldTypeMap create(Field var) { return new LongMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { long col; col = rset.getLong(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) return false; else { m_val[0] = new Long(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) return false; else { m_var.setLong(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a float * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class FloatMap extends FieldTypeMap { private Float[] m_val; FloatMap() { } private FloatMap(Method meth) { super(meth); m_val = new Float[1]; } private FloatMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new FloatMap(meth); } FieldTypeMap create(Field var) { return new FloatMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { float col; col = rset.getFloat(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) return false; else { m_val[0] = new Float(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) return false; else { m_var.setFloat(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a double * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class DoubleMap extends FieldTypeMap { private Double[] m_val; DoubleMap() { } private DoubleMap(Method meth) { super(meth); m_val = new Double[1]; } private DoubleMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new DoubleMap(meth); } FieldTypeMap create(Field var) { return new DoubleMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { double col; col = rset.getDouble(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) return false; else { m_val[0] = new Double(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) return false; else { m_var.setDouble(result, col); return true; } } } } // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Mapping classes for primitive Java class types /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Boolean * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class BooleanClassMap extends FieldTypeMap { private Boolean[] m_val; BooleanClassMap() { } private BooleanClassMap(Method meth) { super(meth); m_val = new Boolean[1]; } private BooleanClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new BooleanClassMap(meth); } FieldTypeMap create(Field var) { return new BooleanClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { boolean col; col = rset.getBoolean(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = new Boolean(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) { m_var.set(result, null); return false; } else { m_var.set(result, new Boolean(col)); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Character * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class CharacterClassMap extends FieldTypeMap { private Character[] m_val; CharacterClassMap() { } private CharacterClassMap(Method meth) { super(meth); m_val = new Character[1]; } private CharacterClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new CharacterClassMap(meth); } FieldTypeMap create(Field var) { return new CharacterClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { String col; col = rset.getString(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null || col.length() == 0) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = new Character(col.charAt(0)); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null || col.length() == 0) { m_var.set(result, null); return false; } else { m_var.set(result, new Character(col.charAt(0))); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Byte * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class ByteClassMap extends FieldTypeMap { private Byte[] m_val; ByteClassMap() { } private ByteClassMap(Method meth) { super(meth); m_val = new Byte[1]; } private ByteClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new ByteClassMap(meth); } FieldTypeMap create(Field var) { return new ByteClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { byte col; col = rset.getByte(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = new Byte(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) { m_var.set(result, null); return false; } else { m_var.set(result, new Byte(col)); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Short * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class ShortClassMap extends FieldTypeMap { private Short[] m_val; ShortClassMap() { } private ShortClassMap(Method meth) { super(meth); m_val = new Short[1]; } private ShortClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new ShortClassMap(meth); } FieldTypeMap create(Field var) { return new ShortClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { short col; col = rset.getShort(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = new Short(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) { m_var.set(result, null); return false; } else { m_var.set(result, new Short(col)); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Integer * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class IntegerClassMap extends FieldTypeMap { private Integer[] m_val; IntegerClassMap() { } private IntegerClassMap(Method meth) { super(meth); m_val = new Integer[1]; } private IntegerClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new IntegerClassMap(meth); } FieldTypeMap create(Field var) { return new IntegerClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { int col; col = rset.getInt(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = new Integer(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) { m_var.set(result, null); return false; } else { m_var.set(result, new Integer(col)); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Long * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class LongClassMap extends FieldTypeMap { private Long[] m_val; LongClassMap() { } private LongClassMap(Method meth) { super(meth); m_val = new Long[1]; } private LongClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new LongClassMap(meth); } FieldTypeMap create(Field var) { return new LongClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { long col; col = rset.getLong(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = new Long(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) { m_var.set(result, null); return false; } else { m_var.set(result, new Long(col)); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Float * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class FloatClassMap extends FieldTypeMap { private Float[] m_val; FloatClassMap() { } private FloatClassMap(Method meth) { super(meth); m_val = new Float[1]; } private FloatClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new FloatClassMap(meth); } FieldTypeMap create(Field var) { return new FloatClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { float col; col = rset.getFloat(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = new Float(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) { m_var.set(result, null); return false; } else { m_var.set(result, new Float(col)); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Double * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.1, 2008-09-04 */ private static class DoubleClassMap extends FieldTypeMap { private Double[] m_val; DoubleClassMap() { } private DoubleClassMap(Method meth) { super(meth); m_val = new Double[1]; } private DoubleClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new DoubleClassMap(meth); } FieldTypeMap create(Field var) { return new DoubleClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { double col; col = rset.getDouble(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull()) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = new Double(col); m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull()) { m_var.set(result, null); return false; } else { m_var.set(result, new Double(col)); return true; } } } } // ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ // Mapping classes for basic Java class types /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.String * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.2, 2008-09-04 */ private static class StringClassMap extends FieldTypeMap { private String[] m_val; StringClassMap() { } private StringClassMap(Method meth) { super(meth); m_val = new String[1]; } private StringClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new StringClassMap(meth); } FieldTypeMap create(Field var) { return new StringClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { String col; col = rset.getString(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = col; m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null) { m_var.set(result, null); return false; } else { m_var.set(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.math.BigDecimal * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.2, 2008-09-04 */ private static class BigDecimalClassMap extends FieldTypeMap { private BigDecimal[] m_val; BigDecimalClassMap() { } private BigDecimalClassMap(Method meth) { super(meth); m_val = new BigDecimal[1]; } private BigDecimalClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new BigDecimalClassMap(meth); } FieldTypeMap create(Field var) { return new BigDecimalClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { BigDecimal col; col = rset.getBigDecimal(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = col; m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null) { m_var.set(result, null); return false; } else { m_var.set(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.util.Date * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.2, 2008-09-04 */ private static class DateClassMap extends FieldTypeMap { private Date[] m_val; DateClassMap() { } private DateClassMap(Method meth) { super(meth); m_val = new Date[1]; } private DateClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new DateClassMap(meth); } FieldTypeMap create(Field var) { return new DateClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { Date col; col = rset.getTimestamp(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = col; m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null) { m_var.set(result, null); return false; } else { m_var.set(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.net.URL * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.2, 2008-09-04 */ private static class URLClassMap extends FieldTypeMap { private URL[] m_val; URLClassMap() { } private URLClassMap(Method meth) { super(meth); m_val = new URL[1]; } private URLClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new URLClassMap(meth); } FieldTypeMap create(Field var) { return new URLClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { URL col; col = rset.getURL(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = col; m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null) { m_var.set(result, null); return false; } else { m_var.set(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.lang.Object * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.2, 2008-09-04 */ private static class ObjectClassMap extends FieldTypeMap { private Object[] m_val; ObjectClassMap() { } private ObjectClassMap(Method meth) { super(meth); m_val = new Object[1]; } private ObjectClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new ObjectClassMap(meth); } FieldTypeMap create(Field var) { return new ObjectClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { Object col; col = rset.getObject(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = col; m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null) { m_var.set(result, null); return false; } else { m_var.set(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.sql.Date * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.5, 2008-09-06 */ private static class SqlDateClassMap extends FieldTypeMap { private java.sql.Date[] m_val; SqlDateClassMap() { } private SqlDateClassMap(Method meth) { super(meth); m_val = new java.sql.Date[1]; } private SqlDateClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new SqlDateClassMap(meth); } FieldTypeMap create(Field var) { return new SqlDateClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { java.sql.Date col; col = rset.getDate(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = col; m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null) { m_var.set(result, null); return false; } else { m_var.set(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.sql.Time * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.5, 2008-09-06 */ private static class SqlTimeClassMap extends FieldTypeMap { private java.sql.Time[] m_val; SqlTimeClassMap() { } private SqlTimeClassMap(Method meth) { super(meth); m_val = new java.sql.Time[1]; } private SqlTimeClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new SqlTimeClassMap(meth); } FieldTypeMap create(Field var) { return new SqlTimeClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { java.sql.Time col; col = rset.getTime(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = col; m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null) { m_var.set(result, null); return false; } else { m_var.set(result, col); return true; } } } } /*************************************************************************** * Retrieves a column value and assigns it to a java.sql.Timestamp * member setter method or variable of the result object. * * @version $Revision: 1.6 $ $Date: 2008/09/06 20:25:49 $ * @since {@link FieldTypeMap} 1.5, 2008-09-06 */ private static class SqlTimestampClassMap extends FieldTypeMap { private java.sql.Timestamp[] m_val; SqlTimestampClassMap() { } private SqlTimestampClassMap(Method meth) { super(meth); m_val = new java.sql.Timestamp[1]; } private SqlTimestampClassMap(Field var) { super(var); } FieldTypeMap create(Method meth) { return new SqlTimestampClassMap(meth); } FieldTypeMap create(Field var) { return new SqlTimestampClassMap(var); } boolean mapResultField(Object result, int colNo, ResultSet rset) throws SQLException, IllegalAccessException, InvocationTargetException { java.sql.Timestamp col; col = rset.getTimestamp(colNo); if (m_setter != null) { // Map the query result field to a setter method if (rset.wasNull() || col == null) { m_setter.invoke(result, m_val); return false; } else { m_val[0] = col; m_setter.invoke(result, m_val); return true; } } else { // Map the query result field to a member variable if (rset.wasNull() || col == null) { m_var.set(result, null); return false; } else { m_var.set(result, col); return true; } } } } } // End FieldTypeMap.java