[jboss-user] [Installation, Configuration & DEPLOYMENT] - Re: java.lang.NoSuchMethodException: org.jboss.resource.adap

cpnehete do-not-reply at jboss.com
Fri Mar 14 08:03:19 EDT 2008


Hi Jaikiran,

Please find code for debuggable statement class below,

And I think i didn't change any jar file.

Please do the needful.


  | 
  | package com.work.net;
  | 
  | import java.io.InputStream;
  | import java.io.Reader;
  | import java.lang.reflect.InvocationTargetException;
  | import java.lang.reflect.Method;
  | import java.math.BigDecimal;
  | import java.net.URL;
  | import java.sql.Blob;
  | import java.sql.Clob;
  | import java.sql.Connection;
  | import java.sql.ParameterMetaData;
  | import java.sql.PreparedStatement;
  | import java.sql.Ref;
  | import java.sql.ResultSet;
  | import java.sql.ResultSetMetaData;
  | import java.sql.SQLException;
  | import java.sql.SQLWarning;
  | import java.sql.Time;
  | import java.sql.Timestamp;
  | import java.util.Calendar;
  | import java.util.StringTokenizer;
  | 
  | 
  | public class DebuggableStatement implements PreparedStatement {
  | 
  | 	private PreparedStatement ps; //preparedStatement being proxied for.
  | 	private String sql; //original statement going to database.
  | 	private String filteredSql;
  | 	//statement filtered for rogue '?' that are not bind variables.
  | 	private DebugObject[] variables; //array of bind variables
  | 	private SqlFormatter formatter; //format for dates
  | 	private long startTime; //time that statement began execution
  | 	private long executeTime; //time elapsed while executing statement
  | 	private DebugLevel debugLevel; //level of debug
  | 
  | 	
  | 	protected DebuggableStatement(
  | 		Connection con,
  | 		String sqlStatement,
  | 		SqlFormatter formatter,
  | 		DebugLevel debugLevel)
  | 		throws SQLException {
  | 		//set values for member variables
  | 		this.ps = con.prepareStatement(sqlStatement);
  | 		this.sql = sqlStatement;
  | 		this.debugLevel = debugLevel;
  | 		this.formatter = formatter;
  | 
  | 		//see if there are any '?' in the statement that are not bind variables
  | 		//and filter them out.
  | 		boolean isString = false;
  | 		char[] sqlString = sqlStatement.toCharArray();
  | 		for (int i = 0; i < sqlString.length; i++) {
  | 			if (sqlString == '\'')
  | 				isString = !isString;
  | 			//substitute the ? with an unprintable character if the ? is in a
  | 			//string.
  | 			if (sqlString == '?' && isString)
  | 				sqlString = '\u0007';
  | 		}
  | 		filteredSql = new String(sqlString);
  | 
  | 		//find out how many variables are present in statement.
  | 		int count = 0;
  | 		int index = -1;
  | 		while ((index = filteredSql.indexOf("?", index + 1)) != -1) {
  | 			count++;
  | 		}
  | 
  | 		//show how many bind variables found
  | 		if (debugLevel == DebugLevel.VERBOSE)
  | 			System.out.println("count= " + count);
  | 
  | 		//create array for bind variables
  | 		variables = new DebugObject[count];
  | 
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void addBatch() throws SQLException {
  | 		ps.addBatch();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void addBatch(String sql) throws SQLException {
  | 		ps.addBatch();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void cancel() throws SQLException {
  | 		ps.cancel();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void clearBatch() throws SQLException {
  | 		ps.clearBatch();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void clearParameters() throws SQLException {
  | 		ps.clearParameters();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void clearWarnings() throws SQLException {
  | 		ps.clearWarnings();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void close() throws SQLException {
  | 		ps.close();
  | 	}
  | 
  | 	/**
  | 	 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
  | 	 * @return results of query
  | 	 */
  | 	public boolean execute() throws SQLException {
  | 		//execute query
  | 		Boolean results = null;
  | 		try {
  | 			results = (Boolean) executeVerboseQuery("execute", null);
  | 		}
  | 		catch (SQLException sqle) {
  | 			throw sqle;
  | 		}
  | 		catch (Exception e) {
  | 			e.printStackTrace();
  | 			throw new SQLException("Could not execute sql command");
  | 		}
  | 		return results.booleanValue();
  | 	}
  | 
  | 	/**
  | 	 * This method is only here for convenience. If a different sql string is executed
  | 	 * than was passed into Debuggable, unknown results will occur.
  | 	 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
  | 	 * @param sql should be same string that was passed into Debuggable
  | 	 * @return results of query
  | 	 */
  | 	public boolean execute(String sql) throws SQLException {
  | 		//execute query
  | 		Boolean results = null;
  | 		try {
  | 			results =
  | 				(Boolean) executeVerboseQuery("execute",
  | 					new Class[] { sql.getClass()});
  | 		}
  | 		catch (SQLException sqle) {
  | 			throw sqle;
  | 		}
  | 		catch (Exception e) {
  | 			e.printStackTrace();
  | 			throw new SQLException("Could not execute sql command");
  | 		}
  | 		return results.booleanValue();
  | 	}
  | 
  | 	/**
  | 	 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
  | 	 * @return results of query
  | 	 */
  | 	public int[] executeBatch() throws SQLException {
  | 		//execute query
  | 		int[] results = null;
  | 		try {
  | 			results = (int[]) executeVerboseQuery("executeBatch", null);
  | 		}
  | 		catch (SQLException sqle) {
  | 			throw sqle;
  | 		}
  | 		catch (Exception e) {
  | 			e.printStackTrace();
  | 			throw new SQLException("Could not execute sql command");
  | 		}
  | 		return results;
  | 	}
  | 
  | 	/**
  | 	 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
  | 	 * @return results of query
  | 	 */
  | 	public ResultSet executeQuery() throws SQLException {
  | 		//execute query
  | 		ResultSet results = null;
  | 		try {
  | 			results = (ResultSet) executeVerboseQuery("executeQuery", null);
  | 		}
  | 		catch (SQLException sqle) {
  | 			throw sqle;
  | 		}
  | 		catch (Exception e) {
  | 			e.printStackTrace();
  | 			throw new SQLException("Could not execute sql command");
  | 		}
  | 		return results;
  | 	}
  | 
  | 	/**
  | 	 * This method is only here for convenience. If a different sql string is executed
  | 	 * than was passed into Debuggable, unknown results will occur.
  | 	 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
  | 	 * @param sql should be same string that was passed into Debuggable
  | 	 * @return results of query
  | 	 */
  | 	public ResultSet executeQuery(String sql) throws SQLException {
  | 		//execute query
  | 		ResultSet results = null;
  | 		try {
  | 			results =
  | 				(ResultSet) executeVerboseQuery("executeQuery",
  | 					new Class[] { sql.getClass()});
  | 		}
  | 		catch (SQLException sqle) {
  | 			throw sqle;
  | 		}
  | 		catch (Exception e) {
  | 			e.printStackTrace();
  | 			throw new SQLException("Could not execute sql command");
  | 		}
  | 		return results;
  | 	}
  | 
  | 	/**
  | 	 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
  | 	 * @return results of query
  | 	 */
  | 	public int executeUpdate() throws SQLException {
  | 		//execute query
  | 		Integer results = null;
  | 		try {
  | 			results = (Integer) executeVerboseQuery("executeUpdate", null);
  | 		}
  | 		catch (SQLException sqle) {
  | 			throw sqle;
  | 		}
  | 		catch (Exception e) {
  | 			e.printStackTrace();
  | 			throw new SQLException("Could not execute sql command");
  | 		}
  | 		return results.intValue();
  | 	}
  | 
  | 	/**
  | 	 * This method is only here for convenience. If a different sql string is executed
  | 	 * than was passed into Debuggable, unknown results will occur.
  | 	 * Executes query and Calculates query execution time if DebugLevel = VERBOSE
  | 	 * @param sql should be same string that was passed into Debuggable
  | 	 * @return results of query
  | 	 */
  | 	public int executeUpdate(String sql) throws SQLException {
  | 		//execute query
  | 		Integer results = null;
  | 		try {
  | 			results =
  | 				(Integer) executeVerboseQuery("executeUpdate",
  | 					new Class[] { sql.getClass()});
  | 		}
  | 		catch (SQLException sqle) {
  | 			throw sqle;
  | 		}
  | 		catch (Exception e) {
  | 			e.printStackTrace();
  | 			throw new SQLException("Could not execute sql command");
  | 		}
  | 		return results.intValue();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public Connection getConnection() throws SQLException {
  | 		return ps.getConnection();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public int getFetchDirection() throws SQLException {
  | 		return ps.getFetchDirection();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public int getFetchSize() throws SQLException {
  | 		return ps.getFetchSize();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public int getMaxFieldSize() throws SQLException {
  | 		return ps.getMaxFieldSize();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public int getMaxRows() throws SQLException {
  | 		return ps.getMaxRows();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public ResultSetMetaData getMetaData() throws SQLException {
  | 		return ps.getMetaData();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public boolean getMoreResults() throws SQLException {
  | 		return ps.getMoreResults();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public int getQueryTimeout() throws SQLException {
  | 		return ps.getQueryTimeout();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public ResultSet getResultSet() throws SQLException {
  | 		return ps.getResultSet();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public int getResultSetConcurrency() throws SQLException {
  | 		return ps.getResultSetConcurrency();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public int getResultSetType() throws SQLException {
  | 		return ps.getResultSetType();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public String getStatement() {
  | 		return sql;
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public int getUpdateCount() throws SQLException {
  | 		return ps.getUpdateCount();
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public SQLWarning getWarnings() throws SQLException {
  | 		return ps.getWarnings();
  | 	}
  | 
  | 	/**
  | 	 * Tests Object o for parameterIndex (which parameter is being set) and places
  | 	 * object in array of variables.
  | 	 * @param parameterIndex which PreparedStatement parameter is being set.
  | 	 * Sequence begins at 1.
  | 	 * @param o Object being stored as parameter
  | 	 * @exception Thrown if index exceeds number of variables.
  | 	 */
  | 	private void saveObject(int parameterIndex, Object o)
  | 		throws ParameterIndexOutOfBoundsException {
  | 		if (parameterIndex > variables.length)
  | 			throw new ParameterIndexOutOfBoundsException(
  | 				"Parameter index of "
  | 					+ parameterIndex
  | 					+ " exceeds actual parameter count of "
  | 					+ variables.length);
  | 
  | 		variables[parameterIndex - 1] = new DebugObject(o);
  | 	}
  | 
  | 	/**
  | 	    Adds name of the Array's internal class type(by using x.getBaseTypeName())
  | 	     to the debug String. If x is null, NULL is added to debug String.
  | 	    @param i index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setArray(int i, java.sql.Array x) throws SQLException {
  | 		saveObject(i, x);
  | 		ps.setArray(i, x);
  | 	}
  | 
  | 	/**
  | 	    Debug string prints NULL if InputStream is null, or adds "stream length = " + length
  | 	*/
  | 	public void setAsciiStream(int parameterIndex, InputStream x, int length)
  | 		throws SQLException {
  | 		saveObject(
  | 			parameterIndex,
  | 			(x == null ? "NULL" : "<stream length= " + length + ">"));
  | 		ps.setAsciiStream(parameterIndex, x, length);
  | 	}
  | 
  | 	/**
  | 	    Adds BigDecimal to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setBigDecimal(int parameterIndex, BigDecimal x)
  | 		throws SQLException {
  | 		saveObject(parameterIndex, x);
  | 		ps.setBigDecimal(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Debug string prints NULL if InputStream is null, or adds "stream length= " + length.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	    @param length length of InputStream
  | 	*/
  | 	public void setBinaryStream(int parameterIndex, InputStream x, int length)
  | 		throws SQLException {
  | 		saveObject(
  | 			parameterIndex,
  | 			(x == null ? "NULL" : "<stream length= " + length + ">"));
  | 		ps.setBinaryStream(parameterIndex, x, length);
  | 	}
  | 
  | 	/**
  | 	    Adds name of the object's class type(Blob) to the debug String. If
  | 	    object is null, NULL is added to debug String.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setBlob(int parameterIndex, Blob x) throws SQLException {
  | 		saveObject(parameterIndex, x);
  | 		ps.setBlob(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Adds boolean to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setBoolean(int parameterIndex, boolean x) throws SQLException {
  | 		saveObject(parameterIndex, new Boolean(x));
  | 		ps.setBoolean(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Adds byte to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setByte(int parameterIndex, byte x) throws SQLException {
  | 		saveObject(parameterIndex, new Byte(x));
  | 		ps.setByte(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Adds byte[] to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setBytes(int parameterIndex, byte[] x) throws SQLException {
  | 		saveObject(
  | 			parameterIndex,
  | 			(x == null ? "NULL" : "byte[] length=" + x.length));
  | 		ps.setBytes(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Debug string prints NULL if reader is null, or adds "stream length= " + length.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	    @param length length of InputStream
  | 	*/
  | 	public void setCharacterStream(
  | 		int parameterIndex,
  | 		Reader reader,
  | 		int length)
  | 		throws SQLException {
  | 		saveObject(
  | 			parameterIndex,
  | 			(reader == null ? "NULL" : "<stream length= " + length + ">"));
  | 		ps.setCharacterStream(parameterIndex, reader, length);
  | 	}
  | 
  | 	/**
  | 	    Adds name of the object's class type(Clob) to the debug String. If
  | 	    object is null, NULL is added to debug String.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setClob(int i, Clob x) throws SQLException {
  | 		saveObject(i, x);
  | 		ps.setClob(i, x);
  | 	}
  | 
  | 	public void setCursorName(String name) throws SQLException {
  | 		ps.setCursorName(name);
  | 	}
  | 
  | 	/**
  | 	    Debug string displays date in YYYY-MM-DD HH24:MI:SS.# format.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setDate(int parameterIndex, java.sql.Date x)
  | 		throws SQLException {
  | 		saveObject(parameterIndex, x);
  | 		ps.setDate(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    this implementation assumes that the Date has the date, and the
  | 	    calendar has the local info. For the debug string, the cal date
  | 	    is set to the date of x. Debug string displays date in YYYY-MM-DD HH24:MI:SS.# format.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	    @param cal uses x to set time
  | 	*/
  | 	public void setDate(int parameterIndex, java.sql.Date x, Calendar cal)
  | 		throws SQLException {
  | 		cal.setTime(new java.util.Date(x.getTime()));
  | 		saveObject(parameterIndex, cal);
  | 		ps.setDate(parameterIndex, x, cal);
  | 	}
  | 
  | 	/**
  | 	    Adds double to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setDouble(int parameterIndex, double x) throws SQLException {
  | 		saveObject(parameterIndex, new Double(x));
  | 		ps.setDouble(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void setEscapeProcessing(boolean enable) throws SQLException {
  | 		ps.setEscapeProcessing(enable);
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void setFormatter(SqlFormatter formatter) {
  | 		this.formatter = formatter;
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void setFetchDirection(int direction) throws SQLException {
  | 		ps.setFetchDirection(direction);
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void setFetchSize(int rows) throws SQLException {
  | 		ps.setFetchSize(rows);
  | 	}
  | 
  | 	/**
  | 	    Adds float to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setFloat(int parameterIndex, float x) throws SQLException {
  | 		saveObject(parameterIndex, new Float(x));
  | 		ps.setFloat(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Adds int to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setInt(int parameterIndex, int x) throws SQLException {
  | 		saveObject(parameterIndex, new Integer(x));
  | 		ps.setInt(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Adds long to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setLong(int parameterIndex, long x) throws SQLException {
  | 		saveObject(parameterIndex, new Long(x));
  | 		ps.setLong(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void setMaxFieldSize(int max) throws SQLException {
  | 		ps.setMaxFieldSize(max);
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void setMaxRows(int max) throws SQLException {
  | 		ps.setMaxRows(max);
  | 	}
  | 
  | 	/**
  | 	    Adds a NULL to the debug String.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setNull(int parameterIndex, int sqlType) throws SQLException {
  | 		saveObject(parameterIndex, "NULL");
  | 		ps.setNull(parameterIndex, sqlType);
  | 	}
  | 
  | 	/**
  | 	    Adds a NULL to the debug String.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	    @param typeName type of Object
  | 	*/
  | 	public void setNull(int parameterIndex, int sqlType, String typeName)
  | 		throws SQLException {
  | 		saveObject(parameterIndex, "NULL");
  | 		ps.setNull(parameterIndex, sqlType, typeName);
  | 	}
  | 
  | 	/**
  | 	    Adds name of the object's class type to the debug String. If
  | 	    object is null, NULL is added to debug String.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setObject(int parameterIndex, Object x) throws SQLException {
  | 		saveObject(
  | 			parameterIndex,
  | 			(x == null ? "NULL" : x.getClass().getName()));
  | 		ps.setObject(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	     Adds name of the object's class type to the debug String. If
  | 	     object is null, NULL is added to debug String.
  | 	     @param parameterIndex index of parameter
  | 	     @param x parameter Object
  | 	     @param targetSqlType database type
  | 	 */
  | 	public void setObject(int parameterIndex, Object x, int targetSqlType)
  | 		throws SQLException {
  | 		saveObject(
  | 			parameterIndex,
  | 			(x == null ? "NULL" : x.getClass().getName()));
  | 		ps.setObject(parameterIndex, x, targetSqlType);
  | 	}
  | 
  | 	/**
  | 	    Adds name of the object's class type to the debug String. If
  | 	    object is null, NULL is added to debug String.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	    @param targetSqlType database type
  | 	    @param scale see PreparedStatement
  | 	*/
  | 	public void setObject(
  | 		int parameterIndex,
  | 		Object x,
  | 		int targetSqlType,
  | 		int scale)
  | 		throws SQLException {
  | 		saveObject(
  | 			parameterIndex,
  | 			(x == null ? "NULL" : x.getClass().getName()));
  | 		ps.setObject(parameterIndex, x, targetSqlType, scale);
  | 	}
  | 
  | 	/**
  | 	 * Facade for PreparedStatement
  | 	 */
  | 	public void setQueryTimeout(int seconds) throws SQLException {
  | 		ps.setQueryTimeout(seconds);
  | 	}
  | 
  | 	/**
  | 	    From the javadocs:
  | 	        A reference to an SQL structured type value in the database.
  | 	        A Ref can be saved to persistent storage.
  | 	    The output from this method call in DebuggableStatement is a string representation
  | 	    of the Ref object by calling the Ref object's getBaseTypeName() method.
  | 	    Again, this will only be a String representation of the actual object
  | 	    being stored in the database.
  | 	    @param i index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 
  | 	public void setRef(int i, Ref x) throws SQLException {
  | 		saveObject(i, x);
  | 		ps.setRef(i, x);
  | 	}
  | 
  | 	/**
  | 	    Adds short to debug string in parameterIndex position.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setShort(int parameterIndex, short x) throws SQLException {
  | 		saveObject(parameterIndex, new Short(x));
  | 		ps.setShort(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Adds String to debug string in parameterIndex position.
  | 	    If String is null "NULL" is inserted in debug string.
  | 	    ****note****
  | 	    In situations where a single ' is in the string being
  | 	    inserted in the database. The debug string will need to be modified to
  | 	    reflect this when running the debug statement in the database.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setString(int parameterIndex, String x) throws SQLException {
  | 		saveObject(parameterIndex, x);
  | 		ps.setString(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    Debug string displays Time in HH24:MI:SS.# format.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setTime(int parameterIndex, Time x) throws SQLException {
  | 		saveObject(parameterIndex, x);
  | 		ps.setTime(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	     This implementation assumes that the Time object has the time and
  | 	     Calendar has the locale info. For the debug string, the cal time
  | 	     is set to the value of x. Debug string displays time in HH24:MI:SS.# format.
  | 	     @param parameterIndex index of parameter
  | 	     @param x parameter Object
  | 	     @param cal sets time based on x
  | 	 */
  | 	public void setTime(int parameterIndex, Time x, Calendar cal)
  | 		throws SQLException {
  | 		cal.setTime(new java.util.Date(x.getTime()));
  | 		saveObject(parameterIndex, cal);
  | 		ps.setTime(parameterIndex, x, cal);
  | 	}
  | 
  | 	/**
  | 	    Debug string displays timestamp in YYYY-MM-DD HH24:MI:SS.# format.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	*/
  | 	public void setTimestamp(int parameterIndex, Timestamp x)
  | 		throws SQLException {
  | 		saveObject(parameterIndex, x);
  | 		ps.setTimestamp(parameterIndex, x);
  | 	}
  | 
  | 	/**
  | 	    This implementation assumes that the Timestamp has the date/time and
  | 	    Calendar has the locale info. For the debug string, the cal date/time
  | 	    is set to the default value of Timestamp which is YYYY-MM-DD HH24:MI:SS.#.
  | 	    Debug string displays timestamp in DateFormat.LONG format.
  | 	    @param parameterIndex index of parameter
  | 	    @param x parameter Object
  | 	    @param cal sets time based on x
  | 	*/
  | 	public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
  | 		throws SQLException {
  | 		cal.setTime(new java.util.Date(x.getTime()));
  | 		saveObject(parameterIndex, cal);
  | 		ps.setTimestamp(parameterIndex, x, cal);
  | 	}
  | 
  | 	/**
  | 	    Method has been deprecated in PreparedStatement interface.
  | 	    This method is present only to satisfy interface and does
  | 	    not do anything.
  | 	    Do not use...
  | 	*/
  | 	public void setUnicodeStream(int parameterIndex, InputStream x, int length)
  | 		throws SQLException {
  | 		//ps.setUnicodeStream(parameterIndex, x, length);
  | 	}
  | 
  | 	/**
  | 	    this toString is overidden to return a String representation of
  | 	    the sql statement being sent to the database. If a bind variable
  | 	    is missing then the String contains a ? + (missing variable #)
  | 	    @return the above string representation
  | 	*/
  | 	
  | 	public String toString() {
  | 		StringTokenizer st = new StringTokenizer(filteredSql, "?");
  | 		int count = 1;
  | 		StringBuffer statement = new StringBuffer();
  | 		while (st.hasMoreTokens()) {
  | 			statement.append(st.nextToken());
  | 			if (count <= variables.length) {
  | 				if (variables[count - 1] != null
  | 					&& variables[count - 1].isValueAssigned()) {
  | 					try {
  | 						statement.append(
  | 							formatter.format(variables[count - 1]));
  | 
  | 					}
  | 					catch (SQLException e) {
  | 						statement.append("SQLException");
  | 					}
  | 				}
  | 				else {
  | 					statement.append(
  | 						"? " + "(missing variable # " + count + " ) ");
  | 				}
  | 			}
  | 			count++;
  | 		}
  | 		//unfilter the string in case there where rogue '?' in query string.
  | 		char[] unfilterSql = statement.toString().toCharArray();
  | 		for (int i = 0; i < unfilterSql.length; i++) {
  | 			if (unfilterSql == '\u0007')
  | 				unfilterSql = '?';
  | 		}
  | 
  | 		//return execute time
  | 		if (debugLevel == DebugLevel.ON)
  | 			return new String(unfilterSql);
  | 		else
  | 			return new String(unfilterSql)
  | 				+ System.getProperty("line.separator")
  | 				+ System.getProperty("line.separator")
  | 				+ "query executed in "
  | 				+ executeTime
  | 				+ " milliseconds"
  | 				+ System.getProperty("line.separator");
  | 
  | 	}
  | 
  | 	private Object executeVerboseQuery(String methodName, Class[] parameters)
  | 		throws
  | 			SQLException,
  | 			NoSuchMethodException,
  | 			InvocationTargetException,
  | 			IllegalAccessException {
  | 		//determine which method we have
  | 		Method m = ps.getClass().getDeclaredMethod(methodName, parameters);
  | 
  | 		/*        //debug is set to on, so no times are calculated
  | 		        if (debugLevel == DebugLevel.ON)
  | 		            return m.invoke(ps,parameters);
  | 		*/
  | 		//calculate execution time for verbose debugging
  | 		start();
  | 		//        Object returnObject = m.invoke(ps,parameters);
  | 		Object returnObject = null;
  | 		if (methodName.equals("executeUpdate")) {
  | 			int i = ps.executeUpdate();
  | 			returnObject = new Integer(i);
  | 		}
  | 		else {
  | 			returnObject = m.invoke(ps, parameters);
  | 		}
  | 		end();
  | 
  | 		//return the executions return type
  | 		return returnObject;
  | 	}
  | 
  | 	private void start() {
  | 		startTime = System.currentTimeMillis();
  | 	}
  | 
  | 	private void end() {
  | 		executeTime = System.currentTimeMillis() - startTime;
  | 	}
  | 
  | 	private class DebugObject {
  | 		private Object debugObject;
  | 		private SqlFormatter formatter = new OracleSqlFormatter();
  | 		private boolean valueAssigned;
  | 
  | 		public DebugObject(Object debugObject) {
  | 			this.debugObject = debugObject;
  | 			valueAssigned = true;
  | 		}
  | 
  | 		public Object getDebugObject() {
  | 			return debugObject;
  | 		}
  | 
  | 		public boolean isValueAssigned() {
  | 			return valueAssigned;
  | 		}
  | 		
  | 		public String toString() {
  | 			String a = "";
  | 			try {
  | 				a = formatter.format(debugObject);
  | 			}
  | 			catch (SQLException sqle) {
  | 				sqle.printStackTrace();
  | 			}
  | 			finally {
  | 			}
  | 			return a;
  | 		}
  | 	}
  | 
  | 
  | //********* New methods are implemented, because we're going to use J2SDK1.4.2 for
  | //********* the Rheumatology Application, and in 1.4.2, there are following new methods
  | //********* which must be implemented if we implement the PreparedStatement interface.
  | 
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#getMoreResults(int)
  | 	 */
  | 	public boolean getMoreResults(int current) throws SQLException {
  | 		return false;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.PreparedStatement#getParameterMetaData()
  | 	 */
  | 	public ParameterMetaData getParameterMetaData() throws SQLException {		
  | 		return null;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.PreparedStatement#setURL(int, java.net.URL)
  | 	 */
  | 	public void setURL(int parameterIndex, URL x) throws SQLException {		
  | 
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#execute(java.lang.String, int)
  | 	 */
  | 	public boolean execute(String sql, int autoGeneratedKeys)
  | 		throws SQLException {		
  | 		return false;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#execute(java.lang.String, int[])
  | 	 */
  | 	public boolean execute(String sql, int[] columnIndexes)
  | 		throws SQLException {		
  | 		return false;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#execute(java.lang.String, java.lang.String[])
  | 	 */
  | 	public boolean execute(String sql, String[] columnNames)
  | 		throws SQLException {		
  | 		return false;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#executeUpdate(java.lang.String, int)
  | 	 */
  | 	public int executeUpdate(String sql, int autoGeneratedKeys)
  | 		throws SQLException {		
  | 		return 0;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#executeUpdate(java.lang.String, int[])
  | 	 */
  | 	public int executeUpdate(String sql, int[] columnIndexes)
  | 		throws SQLException {		
  | 		return 0;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#executeUpdate(java.lang.String, java.lang.String[])
  | 	 */
  | 	public int executeUpdate(String sql, String[] columnNames)
  | 		throws SQLException {		
  | 		return 0;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#getGeneratedKeys()
  | 	 */
  | 	public ResultSet getGeneratedKeys() throws SQLException {		
  | 		return null;
  | 	}
  | 
  | 	/* (non-Javadoc)
  | 	 * @see java.sql.Statement#getResultSetHoldability()
  | 	 */
  | 	public int getResultSetHoldability() throws SQLException {		
  | 		return 0;
  | 	}
  | 
  | }
  | 
  | 
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4136617#4136617

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4136617



More information about the jboss-user mailing list