|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object | +--org.apache.commons.beanutils.ResultSetDynaClass
Implementation of DynaClass for DynaBeans that wrap the
java.sql.Row objects of a java.sql.ResultSet.
The normal usage pattern is something like:
ResultSet rs = ...;
ResutSetDynaClass rsdc = new ResultSetDynaClass(rs);
Iterator rows = rsdc.iterator();
while (rows.hasNext()) {
DynaBean row = (DynaBean) rows.next();
... process this row ...
}
rs.close();
Each column in the result set will be represented as a DynaBean property of the corresponding name (forced to lower case for portability).
WARNING - Any DynaBean instance returned by
this class, or from the Iterator returned by the
iterator() method, is directly linked to the row that the
underlying result set is currently positioned at. This has the following
implications:
DynaBean instance, you should
no longer use any previous instance.DynaBean references.DynaBean
instance may no longer be used.Any database data that you wish to utilize outside the context of the current row of an open result set must be copied. For example, you could use the following code to create standalone copies of the information in a result set:
ArrayList results = new ArrayList(); // To hold copied list
ResultSetDynaClass rsdc = ...;
DynaProperty properties[] = rsdc.getDynaProperties();
BasicDynaClass bdc =
new BasicDynaClass("foo", BasicDynaBean.class,
rsdc.getDynaProperties());
Iterator rows = rsdc.iterator();
while (rows.hasNext()) {
DynaBean oldRow = (DynaBean) rows.next();
DynaBean newRow = bdc.newInstance();
PropertyUtils.copyProperties(newRow, oldRow);
results.add(newRow);
}
| Field Summary | |
protected DynaProperty[] |
properties
The set of dynamic properties that are part of this DynaClass. |
protected java.util.HashMap |
propertiesMap
The set of dynamic properties that are part of this DynaClass, keyed by the property name. |
protected java.sql.ResultSet |
resultSet
The ResultSet we are wrapping. |
| Constructor Summary | |
ResultSetDynaClass(java.sql.ResultSet resultSet)
Construct a new ResultSetDynaClass for the specified ResultSet. |
|
| Method Summary | |
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 |
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.ClassDynaClass implementation class to support
different dynamic classes, with different sets of properties. |
(package private) java.sql.ResultSet |
getResultSet()
Return the result set we are wrapping. |
protected void |
introspect()
Introspect the metadata associated with our result set, and populate the properties and propertiesMap instance
variables. |
java.util.Iterator |
iterator()
Return an Iterator of DynaBean instances for
each row of the wrapped ResultSet, in "forward" order. |
protected java.lang.Class |
loadClass(java.lang.String className)
Loads the class of the given name which by default uses the class loader used to load this library. |
DynaBean |
newInstance()
Instantiate and return a new DynaBean instance, associated with this DynaClass. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected DynaProperty[] properties
protected java.util.HashMap propertiesMap
properties list.
protected java.sql.ResultSet resultSet
The ResultSet we are wrapping.
| Constructor Detail |
public ResultSetDynaClass(java.sql.ResultSet resultSet)
throws java.sql.SQLException
Construct a new ResultSetDynaClass for the specified
ResultSet.
resultSet - The result set to be wrapped
java.lang.NullPointerException - if resultSet
is false
java.sql.SQLException - if the metadata for this result set
cannot be introspected| Method Detail |
public java.lang.String getName()
getName() method of java.lang.ClassDynaClass implementation class to support
different dynamic classes, with different sets of properties.
getName in interface DynaClasspublic DynaProperty getDynaProperty(java.lang.String name)
null.
getDynaProperty in interface DynaClassname - Name of the dynamic property for which a descriptor
is requested
java.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.
FIXME - Should we really be implementing
getBeanInfo() instead, which returns property descriptors
and a bunch of other stuff?
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. The Iterator that
is returned by iterator() will create DynaBean instances
for each row as needed.
newInstance in interface DynaClassjava.lang.IllegalAccessException - if the Class or the appropriate
constructor is not accessible
java.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 java.util.Iterator iterator()
Return an Iterator of DynaBean instances for
each row of the wrapped ResultSet, in "forward" order.
Unless the underlying result set supports scrolling, this method
should be called only once.
java.sql.ResultSet getResultSet()
Return the result set we are wrapping.
protected void introspect()
throws java.sql.SQLException
Introspect the metadata associated with our result set, and populate
the properties and propertiesMap instance
variables.
java.sql.SQLException - if an error is encountered processing the
result set metadata
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
metadata - is the result set metadatai - is the column index in the metadata
java.sql.SQLException
protected java.lang.Class loadClass(java.lang.String className)
throws java.sql.SQLException
Loads the class of the given name which by default uses the class loader used to load this library. Dervations of this class could implement alternative class loading policies such as using custom ClassLoader or using the Threads's context class loader etc.
java.sql.SQLException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||