You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by dg...@apache.org on 2003/10/24 06:25:25 UTC
cvs commit: jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils ResultSetHandler.java ProxyFactory.java DbUtils.java QueryRunner.java
dgraham 2003/10/23 21:25:25
Modified: dbutils/src/java/org/apache/commons/dbutils/handlers
MapHandler.java BeanListHandler.java
BeanHandler.java MapListHandler.java
ScalarHandler.java ArrayListHandler.java
ArrayHandler.java
dbutils/src/java/org/apache/commons/dbutils
ResultSetHandler.java ProxyFactory.java
DbUtils.java QueryRunner.java
Log:
Removed tabs.
Revision Changes Path
1.4 +42 -42 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/MapHandler.java
Index: MapHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/MapHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MapHandler.java 24 Oct 2003 04:01:52 -0000 1.3
+++ MapHandler.java 24 Oct 2003 04:25:24 -0000 1.4
@@ -79,44 +79,44 @@
*/
public class MapHandler implements ResultSetHandler {
- /**
- * The RowProcessor implementation to use when converting rows
- * into Maps.
- */
- private RowProcessor convert = BasicRowProcessor.instance();
+ /**
+ * The RowProcessor implementation to use when converting rows
+ * into Maps.
+ */
+ private RowProcessor convert = BasicRowProcessor.instance();
- /**
- * Creates a new instance of MapHandler using a
- * <code>BasicRowProcessor</code> for conversion.
- */
- public MapHandler() {
- super();
- }
+ /**
+ * Creates a new instance of MapHandler using a
+ * <code>BasicRowProcessor</code> for conversion.
+ */
+ public MapHandler() {
+ super();
+ }
- /**
- * Creates a new instance of MapHandler.
- *
- * @param convert The <code>RowProcessor</code> implementation
- * to use when converting rows into Maps.
- */
- public MapHandler(RowProcessor convert) {
- super();
- this.convert = convert;
- }
+ /**
+ * Creates a new instance of MapHandler.
+ *
+ * @param convert The <code>RowProcessor</code> implementation
+ * to use when converting rows into Maps.
+ */
+ public MapHandler(RowProcessor convert) {
+ super();
+ this.convert = convert;
+ }
- /**
- * Converts the first row in the <code>ResultSet</code> into a
- * <code>Map</code>.
- *
- * @return A <code>Map</code> with the values from the first row or
- * <code>null</code> if there are no rows in the <code>ResultSet</code>.
- *
- * @throws SQLException
- *
- * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
- */
- public Object handle(ResultSet rs) throws SQLException {
- return rs.next() ? this.convert.toMap(rs) : null;
- }
+ /**
+ * Converts the first row in the <code>ResultSet</code> into a
+ * <code>Map</code>.
+ *
+ * @return A <code>Map</code> with the values from the first row or
+ * <code>null</code> if there are no rows in the <code>ResultSet</code>.
+ *
+ * @throws SQLException
+ *
+ * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
+ */
+ public Object handle(ResultSet rs) throws SQLException {
+ return rs.next() ? this.convert.toMap(rs) : null;
+ }
}
1.4 +50 -50 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/BeanListHandler.java
Index: BeanListHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/BeanListHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BeanListHandler.java 24 Oct 2003 04:01:52 -0000 1.3
+++ BeanListHandler.java 24 Oct 2003 04:25:24 -0000 1.4
@@ -80,52 +80,52 @@
*/
public class BeanListHandler implements ResultSetHandler {
- /**
- * The Class of beans produced by this handler.
- */
- private Class type = null;
+ /**
+ * The Class of beans produced by this handler.
+ */
+ private Class type = null;
- /**
- * The RowProcessor implementation to use when converting rows
- * into beans.
- */
- private RowProcessor convert = BasicRowProcessor.instance();
+ /**
+ * The RowProcessor implementation to use when converting rows
+ * into beans.
+ */
+ private RowProcessor convert = BasicRowProcessor.instance();
- /**
- * Creates a new instance of BeanListHandler.
- *
- * @param type The Class that objects returned from <code>handle()</code>
- * are created from.
- */
- public BeanListHandler(Class type) {
- this.type = type;
- }
+ /**
+ * Creates a new instance of BeanListHandler.
+ *
+ * @param type The Class that objects returned from <code>handle()</code>
+ * are created from.
+ */
+ public BeanListHandler(Class type) {
+ this.type = type;
+ }
- /**
- * Creates a new instance of BeanListHandler.
- *
- * @param type The Class that objects returned from <code>handle()</code>
- * are created from.
- * @param convert The <code>RowProcessor</code> implementation
- * to use when converting rows into beans.
- */
- public BeanListHandler(Class type, RowProcessor convert) {
- this.type = type;
- this.convert = convert;
- }
+ /**
+ * Creates a new instance of BeanListHandler.
+ *
+ * @param type The Class that objects returned from <code>handle()</code>
+ * are created from.
+ * @param convert The <code>RowProcessor</code> implementation
+ * to use when converting rows into beans.
+ */
+ public BeanListHandler(Class type, RowProcessor convert) {
+ this.type = type;
+ this.convert = convert;
+ }
- /**
- * Convert the <code>ResultSet</code> rows into a <code>List</code> of
- * beans with the <code>Class</code> given in the constructor.
- *
- * @return A <code>List</code> of beans (one for each row), never
- * <code>null</code>.
- *
- * @throws SQLException
- * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
- */
- public Object handle(ResultSet rs) throws SQLException {
- return this.convert.toBeanList(rs, type);
- }
+ /**
+ * Convert the <code>ResultSet</code> rows into a <code>List</code> of
+ * beans with the <code>Class</code> given in the constructor.
+ *
+ * @return A <code>List</code> of beans (one for each row), never
+ * <code>null</code>.
+ *
+ * @throws SQLException
+ * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
+ */
+ public Object handle(ResultSet rs) throws SQLException {
+ return this.convert.toBeanList(rs, type);
+ }
}
1.4 +50 -50 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/BeanHandler.java
Index: BeanHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/BeanHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- BeanHandler.java 24 Oct 2003 04:01:52 -0000 1.3
+++ BeanHandler.java 24 Oct 2003 04:25:24 -0000 1.4
@@ -78,52 +78,52 @@
*/
public class BeanHandler implements ResultSetHandler {
- /**
- * The Class of beans produced by this handler.
- */
- private Class type = null;
+ /**
+ * The Class of beans produced by this handler.
+ */
+ private Class type = null;
- /**
- * The RowProcessor implementation to use when converting rows
- * into beans.
- */
- private RowProcessor convert = BasicRowProcessor.instance();
+ /**
+ * The RowProcessor implementation to use when converting rows
+ * into beans.
+ */
+ private RowProcessor convert = BasicRowProcessor.instance();
- /**
- * Creates a new instance of BeanHandler.
- *
- * @param type The Class that objects returned from <code>handle()</code>
- * are created from.
- */
- public BeanHandler(Class type) {
- this.type = type;
- }
+ /**
+ * Creates a new instance of BeanHandler.
+ *
+ * @param type The Class that objects returned from <code>handle()</code>
+ * are created from.
+ */
+ public BeanHandler(Class type) {
+ this.type = type;
+ }
- /**
- * Creates a new instance of BeanHandler.
- *
- * @param type The Class that objects returned from <code>handle()</code>
- * are created from.
- * @param convert The <code>RowProcessor</code> implementation
- * to use when converting rows into beans.
- */
- public BeanHandler(Class type, RowProcessor convert) {
- this.type = type;
- this.convert = convert;
- }
+ /**
+ * Creates a new instance of BeanHandler.
+ *
+ * @param type The Class that objects returned from <code>handle()</code>
+ * are created from.
+ * @param convert The <code>RowProcessor</code> implementation
+ * to use when converting rows into beans.
+ */
+ public BeanHandler(Class type, RowProcessor convert) {
+ this.type = type;
+ this.convert = convert;
+ }
- /**
- * Convert the first row of the <code>ResultSet</code> into a bean with the
- * <code>Class</code> given in the constructor.
- *
- * @return An initialized JavaBean or <code>null</code> if there were no
- * rows in the <code>ResultSet</code>.
- *
- * @throws SQLException
- * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
- */
- public Object handle(ResultSet rs) throws SQLException {
- return rs.next() ? this.convert.toBean(rs, this.type) : null;
- }
+ /**
+ * Convert the first row of the <code>ResultSet</code> into a bean with the
+ * <code>Class</code> given in the constructor.
+ *
+ * @return An initialized JavaBean or <code>null</code> if there were no
+ * rows in the <code>ResultSet</code>.
+ *
+ * @throws SQLException
+ * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
+ */
+ public Object handle(ResultSet rs) throws SQLException {
+ return rs.next() ? this.convert.toBean(rs, this.type) : null;
+ }
}
1.4 +47 -47 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/MapListHandler.java
Index: MapListHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/MapListHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MapListHandler.java 24 Oct 2003 04:01:52 -0000 1.3
+++ MapListHandler.java 24 Oct 2003 04:25:24 -0000 1.4
@@ -81,50 +81,50 @@
*/
public class MapListHandler implements ResultSetHandler {
- /**
- * The RowProcessor implementation to use when converting rows
- * into Maps.
- */
- private RowProcessor convert = BasicRowProcessor.instance();
-
- /**
- * Creates a new instance of MapListHandler using a
- * <code>BasicRowProcessor</code> for conversion.
- */
- public MapListHandler() {
- super();
- }
-
- /**
- * Creates a new instance of MapListHandler.
- *
- * @param convert The <code>RowProcessor</code> implementation
- * to use when converting rows into Maps.
- */
- public MapListHandler(RowProcessor convert) {
- super();
- this.convert = convert;
- }
-
- /**
- * Converts the <code>ResultSet</code> rows into a <code>List</code> of
- * <code>Map</code> objects.
- *
- * @return A <code>List</code> of <code>Map</code>s, never null.
- *
- * @throws SQLException
- *
- * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
- */
- public Object handle(ResultSet rs) throws SQLException {
-
- List results = new ArrayList();
-
- while (rs.next()) {
- results.add(this.convert.toMap(rs));
- }
+ /**
+ * The RowProcessor implementation to use when converting rows
+ * into Maps.
+ */
+ private RowProcessor convert = BasicRowProcessor.instance();
+
+ /**
+ * Creates a new instance of MapListHandler using a
+ * <code>BasicRowProcessor</code> for conversion.
+ */
+ public MapListHandler() {
+ super();
+ }
+
+ /**
+ * Creates a new instance of MapListHandler.
+ *
+ * @param convert The <code>RowProcessor</code> implementation
+ * to use when converting rows into Maps.
+ */
+ public MapListHandler(RowProcessor convert) {
+ super();
+ this.convert = convert;
+ }
+
+ /**
+ * Converts the <code>ResultSet</code> rows into a <code>List</code> of
+ * <code>Map</code> objects.
+ *
+ * @return A <code>List</code> of <code>Map</code>s, never null.
+ *
+ * @throws SQLException
+ *
+ * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
+ */
+ public Object handle(ResultSet rs) throws SQLException {
+
+ List results = new ArrayList();
+
+ while (rs.next()) {
+ results.add(this.convert.toMap(rs));
+ }
- return results;
- }
+ return results;
+ }
}
1.4 +67 -67 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/ScalarHandler.java
Index: ScalarHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/ScalarHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ScalarHandler.java 24 Oct 2003 04:01:52 -0000 1.3
+++ ScalarHandler.java 24 Oct 2003 04:25:24 -0000 1.4
@@ -76,68 +76,68 @@
*/
public class ScalarHandler implements ResultSetHandler {
- /**
- * The column number to retrieve.
- */
- private int columnIndex = 1;
-
- /**
- * The column name to retrieve. Either columnName or columnIndex
- * will be used but never both.
- */
- private String columnName = null;
-
- /**
- * Creates a new instance of ScalarHandler. The first column will
- * be returned from <code>handle()</code>.
- */
- public ScalarHandler() {
- super();
- }
-
- /**
- * Creates a new instance of ScalarHandler.
- *
- * @param columnIndex The index of the column to retrieve from the
- * <code>ResultSet</code>.
- */
- public ScalarHandler(int columnIndex) {
- this.columnIndex = columnIndex;
- }
-
- /**
- * Creates a new instance of ScalarHandler.
- *
- * @param columnName The name of the column to retrieve from the
- * <code>ResultSet</code>.
- */
- public ScalarHandler(String columnName) {
- this.columnName = columnName;
- }
-
- /**
- * Returns one <code>ResultSet</code> column as an object via the
- * <code>ResultSet.getObject()</code> method that performs type
- * conversions.
- *
- * @return The column or <code>null</code> if there are no rows in
- * the <code>ResultSet</code>.
- *
- * @throws SQLException
- *
- * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
- */
- public Object handle(ResultSet rs) throws SQLException {
-
- if (rs.next()) {
- if (this.columnName == null) {
- return rs.getObject(this.columnIndex);
- } else {
- return rs.getObject(this.columnName);
- }
-
- } else {
- return null;
- }
- }
+ /**
+ * The column number to retrieve.
+ */
+ private int columnIndex = 1;
+
+ /**
+ * The column name to retrieve. Either columnName or columnIndex
+ * will be used but never both.
+ */
+ private String columnName = null;
+
+ /**
+ * Creates a new instance of ScalarHandler. The first column will
+ * be returned from <code>handle()</code>.
+ */
+ public ScalarHandler() {
+ super();
+ }
+
+ /**
+ * Creates a new instance of ScalarHandler.
+ *
+ * @param columnIndex The index of the column to retrieve from the
+ * <code>ResultSet</code>.
+ */
+ public ScalarHandler(int columnIndex) {
+ this.columnIndex = columnIndex;
+ }
+
+ /**
+ * Creates a new instance of ScalarHandler.
+ *
+ * @param columnName The name of the column to retrieve from the
+ * <code>ResultSet</code>.
+ */
+ public ScalarHandler(String columnName) {
+ this.columnName = columnName;
+ }
+
+ /**
+ * Returns one <code>ResultSet</code> column as an object via the
+ * <code>ResultSet.getObject()</code> method that performs type
+ * conversions.
+ *
+ * @return The column or <code>null</code> if there are no rows in
+ * the <code>ResultSet</code>.
+ *
+ * @throws SQLException
+ *
+ * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
+ */
+ public Object handle(ResultSet rs) throws SQLException {
+
+ if (rs.next()) {
+ if (this.columnName == null) {
+ return rs.getObject(this.columnIndex);
+ } else {
+ return rs.getObject(this.columnName);
+ }
+
+ } else {
+ return null;
+ }
+ }
}
1.4 +48 -48 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/ArrayListHandler.java
Index: ArrayListHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/ArrayListHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ArrayListHandler.java 24 Oct 2003 04:01:52 -0000 1.3
+++ ArrayListHandler.java 24 Oct 2003 04:25:24 -0000 1.4
@@ -82,51 +82,51 @@
*/
public class ArrayListHandler implements ResultSetHandler {
- /**
- * The RowProcessor implementation to use when converting rows
- * into Object[]s.
- */
- private RowProcessor convert = BasicRowProcessor.instance();
-
- /**
- * Creates a new instance of ArrayListHandler using a
- * <code>BasicRowProcessor</code> for conversions.
- */
- public ArrayListHandler() {
- super();
- }
-
- /**
- * Creates a new instance of ArrayListHandler.
- *
- * @param convert The <code>RowProcessor</code> implementation
- * to use when converting rows into Object[]s.
- */
- public ArrayListHandler(RowProcessor convert) {
- super();
- this.convert = convert;
- }
-
- /**
- * Convert each row's columns into an <code>Object[]</code> and store them
- * in a <code>List</code> in the same order they are returned from the
- * <code>ResultSet.next()</code> method.
- *
- * @return A <code>List</code> of <code>Object[]</code>s, never
- * <code>null</code>.
- *
- * @throws SQLException
- * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
- */
- public Object handle(ResultSet rs) throws SQLException {
-
- List result = new ArrayList();
-
- while (rs.next()) {
- result.add(this.convert.toArray(rs));
- }
+ /**
+ * The RowProcessor implementation to use when converting rows
+ * into Object[]s.
+ */
+ private RowProcessor convert = BasicRowProcessor.instance();
+
+ /**
+ * Creates a new instance of ArrayListHandler using a
+ * <code>BasicRowProcessor</code> for conversions.
+ */
+ public ArrayListHandler() {
+ super();
+ }
+
+ /**
+ * Creates a new instance of ArrayListHandler.
+ *
+ * @param convert The <code>RowProcessor</code> implementation
+ * to use when converting rows into Object[]s.
+ */
+ public ArrayListHandler(RowProcessor convert) {
+ super();
+ this.convert = convert;
+ }
+
+ /**
+ * Convert each row's columns into an <code>Object[]</code> and store them
+ * in a <code>List</code> in the same order they are returned from the
+ * <code>ResultSet.next()</code> method.
+ *
+ * @return A <code>List</code> of <code>Object[]</code>s, never
+ * <code>null</code>.
+ *
+ * @throws SQLException
+ * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
+ */
+ public Object handle(ResultSet rs) throws SQLException {
+
+ List result = new ArrayList();
+
+ while (rs.next()) {
+ result.add(this.convert.toArray(rs));
+ }
- return result;
- }
+ return result;
+ }
}
1.4 +40 -40 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/ArrayHandler.java
Index: ArrayHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/handlers/ArrayHandler.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ArrayHandler.java 24 Oct 2003 04:01:52 -0000 1.3
+++ ArrayHandler.java 24 Oct 2003 04:25:24 -0000 1.4
@@ -80,42 +80,42 @@
*/
public class ArrayHandler implements ResultSetHandler {
- /**
- * The RowProcessor implementation to use when converting rows
- * into arrays.
- */
- private RowProcessor convert = BasicRowProcessor.instance();
+ /**
+ * The RowProcessor implementation to use when converting rows
+ * into arrays.
+ */
+ private RowProcessor convert = BasicRowProcessor.instance();
- /**
- * Creates a new instance of ArrayHandler using a
- * <code>BasicRowProcessor</code> for conversion.
- */
- public ArrayHandler() {
- super();
- }
+ /**
+ * Creates a new instance of ArrayHandler using a
+ * <code>BasicRowProcessor</code> for conversion.
+ */
+ public ArrayHandler() {
+ super();
+ }
- /**
- * Creates a new instance of ArrayHandler.
- *
- * @param convert The <code>RowProcessor</code> implementation
- * to use when converting rows into arrays.
- */
- public ArrayHandler(RowProcessor convert) {
- super();
- this.convert = convert;
- }
+ /**
+ * Creates a new instance of ArrayHandler.
+ *
+ * @param convert The <code>RowProcessor</code> implementation
+ * to use when converting rows into arrays.
+ */
+ public ArrayHandler(RowProcessor convert) {
+ super();
+ this.convert = convert;
+ }
- /**
- * Places the column values from the first row in an <code>Object[]</code>.
- *
- * @return An Object[] or <code>null</code> if there are no rows in the
- * <code>ResultSet</code>.
- *
- * @throws SQLException
- * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
- */
- public Object handle(ResultSet rs) throws SQLException {
- return rs.next() ? this.convert.toArray(rs) : null;
- }
+ /**
+ * Places the column values from the first row in an <code>Object[]</code>.
+ *
+ * @return An Object[] or <code>null</code> if there are no rows in the
+ * <code>ResultSet</code>.
+ *
+ * @throws SQLException
+ * @see org.apache.commons.dbutils.ResultSetHandler#handle(java.sql.ResultSet)
+ */
+ public Object handle(ResultSet rs) throws SQLException {
+ return rs.next() ? this.convert.toArray(rs) : null;
+ }
}
1.7 +16 -16 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ResultSetHandler.java
Index: ResultSetHandler.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ResultSetHandler.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ResultSetHandler.java 22 Oct 2003 23:33:25 -0000 1.6
+++ ResultSetHandler.java 24 Oct 2003 04:25:25 -0000 1.7
@@ -72,18 +72,18 @@
*/
public interface ResultSetHandler {
- /**
- * Turn the <code>ResultSet</code> into an Object.
- *
- * @param rs The <code>ResultSet</code> to handle. It has not been touched
- * before being passed to this method.
- *
- * @return An Object initialized with <code>ResultSet</code> data. It is
- * legal for implementations to return <code>null</code> if the
- * <code>ResultSet</code> contained 0 rows.
- *
- * @throws SQLException
- */
- public Object handle(ResultSet rs) throws SQLException;
+ /**
+ * Turn the <code>ResultSet</code> into an Object.
+ *
+ * @param rs The <code>ResultSet</code> to handle. It has not been touched
+ * before being passed to this method.
+ *
+ * @return An Object initialized with <code>ResultSet</code> data. It is
+ * legal for implementations to return <code>null</code> if the
+ * <code>ResultSet</code> contained 0 rows.
+ *
+ * @throws SQLException
+ */
+ public Object handle(ResultSet rs) throws SQLException;
}
1.5 +139 -139 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ProxyFactory.java
Index: ProxyFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/ProxyFactory.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ProxyFactory.java 24 Oct 2003 04:01:52 -0000 1.4
+++ ProxyFactory.java 24 Oct 2003 04:25:25 -0000 1.5
@@ -83,141 +83,141 @@
*/
public class ProxyFactory {
- /**
- * Class[] for CallableStatement interface.
- */
- private static final Class[] callableStatementClass =
- new Class[] { CallableStatement.class };
-
- /**
- * Class[] for Connection interface.
- */
- private static final Class[] connectionClass =
- new Class[] { Connection.class };
-
- /**
- * Class[] for Driver interface.
- */
- private static final Class[] driverClass = new Class[] { Driver.class };
-
- /**
- * The Singleton instance of this class.
- */
- private static final ProxyFactory instance = new ProxyFactory();
-
- /**
- * Class[] for ResultSetMetaData interface.
- */
- private static final Class[] metaClass =
- new Class[] { ResultSetMetaData.class };
-
- /**
- * Class[] for PreparedStatement interface.
- */
- private static final Class[] preparedStatementClass =
- new Class[] { PreparedStatement.class };
-
- /**
- * Class[] for ResultSet interface.
- */
- private static final Class[] resultSetClass =
- new Class[] { ResultSet.class };
-
- /**
- * Class[] for Statement interface.
- */
- private static final Class[] statementClass =
- new Class[] { Statement.class };
-
- /**
- * Returns the Singleton instance of this class.
- */
- public static ProxyFactory instance() {
- return instance;
- }
-
- /**
- * Protected constructor for ProxyFactory subclasses to use.
- */
- protected ProxyFactory() {
- super();
- }
-
- /**
- * Creates a new proxy <code>CallableStatement</code> object.
- * @param handler The handler that intercepts/overrides method calls.
- */
- public PreparedStatement createCallableStatement(InvocationHandler handler) {
- return (CallableStatement) Proxy.newProxyInstance(
- handler.getClass().getClassLoader(),
- callableStatementClass,
- handler);
- }
-
- /**
- * Creates a new proxy <code>Connection</code> object.
- * @param handler The handler that intercepts/overrides method calls.
- */
- public Connection createConnection(InvocationHandler handler) {
- return (Connection) Proxy.newProxyInstance(
- handler.getClass().getClassLoader(),
- connectionClass,
- handler);
- }
-
- /**
- * Creates a new proxy <code>Driver</code> object.
- * @param handler The handler that intercepts/overrides method calls.
- */
- public Driver createDriver(InvocationHandler handler) {
- return (Driver) Proxy.newProxyInstance(
- handler.getClass().getClassLoader(),
- driverClass,
- handler);
- }
-
- /**
- * Creates a new proxy <code>PreparedStatement</code> object.
- * @param handler The handler that intercepts/overrides method calls.
- */
- public PreparedStatement createPreparedStatement(InvocationHandler handler) {
- return (PreparedStatement) Proxy.newProxyInstance(
- handler.getClass().getClassLoader(),
- preparedStatementClass,
- handler);
- }
-
- /**
- * Creates a new proxy <code>ResultSet</code> object.
- * @param handler The handler that intercepts/overrides method calls.
- */
- public ResultSet createResultSet(InvocationHandler handler) {
- return (ResultSet) Proxy.newProxyInstance(
- handler.getClass().getClassLoader(),
- resultSetClass,
- handler);
- }
-
- /**
- * Creates a new proxy <code>ResultSetMetaData</code> object.
- * @param handler The handler that intercepts/overrides method calls.
- */
- public ResultSetMetaData createResultSetMetaData(InvocationHandler handler) {
- return (ResultSetMetaData) Proxy.newProxyInstance(
- handler.getClass().getClassLoader(),
- metaClass,
- handler);
- }
-
- /**
- * Creates a new proxy <code>Statement</code> object.
- * @param handler The handler that intercepts/overrides method calls.
- */
- public Statement createStatement(InvocationHandler handler) {
- return (Statement) Proxy.newProxyInstance(
- handler.getClass().getClassLoader(),
- statementClass,
- handler);
- }
+ /**
+ * Class[] for CallableStatement interface.
+ */
+ private static final Class[] callableStatementClass =
+ new Class[] { CallableStatement.class };
+
+ /**
+ * Class[] for Connection interface.
+ */
+ private static final Class[] connectionClass =
+ new Class[] { Connection.class };
+
+ /**
+ * Class[] for Driver interface.
+ */
+ private static final Class[] driverClass = new Class[] { Driver.class };
+
+ /**
+ * The Singleton instance of this class.
+ */
+ private static final ProxyFactory instance = new ProxyFactory();
+
+ /**
+ * Class[] for ResultSetMetaData interface.
+ */
+ private static final Class[] metaClass =
+ new Class[] { ResultSetMetaData.class };
+
+ /**
+ * Class[] for PreparedStatement interface.
+ */
+ private static final Class[] preparedStatementClass =
+ new Class[] { PreparedStatement.class };
+
+ /**
+ * Class[] for ResultSet interface.
+ */
+ private static final Class[] resultSetClass =
+ new Class[] { ResultSet.class };
+
+ /**
+ * Class[] for Statement interface.
+ */
+ private static final Class[] statementClass =
+ new Class[] { Statement.class };
+
+ /**
+ * Returns the Singleton instance of this class.
+ */
+ public static ProxyFactory instance() {
+ return instance;
+ }
+
+ /**
+ * Protected constructor for ProxyFactory subclasses to use.
+ */
+ protected ProxyFactory() {
+ super();
+ }
+
+ /**
+ * Creates a new proxy <code>CallableStatement</code> object.
+ * @param handler The handler that intercepts/overrides method calls.
+ */
+ public PreparedStatement createCallableStatement(InvocationHandler handler) {
+ return (CallableStatement) Proxy.newProxyInstance(
+ handler.getClass().getClassLoader(),
+ callableStatementClass,
+ handler);
+ }
+
+ /**
+ * Creates a new proxy <code>Connection</code> object.
+ * @param handler The handler that intercepts/overrides method calls.
+ */
+ public Connection createConnection(InvocationHandler handler) {
+ return (Connection) Proxy.newProxyInstance(
+ handler.getClass().getClassLoader(),
+ connectionClass,
+ handler);
+ }
+
+ /**
+ * Creates a new proxy <code>Driver</code> object.
+ * @param handler The handler that intercepts/overrides method calls.
+ */
+ public Driver createDriver(InvocationHandler handler) {
+ return (Driver) Proxy.newProxyInstance(
+ handler.getClass().getClassLoader(),
+ driverClass,
+ handler);
+ }
+
+ /**
+ * Creates a new proxy <code>PreparedStatement</code> object.
+ * @param handler The handler that intercepts/overrides method calls.
+ */
+ public PreparedStatement createPreparedStatement(InvocationHandler handler) {
+ return (PreparedStatement) Proxy.newProxyInstance(
+ handler.getClass().getClassLoader(),
+ preparedStatementClass,
+ handler);
+ }
+
+ /**
+ * Creates a new proxy <code>ResultSet</code> object.
+ * @param handler The handler that intercepts/overrides method calls.
+ */
+ public ResultSet createResultSet(InvocationHandler handler) {
+ return (ResultSet) Proxy.newProxyInstance(
+ handler.getClass().getClassLoader(),
+ resultSetClass,
+ handler);
+ }
+
+ /**
+ * Creates a new proxy <code>ResultSetMetaData</code> object.
+ * @param handler The handler that intercepts/overrides method calls.
+ */
+ public ResultSetMetaData createResultSetMetaData(InvocationHandler handler) {
+ return (ResultSetMetaData) Proxy.newProxyInstance(
+ handler.getClass().getClassLoader(),
+ metaClass,
+ handler);
+ }
+
+ /**
+ * Creates a new proxy <code>Statement</code> object.
+ * @param handler The handler that intercepts/overrides method calls.
+ */
+ public Statement createStatement(InvocationHandler handler) {
+ return (Statement) Proxy.newProxyInstance(
+ handler.getClass().getClassLoader(),
+ statementClass,
+ handler);
+ }
}
1.42 +48 -45 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/DbUtils.java
Index: DbUtils.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/DbUtils.java,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- DbUtils.java 24 Oct 2003 04:01:52 -0000 1.41
+++ DbUtils.java 24 Oct 2003 04:25:25 -0000 1.42
@@ -58,7 +58,7 @@
* <http://www.apache.org/>.
*
*/
-
+
package org.apache.commons.dbutils;
import java.io.PrintWriter;
@@ -76,7 +76,7 @@
* @author David Graham
*/
public final class DbUtils {
-
+
/**
* Close a <code>Connection</code>, avoid closing if null.
*/
@@ -85,7 +85,7 @@
conn.close();
}
}
-
+
/**
* Close a <code>ResultSet</code>, avoid closing if null.
*/
@@ -103,7 +103,7 @@
stmt.close();
}
}
-
+
/**
* Close a <code>Connection</code>, avoid closing if null and hide
* any exceptions that occur.
@@ -115,18 +115,21 @@
// quiet
}
}
-
+
/**
* Close a <code>Connection</code>, <code>Statement</code> and
* <code>ResultSet</code>. Avoid closing if null and hide any
* exceptions that occur.
*/
- public static void closeQuietly(Connection conn, Statement stmt, ResultSet rs) {
+ public static void closeQuietly(
+ Connection conn,
+ Statement stmt,
+ ResultSet rs) {
closeQuietly(rs);
closeQuietly(stmt);
closeQuietly(conn);
}
-
+
/**
* Close a <code>ResultSet</code>, avoid closing if null and hide
* any exceptions that occur.
@@ -138,7 +141,7 @@
// quiet
}
}
-
+
/**
* Close a <code>Statement</code>, avoid closing if null and hide
* any exceptions that occur.
@@ -150,7 +153,7 @@
// quiet
}
}
-
+
/**
* Commits a <code>Connection</code> then closes it, avoid closing if null.
*/
@@ -160,7 +163,7 @@
conn.close();
}
}
-
+
/**
* Commits a <code>Connection</code> then closes it, avoid closing if null
* and hide any exceptions that occur.
@@ -172,38 +175,38 @@
// quiet
}
}
-
+
/**
* Loads and registers a database driver class.
* If this succeeds, it returns true, else it returns false.
*/
- public static boolean loadDriver(String driverClassName) {
- try {
- Class.forName(driverClassName).newInstance();
- return true;
-
- } catch (ClassNotFoundException e) {
- // TODO Logging?
- //e.printStackTrace();
- return false;
-
- } catch (IllegalAccessException e) {
- // TODO Logging?
- //e.printStackTrace();
-
- // Constructor is private, OK for DriverManager contract
- return true;
-
- } catch (InstantiationException e) {
- // TODO Logging?
- //e.printStackTrace();
- return false;
-
- } catch (Throwable t) {
- return false;
- }
- }
-
+ public static boolean loadDriver(String driverClassName) {
+ try {
+ Class.forName(driverClassName).newInstance();
+ return true;
+
+ } catch (ClassNotFoundException e) {
+ // TODO Logging?
+ //e.printStackTrace();
+ return false;
+
+ } catch (IllegalAccessException e) {
+ // TODO Logging?
+ //e.printStackTrace();
+
+ // Constructor is private, OK for DriverManager contract
+ return true;
+
+ } catch (InstantiationException e) {
+ // TODO Logging?
+ //e.printStackTrace();
+ return false;
+
+ } catch (Throwable t) {
+ return false;
+ }
+ }
+
public static void printStackTrace(SQLException sqle) {
printStackTrace(sqle, new PrintWriter(System.err));
}
@@ -219,11 +222,11 @@
}
}
}
-
+
public static void printWarnings(Connection connection) {
printWarnings(connection, new PrintWriter(System.err));
}
-
+
public static void printWarnings(Connection conn, PrintWriter pw) {
if (conn != null) {
try {
@@ -233,7 +236,7 @@
}
}
}
-
+
/**
* Rollback any changes made on the given connection.
* @param conn The database Connection to rollback. A null value is legal.
@@ -244,5 +247,5 @@
conn.rollback();
}
}
-
+
}
1.12 +391 -391 jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/QueryRunner.java
Index: QueryRunner.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/dbutils/src/java/org/apache/commons/dbutils/QueryRunner.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- QueryRunner.java 24 Oct 2003 04:10:21 -0000 1.11
+++ QueryRunner.java 24 Oct 2003 04:25:25 -0000 1.12
@@ -83,393 +83,393 @@
*/
public class QueryRunner {
- /**
- * The DataSource to retrieve connections from.
- */
- protected DataSource ds = null;
-
- /**
- * Constructor for QueryRunner.
- */
- public QueryRunner() {
- super();
- }
-
- /**
- * Constructor for QueryRunner. Methods that do not take a
- * <code>Connection</code> parameter will retrieve connections from this
- * <code>DataSource</code>.
- *
- * @param ds The <code>DataSource</code> to retrieve connections from.
- */
- public QueryRunner(DataSource ds) {
- super();
- this.ds = ds;
- }
-
- /**
- * Fill the <code>PreparedStatement</code> replacement parameters with
- * the given objects.
- * @param stmt
- * @param params Query replacement parameters; <code>null</code> is a valid
- * value to pass in.
- * @throws SQLException
- */
- protected void fillStatement(PreparedStatement stmt, Object[] params)
- throws SQLException {
-
- if (params == null) {
- return;
- }
-
- for (int i = 0; i < params.length; i++) {
- if (params[i] != null) {
- stmt.setObject(i + 1, params[i]);
- } else {
- stmt.setNull(i + 1, Types.OTHER);
- }
- }
- }
-
- /**
- * Returns the <code>DataSource</code> this runner is using.
- */
- public DataSource getDataSource() {
- return this.ds;
- }
-
- /**
- * Execute an SQL SELECT query with a single replacement parameter. The
- * caller is responsible for connection cleanup.
- *
- * @param conn The connection to execute the query in.
- * @param sql The query to execute.
- * @param param The replacement parameter.
- * @param rsh The handler that converts the results into an object.
- * @return The object returned by the handler.
- * @throws SQLException
- */
- public Object query(
- Connection conn,
- String sql,
- Object param,
- ResultSetHandler rsh)
- throws SQLException {
-
- return this.query(conn, sql, new Object[] { param }, rsh);
- }
-
- /**
- * Execute an SQL SELECT query with replacement parameters. The
- * caller is responsible for connection cleanup.
- *
- * @param conn The connection to execute the query in.
- * @param sql The query to execute.
- * @param params The replacement parameters.
- * @param rsh The handler that converts the results into an object.
- * @return The object returned by the handler.
- * @throws SQLException
- */
- public Object query(
- Connection conn,
- String sql,
- Object[] params,
- ResultSetHandler rsh)
- throws SQLException {
-
- PreparedStatement stmt = null;
- ResultSet rs = null;
- Object result = null;
-
- try {
- stmt = conn.prepareStatement(sql);
- this.fillStatement(stmt, params);
-
- rs = this.wrap(stmt.executeQuery());
-
- result = rsh.handle(rs);
-
- } catch (SQLException e) {
- this.rethrow(e, sql, params);
-
- } finally {
- DbUtils.closeQuietly(rs);
- DbUtils.closeQuietly(stmt);
- }
-
- return result;
- }
-
- /**
- * Execute an SQL SELECT query without any replacement parameters. The
- * caller is responsible for connection cleanup.
- *
- * @param conn The connection to execute the query in.
- * @param sql The query to execute.
- * @param rsh The handler that converts the results into an object.
- * @return The object returned by the handler.
- * @throws SQLException
- */
- public Object query(Connection conn, String sql, ResultSetHandler rsh)
- throws SQLException {
-
- return this.query(conn, sql, (Object[]) null, rsh);
- }
-
- /**
- * Executes the given SELECT SQL with a single replacement parameter.
- * The <code>Connection</code> is retrieved from the
- * <code>DataSource</code> set in the constructor.
- *
- * @param sql The SQL statement to execute.
- * @param param The replacement parameter.
- * @param rsh The handler used to create the result object from
- * the <code>ResultSet</code>.
- *
- * @return An object generated by the handler.
- * @throws SQLException
- */
- public Object query(String sql, Object param, ResultSetHandler rsh)
- throws SQLException {
-
- return this.query(sql, new Object[] { param }, rsh);
- }
-
- /**
- * Executes the given SELECT SQL query and returns a result object.
- * The <code>Connection</code> is retrieved from the
- * <code>DataSource</code> set in the constructor.
- *
- * @param sql The SQL statement to execute.
- * @param params Initialize the PreparedStatement's IN parameters with
- * this array.
- *
- * @param rsh The handler used to create the result object from
- * the <code>ResultSet</code>.
- *
- * @return An object generated by the handler.
- * @throws SQLException
- */
- public Object query(String sql, Object[] params, ResultSetHandler rsh)
- throws SQLException {
-
- Connection conn = this.ds.getConnection();
-
- Object result = null;
-
- try {
- result = this.query(conn, sql, params, rsh);
-
- } finally {
- DbUtils.closeQuietly(conn);
- }
-
- return result;
- }
-
- /**
- * Executes the given SELECT SQL without any replacement parameters.
- * The <code>Connection</code> is retrieved from the
- * <code>DataSource</code> set in the constructor.
- *
- * @param sql The SQL statement to execute.
- * @param rsh The handler used to create the result object from
- * the <code>ResultSet</code>.
- *
- * @return An object generated by the handler.
- * @throws SQLException
- */
- public Object query(String sql, ResultSetHandler rsh) throws SQLException {
- return this.query(sql, (Object[]) null, rsh);
- }
-
- /**
- * Throws a new exception with a more informative error message.
- *
- * @param cause The original exception that will be chained to the new
- * exception when it's rethrown.
- *
- * @param sql The query that was executing when the exception happened.
- * @param params The query replacement paramaters; <code>null</code> is a
- * valid value to pass in.
- *
- * @throws SQLException
- */
- protected void rethrow(SQLException cause, String sql, Object[] params)
- throws SQLException {
-
- StringBuffer msg =
- new StringBuffer(cause.getMessage() + " in query " + sql);
- if (params != null) {
- msg.append(Arrays.asList(params).toString());
- }
-
- SQLException newsqle = new SQLException(msg.toString());
- newsqle.setNextException(cause);
-
- throw newsqle;
- }
-
- /**
- * Sets the <code>DataSource</code> this runner will use to get
- * database connections from. This should be called after creating a
- * runner with the default constructor if you intend to use the
- * execute methods without passing in a <code>Connection</code>.
- *
- * @param dataSource The DataSource to use.
- */
- public void setDataSource(DataSource dataSource) {
- this.ds = dataSource;
- }
-
- /**
- * Execute an SQL INSERT, UPDATE, or DELETE query without replacement
- * parameters.
- *
- * @param conn The connection to use to run the query.
- * @param sql The SQL to execute.
- * @return The number of rows updated.
- * @throws SQLException
- */
- public int update(Connection conn, String sql) throws SQLException {
- return this.update(conn, sql, (Object[]) null);
- }
-
- /**
- * Execute an SQL INSERT, UPDATE, or DELETE query with a single replacement
- * parameter.
- *
- * @param conn The connection to use to run the query.
- * @param sql The SQL to execute.
- * @param param The replacement parameter.
- * @return The number of rows updated.
- * @throws SQLException
- */
- public int update(Connection conn, String sql, Object param)
- throws SQLException {
-
- return this.update(conn, sql, new Object[] { param });
- }
-
- /**
- * Execute an SQL INSERT, UPDATE, or DELETE query.
- *
- * @param conn The connection to use to run the query.
- * @param sql The SQL to execute.
- * @param params The query replacement parameters.
- * @return The number of rows updated.
- * @throws SQLException
- */
- public int update(Connection conn, String sql, Object[] params)
- throws SQLException {
-
- PreparedStatement stmt = null;
- int rows = 0;
-
- try {
- stmt = conn.prepareStatement(sql);
- this.fillStatement(stmt, params);
-
- rows = stmt.executeUpdate();
-
- } catch (SQLException e) {
- this.rethrow(e, sql, params);
-
- } finally {
- DbUtils.closeQuietly(stmt);
- }
-
- return rows;
- }
-
- /**
- * Executes the given INSERT, UPDATE, or DELETE SQL statement without
- * any replacement parameters. The statement is executed in its own
- * transaction that will be committed or rolled back depending on any
- * SQLExceptions thrown. The <code>Connection</code> is retrieved from the
- * <code>DataSource</code> set in the constructor.
- *
- * @param sql The SQL statement to execute.
- * @throws SQLException
- * @return The number of rows updated.
- */
- public int update(String sql) throws SQLException {
- return this.update(sql, (Object[]) null);
- }
-
- /**
- * Executes the given INSERT, UPDATE, or DELETE SQL statement with
- * a single replacement parameter. The statement is executed in its own
- * transaction that will be committed or rolled back depending on any
- * SQLExceptions thrown. The <code>Connection</code> is retrieved from the
- * <code>DataSource</code> set in the constructor.
- *
- * @param sql The SQL statement to execute.
- * @param param The replacement parameter.
- * @throws SQLException
- * @return The number of rows updated.
- */
- public int update(String sql, Object param) throws SQLException {
- return this.update(sql, new Object[] { param });
- }
-
- /**
- * Executes the given INSERT, UPDATE, or DELETE SQL statement. The
- * statement is executed in its own transaction that will be committed or
- * rolled back depending on any SQLExceptions thrown. The
- * <code>Connection</code> is retrieved from the <code>DataSource</code>
- * set in the constructor.
- *
- * @param sql The SQL statement to execute.
- * @param params Initializes the PreparedStatement's IN (ie. '?')
- * parameters.
- * @throws SQLException
- * @return The number of rows updated.
- */
- public int update(String sql, Object[] params) throws SQLException {
-
- Connection conn = this.ds.getConnection();
- int rows = 0;
-
- try {
- conn.setAutoCommit(false); // single transaction.
- rows = this.update(conn, sql, params);
- conn.commit();
-
- } catch (SQLException e) {
- DbUtils.rollback(conn);
- throw e;
-
- } finally {
- DbUtils.closeQuietly(conn);
- }
-
- return rows;
- }
-
- /**
- * Wrap the <code>ResultSet</code> in a decorator before processing it.
- * This implementation returns the <code>ResultSet</code> it is given
- * without any decoration.
- *
- * <p>
- * Often, the implementation of this method can be done in an anonymous
- * inner class like this:
- * </p>
- * <pre>
- * QueryRunner run = new QueryRunner() {
- * protected void wrap(ResultSet rs) {
- * return StringTrimmedResultSet.wrap(rs);
- * }
- * };
- * </pre>
- *
- * @param rs The <code>ResultSet</code> to decorate; never
- * <code>null</code>.
- * @return The <code>ResultSet</code> wrapped in some decorator.
- */
- protected ResultSet wrap(ResultSet rs) {
- return rs;
- }
+ /**
+ * The DataSource to retrieve connections from.
+ */
+ protected DataSource ds = null;
+
+ /**
+ * Constructor for QueryRunner.
+ */
+ public QueryRunner() {
+ super();
+ }
+
+ /**
+ * Constructor for QueryRunner. Methods that do not take a
+ * <code>Connection</code> parameter will retrieve connections from this
+ * <code>DataSource</code>.
+ *
+ * @param ds The <code>DataSource</code> to retrieve connections from.
+ */
+ public QueryRunner(DataSource ds) {
+ super();
+ this.ds = ds;
+ }
+
+ /**
+ * Fill the <code>PreparedStatement</code> replacement parameters with
+ * the given objects.
+ * @param stmt
+ * @param params Query replacement parameters; <code>null</code> is a valid
+ * value to pass in.
+ * @throws SQLException
+ */
+ protected void fillStatement(PreparedStatement stmt, Object[] params)
+ throws SQLException {
+
+ if (params == null) {
+ return;
+ }
+
+ for (int i = 0; i < params.length; i++) {
+ if (params[i] != null) {
+ stmt.setObject(i + 1, params[i]);
+ } else {
+ stmt.setNull(i + 1, Types.OTHER);
+ }
+ }
+ }
+
+ /**
+ * Returns the <code>DataSource</code> this runner is using.
+ */
+ public DataSource getDataSource() {
+ return this.ds;
+ }
+
+ /**
+ * Execute an SQL SELECT query with a single replacement parameter. The
+ * caller is responsible for connection cleanup.
+ *
+ * @param conn The connection to execute the query in.
+ * @param sql The query to execute.
+ * @param param The replacement parameter.
+ * @param rsh The handler that converts the results into an object.
+ * @return The object returned by the handler.
+ * @throws SQLException
+ */
+ public Object query(
+ Connection conn,
+ String sql,
+ Object param,
+ ResultSetHandler rsh)
+ throws SQLException {
+
+ return this.query(conn, sql, new Object[] { param }, rsh);
+ }
+
+ /**
+ * Execute an SQL SELECT query with replacement parameters. The
+ * caller is responsible for connection cleanup.
+ *
+ * @param conn The connection to execute the query in.
+ * @param sql The query to execute.
+ * @param params The replacement parameters.
+ * @param rsh The handler that converts the results into an object.
+ * @return The object returned by the handler.
+ * @throws SQLException
+ */
+ public Object query(
+ Connection conn,
+ String sql,
+ Object[] params,
+ ResultSetHandler rsh)
+ throws SQLException {
+
+ PreparedStatement stmt = null;
+ ResultSet rs = null;
+ Object result = null;
+
+ try {
+ stmt = conn.prepareStatement(sql);
+ this.fillStatement(stmt, params);
+
+ rs = this.wrap(stmt.executeQuery());
+
+ result = rsh.handle(rs);
+
+ } catch (SQLException e) {
+ this.rethrow(e, sql, params);
+
+ } finally {
+ DbUtils.closeQuietly(rs);
+ DbUtils.closeQuietly(stmt);
+ }
+
+ return result;
+ }
+
+ /**
+ * Execute an SQL SELECT query without any replacement parameters. The
+ * caller is responsible for connection cleanup.
+ *
+ * @param conn The connection to execute the query in.
+ * @param sql The query to execute.
+ * @param rsh The handler that converts the results into an object.
+ * @return The object returned by the handler.
+ * @throws SQLException
+ */
+ public Object query(Connection conn, String sql, ResultSetHandler rsh)
+ throws SQLException {
+
+ return this.query(conn, sql, (Object[]) null, rsh);
+ }
+
+ /**
+ * Executes the given SELECT SQL with a single replacement parameter.
+ * The <code>Connection</code> is retrieved from the
+ * <code>DataSource</code> set in the constructor.
+ *
+ * @param sql The SQL statement to execute.
+ * @param param The replacement parameter.
+ * @param rsh The handler used to create the result object from
+ * the <code>ResultSet</code>.
+ *
+ * @return An object generated by the handler.
+ * @throws SQLException
+ */
+ public Object query(String sql, Object param, ResultSetHandler rsh)
+ throws SQLException {
+
+ return this.query(sql, new Object[] { param }, rsh);
+ }
+
+ /**
+ * Executes the given SELECT SQL query and returns a result object.
+ * The <code>Connection</code> is retrieved from the
+ * <code>DataSource</code> set in the constructor.
+ *
+ * @param sql The SQL statement to execute.
+ * @param params Initialize the PreparedStatement's IN parameters with
+ * this array.
+ *
+ * @param rsh The handler used to create the result object from
+ * the <code>ResultSet</code>.
+ *
+ * @return An object generated by the handler.
+ * @throws SQLException
+ */
+ public Object query(String sql, Object[] params, ResultSetHandler rsh)
+ throws SQLException {
+
+ Connection conn = this.ds.getConnection();
+
+ Object result = null;
+
+ try {
+ result = this.query(conn, sql, params, rsh);
+
+ } finally {
+ DbUtils.closeQuietly(conn);
+ }
+
+ return result;
+ }
+
+ /**
+ * Executes the given SELECT SQL without any replacement parameters.
+ * The <code>Connection</code> is retrieved from the
+ * <code>DataSource</code> set in the constructor.
+ *
+ * @param sql The SQL statement to execute.
+ * @param rsh The handler used to create the result object from
+ * the <code>ResultSet</code>.
+ *
+ * @return An object generated by the handler.
+ * @throws SQLException
+ */
+ public Object query(String sql, ResultSetHandler rsh) throws SQLException {
+ return this.query(sql, (Object[]) null, rsh);
+ }
+
+ /**
+ * Throws a new exception with a more informative error message.
+ *
+ * @param cause The original exception that will be chained to the new
+ * exception when it's rethrown.
+ *
+ * @param sql The query that was executing when the exception happened.
+ * @param params The query replacement paramaters; <code>null</code> is a
+ * valid value to pass in.
+ *
+ * @throws SQLException
+ */
+ protected void rethrow(SQLException cause, String sql, Object[] params)
+ throws SQLException {
+
+ StringBuffer msg =
+ new StringBuffer(cause.getMessage() + " in query " + sql);
+ if (params != null) {
+ msg.append(Arrays.asList(params).toString());
+ }
+
+ SQLException newsqle = new SQLException(msg.toString());
+ newsqle.setNextException(cause);
+
+ throw newsqle;
+ }
+
+ /**
+ * Sets the <code>DataSource</code> this runner will use to get
+ * database connections from. This should be called after creating a
+ * runner with the default constructor if you intend to use the
+ * execute methods without passing in a <code>Connection</code>.
+ *
+ * @param dataSource The DataSource to use.
+ */
+ public void setDataSource(DataSource dataSource) {
+ this.ds = dataSource;
+ }
+
+ /**
+ * Execute an SQL INSERT, UPDATE, or DELETE query without replacement
+ * parameters.
+ *
+ * @param conn The connection to use to run the query.
+ * @param sql The SQL to execute.
+ * @return The number of rows updated.
+ * @throws SQLException
+ */
+ public int update(Connection conn, String sql) throws SQLException {
+ return this.update(conn, sql, (Object[]) null);
+ }
+
+ /**
+ * Execute an SQL INSERT, UPDATE, or DELETE query with a single replacement
+ * parameter.
+ *
+ * @param conn The connection to use to run the query.
+ * @param sql The SQL to execute.
+ * @param param The replacement parameter.
+ * @return The number of rows updated.
+ * @throws SQLException
+ */
+ public int update(Connection conn, String sql, Object param)
+ throws SQLException {
+
+ return this.update(conn, sql, new Object[] { param });
+ }
+
+ /**
+ * Execute an SQL INSERT, UPDATE, or DELETE query.
+ *
+ * @param conn The connection to use to run the query.
+ * @param sql The SQL to execute.
+ * @param params The query replacement parameters.
+ * @return The number of rows updated.
+ * @throws SQLException
+ */
+ public int update(Connection conn, String sql, Object[] params)
+ throws SQLException {
+
+ PreparedStatement stmt = null;
+ int rows = 0;
+
+ try {
+ stmt = conn.prepareStatement(sql);
+ this.fillStatement(stmt, params);
+
+ rows = stmt.executeUpdate();
+
+ } catch (SQLException e) {
+ this.rethrow(e, sql, params);
+
+ } finally {
+ DbUtils.closeQuietly(stmt);
+ }
+
+ return rows;
+ }
+
+ /**
+ * Executes the given INSERT, UPDATE, or DELETE SQL statement without
+ * any replacement parameters. The statement is executed in its own
+ * transaction that will be committed or rolled back depending on any
+ * SQLExceptions thrown. The <code>Connection</code> is retrieved from the
+ * <code>DataSource</code> set in the constructor.
+ *
+ * @param sql The SQL statement to execute.
+ * @throws SQLException
+ * @return The number of rows updated.
+ */
+ public int update(String sql) throws SQLException {
+ return this.update(sql, (Object[]) null);
+ }
+
+ /**
+ * Executes the given INSERT, UPDATE, or DELETE SQL statement with
+ * a single replacement parameter. The statement is executed in its own
+ * transaction that will be committed or rolled back depending on any
+ * SQLExceptions thrown. The <code>Connection</code> is retrieved from the
+ * <code>DataSource</code> set in the constructor.
+ *
+ * @param sql The SQL statement to execute.
+ * @param param The replacement parameter.
+ * @throws SQLException
+ * @return The number of rows updated.
+ */
+ public int update(String sql, Object param) throws SQLException {
+ return this.update(sql, new Object[] { param });
+ }
+
+ /**
+ * Executes the given INSERT, UPDATE, or DELETE SQL statement. The
+ * statement is executed in its own transaction that will be committed or
+ * rolled back depending on any SQLExceptions thrown. The
+ * <code>Connection</code> is retrieved from the <code>DataSource</code>
+ * set in the constructor.
+ *
+ * @param sql The SQL statement to execute.
+ * @param params Initializes the PreparedStatement's IN (ie. '?')
+ * parameters.
+ * @throws SQLException
+ * @return The number of rows updated.
+ */
+ public int update(String sql, Object[] params) throws SQLException {
+
+ Connection conn = this.ds.getConnection();
+ int rows = 0;
+
+ try {
+ conn.setAutoCommit(false); // single transaction.
+ rows = this.update(conn, sql, params);
+ conn.commit();
+
+ } catch (SQLException e) {
+ DbUtils.rollback(conn);
+ throw e;
+
+ } finally {
+ DbUtils.closeQuietly(conn);
+ }
+
+ return rows;
+ }
+
+ /**
+ * Wrap the <code>ResultSet</code> in a decorator before processing it.
+ * This implementation returns the <code>ResultSet</code> it is given
+ * without any decoration.
+ *
+ * <p>
+ * Often, the implementation of this method can be done in an anonymous
+ * inner class like this:
+ * </p>
+ * <pre>
+ * QueryRunner run = new QueryRunner() {
+ * protected void wrap(ResultSet rs) {
+ * return StringTrimmedResultSet.wrap(rs);
+ * }
+ * };
+ * </pre>
+ *
+ * @param rs The <code>ResultSet</code> to decorate; never
+ * <code>null</code>.
+ * @return The <code>ResultSet</code> wrapped in some decorator.
+ */
+ protected ResultSet wrap(ResultSet rs) {
+ return rs;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org