Clover coverage report - Code Coverage for tapestry-contrib release 4.0-beta-8
Coverage timestamp: Sat Sep 24 2005 11:56:21 EDT
file stats: LOC: 151   Methods: 7
NCLOC: 69   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ParameterizedStatement.java 0% 0% 0% 0%
coverage
 1    // Copyright 2004, 2005 The Apache Software Foundation
 2    //
 3    // Licensed under the Apache License, Version 2.0 (the "License");
 4    // you may not use this file except in compliance with the License.
 5    // You may obtain a copy of the License at
 6    //
 7    // http://www.apache.org/licenses/LICENSE-2.0
 8    //
 9    // Unless required by applicable law or agreed to in writing, software
 10    // distributed under the License is distributed on an "AS IS" BASIS,
 11    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12    // See the License for the specific language governing permissions and
 13    // limitations under the License.
 14   
 15    package org.apache.tapestry.contrib.jdbc;
 16   
 17    import java.sql.Connection;
 18    import java.sql.PreparedStatement;
 19    import java.sql.ResultSet;
 20    import java.sql.SQLException;
 21    import java.sql.Statement;
 22    import java.util.List;
 23   
 24    import org.apache.commons.logging.Log;
 25    import org.apache.commons.logging.LogFactory;
 26   
 27    /**
 28    * A wrapper around {@link PreparedStatement}.
 29    *
 30    * @author Howard Lewis Ship
 31    *
 32    **/
 33   
 34    public class ParameterizedStatement implements IStatement
 35    {
 36    private static final Log LOG = LogFactory.getLog(ParameterizedStatement.class);
 37   
 38    private String _SQL;
 39    private PreparedStatement _statement;
 40    private IParameter[] _parameters;
 41   
 42    /**
 43    * Create a new instance; the parameters list is copied.
 44    *
 45    * @param SQL the SQL to execute (see {@link Connection#prepareStatement(java.lang.String)})
 46    * @param connection the JDBC connection to use
 47    * @param parameters list of {@link IParameter}
 48    *
 49    **/
 50   
 51  0 public ParameterizedStatement(String SQL, Connection connection, List parameters) throws SQLException
 52    {
 53  0 _SQL = SQL;
 54   
 55  0 _statement = connection.prepareStatement(SQL);
 56   
 57  0 _parameters = (IParameter[]) parameters.toArray(new IParameter[parameters.size()]);
 58   
 59  0 for (int i = 0; i < _parameters.length; i++)
 60    {
 61    // JDBC numbers things from 1, not 0.
 62   
 63  0 _parameters[i].set(_statement, i + 1);
 64    }
 65    }
 66   
 67    /**
 68    * Returns the SQL associated with this statement.
 69    *
 70    **/
 71   
 72  0 public String getSQL()
 73    {
 74  0 return _SQL;
 75    }
 76   
 77    /**
 78    * Returns the underlying or {@link PreparedStatement}.
 79    *
 80    **/
 81   
 82  0 public Statement getStatement()
 83    {
 84  0 return _statement;
 85    }
 86   
 87    /**
 88    * Closes the underlying statement, and nulls the reference to it.
 89    *
 90    **/
 91   
 92  0 public void close() throws SQLException
 93    {
 94  0 _statement.close();
 95   
 96  0 _statement = null;
 97  0 _SQL = null;
 98    }
 99   
 100    /**
 101    * Executes the statement as a query, returning a {@link ResultSet}.
 102    *
 103    **/
 104   
 105  0 public ResultSet executeQuery() throws SQLException
 106    {
 107  0 if (LOG.isDebugEnabled())
 108  0 LOG.debug("Executing query: " + this);
 109   
 110  0 return _statement.executeQuery();
 111    }
 112   
 113    /**
 114    * Executes the statement as an update, returning the number of rows
 115    * affected.
 116    *
 117    **/
 118   
 119  0 public int executeUpdate() throws SQLException
 120    {
 121  0 if (LOG.isDebugEnabled())
 122  0 LOG.debug("Executing update: " + this);
 123   
 124  0 return _statement.executeUpdate();
 125    }
 126   
 127  0 public String toString()
 128    {
 129  0 StringBuffer buffer = new StringBuffer("ParameterizedStatement@");
 130  0 buffer.append(Integer.toHexString(hashCode()));
 131  0 buffer.append("[SQL=\n<");
 132  0 buffer.append(_SQL);
 133  0 buffer.append("\n>");
 134   
 135  0 for (int i = 0; i < _parameters.length; i++)
 136    {
 137  0 IParameter parameter = _parameters[i];
 138   
 139  0 buffer.append(" ?");
 140  0 buffer.append(i + 1);
 141  0 buffer.append('=');
 142   
 143  0 buffer.append(parameter);
 144    }
 145   
 146  0 buffer.append(']');
 147   
 148  0 return buffer.toString();
 149    }
 150   
 151    }