//============================================================================== // 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. * * *
* 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