abstract class JDBCDynaClass extends java.lang.Object implements DynaClass, java.io.Serializable
Provides common logic for JDBC implementations of DynaClass
.
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,java.lang.String> |
columnNameXref
Cross Reference for column name --> dyna property name
(needed when lowerCase option is true)
|
protected boolean |
lowerCase
Flag defining whether column names should be lower cased when
converted to property names.
|
protected DynaProperty[] |
properties
The set of dynamic properties that are part of this
DynaClass . |
protected java.util.Map<java.lang.String,DynaProperty> |
propertiesMap
The set of dynamic properties that are part of this
DynaClass , keyed by the property name. |
private boolean |
useColumnLabel
Flag defining whether column names or labels should be used.
|
Constructor and Description |
---|
JDBCDynaClass() |
Modifier and Type | Method and Description |
---|---|
protected DynaProperty |
createDynaProperty(java.sql.ResultSetMetaData metadata,
int i)
Factory method to create a new DynaProperty for the given index
into the result set metadata.
|
protected java.lang.String |
getColumnName(java.lang.String name)
Get the table column name for the specified property name.
|
DynaProperty[] |
getDynaProperties()
Return an array of
ProperyDescriptors for the properties
currently defined in this DynaClass. |
DynaProperty |
getDynaProperty(java.lang.String name)
Return a property descriptor for the specified property, if it
exists; otherwise, return
null . |
java.lang.String |
getName()
Return the name of this DynaClass (analogous to the
getName() method of java.lang.Class DynaClass implementation class to support
different dynamic classes, with different sets of properties. |
protected java.lang.Object |
getObject(java.sql.ResultSet resultSet,
java.lang.String name)
Get a column value from a
ResultSet for the specified name. |
protected void |
introspect(java.sql.ResultSet resultSet)
Introspect the metadata associated with our result set, and populate
the
properties and propertiesMap instance
variables. |
protected java.lang.Class<?> |
loadClass(java.lang.String className)
Loads and returns the
Class of the given name. |
DynaBean |
newInstance()
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.
|
protected boolean lowerCase
Flag defining whether column names should be lower cased when converted to property names.
private boolean useColumnLabel
Flag defining whether column names or labels should be used.
protected DynaProperty[] properties
The set of dynamic properties that are part of this
DynaClass
.
protected java.util.Map<java.lang.String,DynaProperty> 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 the
properties
list.
private java.util.Map<java.lang.String,java.lang.String> columnNameXref
public java.lang.String getName()
Return the name of this DynaClass (analogous to the
getName()
method of java.lang.Class
DynaClass implementation class to support
different dynamic classes, with different sets of properties.
public DynaProperty getDynaProperty(java.lang.String name)
Return a property descriptor for the specified property, if it
exists; otherwise, return null
.
getDynaProperty
in interface DynaClass
name
- Name of the dynamic property for which a descriptor
is requestedjava.lang.IllegalArgumentException
- if no property name is specifiedpublic DynaProperty[] 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.
getDynaProperties
in interface DynaClass
public DynaBean newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException
Instantiate and return a new DynaBean instance, associated with this DynaClass. NOTE - This operation is not supported, and throws an exception.
newInstance
in interface DynaClass
DynaBean
instancejava.lang.IllegalAccessException
- if the Class or the appropriate
constructor is not accessiblejava.lang.InstantiationException
- if this Class represents an abstract
class, an array class, a primitive type, or void; or if instantiation
fails for some other reasonpublic void setUseColumnLabel(boolean useColumnLabel)
useColumnLabel
- true if the column label should be used, otherwise falseprotected java.lang.Class<?> loadClass(java.lang.String className) throws java.sql.SQLException
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.
className
- The name of the class to loadjava.sql.SQLException
- if an exception was thrown trying to load
the specified classprotected DynaProperty createDynaProperty(java.sql.ResultSetMetaData metadata, int i) throws java.sql.SQLException
Factory method to create a new DynaProperty for the given index into the result set metadata.
metadata
- is the result set metadatai
- is the column index in the metadatajava.sql.SQLException
- If an error occurs accessing the SQL metadataprotected void introspect(java.sql.ResultSet resultSet) throws java.sql.SQLException
Introspect the metadata associated with our result set, and populate
the properties
and propertiesMap
instance
variables.
resultSet
- The resultSet
whose metadata is to
be introspectedjava.sql.SQLException
- if an error is encountered processing the
result set metadataprotected java.lang.Object getObject(java.sql.ResultSet resultSet, java.lang.String name) throws java.sql.SQLException
ResultSet
for the specified name.resultSet
- The result setname
- The property namejava.sql.SQLException
- if an error occursprotected java.lang.String getColumnName(java.lang.String name)
name
- The property nameCopyright (c) 2000-2008 - Apache Software Foundation