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.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<java.lang.String,java.lang.String>columnNameXrefCross Reference for column name to dyna property name (needed when lowerCase option is true)protected booleanlowerCaseFlag defining whether column names should be lower cased when converted to property names.protected DynaProperty[]propertiesThe set of dynamic properties that are part of thisDynaClass.protected java.util.Map<java.lang.String,DynaProperty>propertiesMapThe set of dynamic properties that are part of thisDynaClass, keyed by the property name.private static longserialVersionUIDprivate booleanuseColumnLabelFlag 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 DynaPropertycreateDynaProperty(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.StringgetColumnName(java.lang.String name)Get the table column name for the specified property name.DynaProperty[]getDynaProperties()Return an array ofProperyDescriptorsfor the properties currently defined in this DynaClass.DynaPropertygetDynaProperty(java.lang.String name)Return a property descriptor for the specified property, if it exists; otherwise, returnnull.java.lang.StringgetName()Return the name of this DynaClass (analogous to thegetName()method ofjava.lang.Class), which allows the sameDynaClassimplementation class to support different dynamic classes, with different sets of properties.protected java.lang.ObjectgetObject(java.sql.ResultSet resultSet, java.lang.String name)Get a column value from aResultSetfor the specified name.protected voidintrospect(java.sql.ResultSet resultSet)Introspect the metadata associated with our result set, and populate thepropertiesandpropertiesMapinstance variables.protected java.lang.Class<?>loadClass(java.lang.String className)Loads and returns theClassof the given name.DynaBeannewInstance()Instantiate and return a new DynaBean instance, associated with this DynaClass.voidsetUseColumnLabel(boolean useColumnLabel)Set whether the column label or name should be used for the property name.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
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 thepropertieslist.
-
columnNameXref
private java.util.Map<java.lang.String,java.lang.String> columnNameXref
Cross Reference for column name to dyna property name (needed when lowerCase option is true)
-
-
Method Detail
-
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
-
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).
-
getDynaProperties
public DynaProperty[] getDynaProperties()
Return an array of
ProperyDescriptorsfor the properties currently defined in this DynaClass. If no properties are defined, a zero-length array will be returned.- Specified by:
getDynaPropertiesin interfaceDynaClass- Returns:
- the set of properties for this DynaClass
-
getDynaProperty
public DynaProperty getDynaProperty(java.lang.String name)
Return a property descriptor for the specified property, if it exists; otherwise, return
null.- Specified by:
getDynaPropertyin 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
-
getName
public java.lang.String getName()
Return the name of this DynaClass (analogous to the
getName()method ofjava.lang.Class), which allows the sameDynaClassimplementation class to support different dynamic classes, with different sets of properties.
-
getObject
protected java.lang.Object getObject(java.sql.ResultSet resultSet, java.lang.String name) throws java.sql.SQLExceptionGet a column value from aResultSetfor the specified name.- Parameters:
resultSet- The result setname- The property name- Returns:
- The value
- Throws:
java.sql.SQLException- if an error occurs
-
introspect
protected void introspect(java.sql.ResultSet resultSet) throws java.sql.SQLExceptionIntrospect the metadata associated with our result set, and populate the
propertiesandpropertiesMapinstance variables.- Parameters:
resultSet- TheresultSetwhose metadata is to be introspected- Throws:
java.sql.SQLException- if an error is encountered processing the result set metadata
-
loadClass
protected java.lang.Class<?> loadClass(java.lang.String className) throws java.sql.SQLExceptionLoads and returns the
Classof 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
-
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:
newInstancein interfaceDynaClass- Returns:
- A new
DynaBeaninstance - 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
-
-