Class JDBCDynaClass
- java.lang.Object
-
- org.apache.commons.beanutils.JDBCDynaClass
-
- All Implemented Interfaces:
java.io.Serializable
,DynaClass
- Direct Known Subclasses:
ResultSetDynaClass
,RowSetDynaClass
abstract class JDBCDynaClass extends java.lang.Object implements DynaClass, java.io.Serializable
Provides common logic for JDBC implementations of
DynaClass
.- Version:
- $Id$
-
-
Field Summary
Fields Modifier and Type Field 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 thisDynaClass
.protected java.util.Map<java.lang.String,DynaProperty>
propertiesMap
The set of dynamic properties that are part of thisDynaClass
, keyed by the property name.private boolean
useColumnLabel
Flag defining whether column names or labels should be used.
-
Constructor Summary
Constructors Constructor Description JDBCDynaClass()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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 ofProperyDescriptors
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, returnnull
.java.lang.String
getName()
Return the name of this DynaClass (analogous to thegetName()
method ofjava.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 aResultSet
for the specified name.protected void
introspect(java.sql.ResultSet resultSet)
Introspect the metadata associated with our result set, and populate theproperties
andpropertiesMap
instance variables.protected java.lang.Class<?>
loadClass(java.lang.String className)
Loads and returns theClass
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.
-
-
-
Field Detail
-
lowerCase
protected boolean lowerCase
Flag defining whether column names should be lower cased when converted to property names.
-
useColumnLabel
private boolean useColumnLabel
Flag defining whether column names or labels should be used.
-
properties
protected DynaProperty[] properties
The set of dynamic properties that are part of this
DynaClass
.
-
propertiesMap
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 theproperties
list.
-
columnNameXref
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)
-
-
Method Detail
-
getName
public java.lang.String getName()
Return the name of this DynaClass (analogous to the
getName()
method ofjava.lang.Class
DynaClass implementation class to support different dynamic classes, with different sets of properties.
-
getDynaProperty
public DynaProperty getDynaProperty(java.lang.String name)
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:
java.lang.IllegalArgumentException
- if no property name is specified
-
getDynaProperties
public 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.- Specified by:
getDynaProperties
in interfaceDynaClass
- Returns:
- the set of properties for this DynaClass
-
newInstance
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.
- Specified by:
newInstance
in interfaceDynaClass
- Returns:
- A new
DynaBean
instance - Throws:
java.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 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
protected 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.- Parameters:
className
- The name of the class to load- Returns:
- The loaded class
- Throws:
java.sql.SQLException
- if an exception was thrown trying to load the specified class
-
createDynaProperty
protected 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.
- Parameters:
metadata
- is the result set metadatai
- is the column index in the metadata- Returns:
- the newly created DynaProperty instance
- Throws:
java.sql.SQLException
- If an error occurs accessing the SQL metadata
-
introspect
protected void introspect(java.sql.ResultSet resultSet) throws java.sql.SQLException
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:
java.sql.SQLException
- if an error is encountered processing the result set metadata
-
getObject
protected java.lang.Object getObject(java.sql.ResultSet resultSet, java.lang.String name) throws java.sql.SQLException
Get a column value from aResultSet
for the specified name.- Parameters:
resultSet
- The result setname
- The property name- Returns:
- The value
- Throws:
java.sql.SQLException
- if an error occurs
-
getColumnName
protected java.lang.String getColumnName(java.lang.String name)
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).
-
-