Class JDBCDynaClass
- All Implemented Interfaces:
Serializable
,DynaClass
- Direct Known Subclasses:
ResultSetDynaClass
,RowSetDynaClass
Provides common logic for JDBC implementations of DynaClass
.
- Version:
- $Id$
-
Field Summary
FieldsModifier and TypeFieldDescriptionCross Reference for column name --> dyna property name (needed when lowerCase option is true)protected boolean
Flag defining whether column names should be lower cased when converted to property names.protected DynaProperty[]
The set of dynamic properties that are part of thisDynaClass
.protected Map
<String, DynaProperty> The set of dynamic properties that are part of thisDynaClass
, keyed by the property name.private boolean
Flag defining whether column names or labels should be used. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected DynaProperty
createDynaProperty
(ResultSetMetaData metadata, int i) Factory method to create a new DynaProperty for the given index into the result set metadata.protected String
getColumnName
(String name) Get the table column name for the specified property name.Return an array ofProperyDescriptors
for the properties currently defined in this DynaClass.getDynaProperty
(String name) Return a property descriptor for the specified property, if it exists; otherwise, returnnull
.getName()
Return the name of this DynaClass (analogous to thegetName()
method ofjava.lang.Classinvalid input: '<'/code), which allows the same
DynaClass
implementation class to support different dynamic classes, with different sets of properties.protected Object
Get a column value from aResultSet
for the specified name.protected void
introspect
(ResultSet resultSet) Introspect the metadata associated with our result set, and populate theproperties
andpropertiesMap
instance variables.protected Class
<?> Loads and returns theClass
of the given name.Instantiate and return a new DynaBean instance, associated with this DynaClass.void
setUseColumnLabel
(boolean useColumnLabel) Set whether the column label or name should be used for the property name.
-
Field Details
-
lowerCase
protected boolean lowerCaseFlag defining whether column names should be lower cased when converted to property names.
-
useColumnLabel
private boolean useColumnLabelFlag defining whether column names or labels should be used.
-
properties
The set of dynamic properties that are part of this
DynaClass
. -
propertiesMap
The set of dynamic properties that are part of this
DynaClass
, keyed by the property name. Individual descriptor instances will be the same instances as those in theproperties
list. -
columnNameXref
Cross Reference for column name --> dyna property name (needed when lowerCase option is true)
-
-
Constructor Details
-
JDBCDynaClass
JDBCDynaClass()
-
-
Method Details
-
getName
Return the name of this DynaClass (analogous to the
getName()
method ofjava.lang.Classinvalid input: '<'/code), which allows the same
DynaClass
implementation class to support different dynamic classes, with different sets of properties. -
getDynaProperty
Return a property descriptor for the specified property, if it exists; otherwise, return
null
.- Specified by:
getDynaProperty
in interfaceDynaClass
- Parameters:
name
- Name of the dynamic property for which a descriptor is requested- Returns:
- The descriptor for the specified property
- Throws:
IllegalArgumentException
- if no property name is specified
-
getDynaProperties
Return an array of
ProperyDescriptors
for the properties currently defined in this DynaClass. If no properties are defined, a zero-length array will be returned.- Specified by:
getDynaProperties
in interfaceDynaClass
- Returns:
- the set of properties for this DynaClass
-
newInstance
Instantiate and return a new DynaBean instance, associated with this DynaClass. NOTE - This operation is not supported, and throws an exception.
- Specified by:
newInstance
in interfaceDynaClass
- Returns:
- A new
DynaBean
instance - Throws:
IllegalAccessException
- if the Class or the appropriate constructor is not accessibleInstantiationException
- if this Class represents an abstract class, an array class, a primitive type, or void; or if instantiation fails for some other reason
-
setUseColumnLabel
public void setUseColumnLabel(boolean useColumnLabel) Set whether the column label or name should be used for the property name.- Parameters:
useColumnLabel
- true if the column label should be used, otherwise false
-
loadClass
Loads and returns the
Class
of the given name. By default, a load from the thread context class loader is attempted. If there is no such class loader, the class loader used to load this class will be utilized.- Parameters:
className
- The name of the class to load- Returns:
- The loaded class
- Throws:
SQLException
- if an exception was thrown trying to load the specified class
-
createDynaProperty
Factory method to create a new DynaProperty for the given index into the result set metadata.
- Parameters:
metadata
- is the result set metadatai
- is the column index in the metadata- Returns:
- the newly created DynaProperty instance
- Throws:
SQLException
- If an error occurs accessing the SQL metadata
-
introspect
Introspect the metadata associated with our result set, and populate the
properties
andpropertiesMap
instance variables.- Parameters:
resultSet
- TheresultSet
whose metadata is to be introspected- Throws:
SQLException
- if an error is encountered processing the result set metadata
-
getObject
Get a column value from aResultSet
for the specified name.- Parameters:
resultSet
- The result setname
- The property name- Returns:
- The value
- Throws:
SQLException
- if an error occurs
-
getColumnName
Get the table column name for the specified property name.- Parameters:
name
- The property name- Returns:
- The column name (which can be different if the lowerCase option is used).
-