Save This Page
Home » xapool-1.5.0-src » org.enhydra.jdbc » standard » [javadoc | source]
    1   /*
    2    * XAPool: Open Source XA JDBC Pool
    3    * Copyright (C) 2003 Objectweb.org
    4    * Initial Developer: Lutris Technologies Inc.
    5    * Contact: xapool-public@lists.debian-sf.objectweb.org
    6    *
    7    * This library is free software; you can redistribute it and/or
    8    * modify it under the terms of the GNU Lesser General Public
    9    * License as published by the Free Software Foundation; either
   10    * version 2.1 of the License, or any later version.
   11    *
   12    * This library is distributed in the hope that it will be useful,
   13    * but WITHOUT ANY WARRANTY; without even the implied warranty of
   14    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   15    * Lesser General Public License for more details.
   16    *
   17    * You should have received a copy of the GNU Lesser General Public
   18    * License along with this library; if not, write to the Free Software
   19    * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
   20    * USA
   21    */
   22   package org.enhydra.jdbc.standard;
   23   
   24   import java.sql.SQLException;
   25   
   26   public class StandardXAPreparedStatement extends StandardPreparedStatement {
   27   
   28   	private StandardXAConnectionHandle con;
   29   	// the StandardXAConnectionHandle that created this object
   30   	public String sql;
   31   	public int resultSetType;
   32   	public int resultSetConcurrency;
   33           public int resultSetHoldability;
   34           public int autoGeneratedKeys;
   35   
   36   	StandardXAPreparedStatement(
   37   		StandardXAConnectionHandle con_,
   38   		String sql_,
   39   		int resultSetType_,
   40   		int resultSetConcurrency_,
   41   		int resultSetHoldability_)
   42   		throws SQLException {
   43   		this.con = con_;
   44   		this.sql = sql_;
   45   		this.key = sql_ + resultSetType_ + resultSetConcurrency_ + resultSetHoldability_;
   46   		this.resultSetType = resultSetType_;
   47   		this.resultSetConcurrency = resultSetConcurrency_;
   48   		this.resultSetHoldability = resultSetHoldability_;
   49   
   50   		log = con_.log;
   51   		log.debug(
   52   			"StandardXAPreparedStatement: Create an XAPreparedStatement with sql='"
   53   				+ sql
   54   				+ "'");
   55   
   56   		key =
   57   			sql
   58   				+ resultSetType
   59   				+ resultSetConcurrency
   60   		                + resultSetHoldability
   61   				+ ((con.tx != null) ? true : false);
   62   		ps =
   63   			con.checkPreparedCache(
   64   				sql,
   65   				resultSetType,
   66   				resultSetConcurrency,
   67                                   resultSetHoldability,
   68   				key);
   69   		// from cney
   70   		// ps = con.checkPreparedCache(sql, resultSetType, resultSetConcurrency,key);
   71   	}
   72   
   73   	StandardXAPreparedStatement(
   74   		StandardXAConnectionHandle con_,
   75   		String sql_,
   76   		int autoGeneratedKeys_)
   77   		throws SQLException {
   78   		this.con = con_;
   79   		this.sql = sql_;
   80   		this.key = sql_ + autoGeneratedKeys_;
   81   		this.autoGeneratedKeys= autoGeneratedKeys_;
   82   
   83   		log = con_.log;
   84   		log.debug(
   85   			"StandardXAPreparedStatement: Create an XAPreparedStatement with sql='"
   86   				+ sql
   87   				+ "'");
   88   
   89   		key =
   90   			sql
   91   				+ autoGeneratedKeys
   92   				+ ((con.tx != null) ? true : false);
   93   		ps =
   94   			con.checkPreparedCache(
   95   				sql,
   96   				autoGeneratedKeys,
   97   				key);
   98   		// from cney
   99   		// ps = con.checkPreparedCache(sql, resultSetType, resultSetConcurrency,key);
  100   	}
  101   
  102   
  103   	/**
  104   	 * Close this statement.
  105   	 */
  106   	public synchronized void close() throws SQLException {
  107   		log.debug(
  108   			"StandardXAPreparedStatement:close the XA prepared statement");
  109   		// Note no check for already closed - some servers make mistakes
  110   		closed = true;
  111   		if (con.preparedStmtCacheSize == 0) {
  112   			log.debug(
  113   				"StandardXAPreparedStatement:close preparedStmtCacheSize == 0");
  114   			if (ps != null) {
  115   				ps.close(); // no cache, so we can close
  116   			}
  117   		} else {
  118   			log.debug(
  119   				"StandardXAPreparedStatement:close preparedStmtCacheSize="
  120   					+ "'"
  121   					+ con.preparedStmtCacheSize
  122   					+ "'");
  123   			con.returnToCache(key);
  124   			// return the underlying statement to the cache
  125   		}
  126   	}
  127   
  128   
  129   	/**
  130   	 * Exception management : catch or throw the exception
  131   	 */
  132   	public void catchInvoke(SQLException sqlException) throws SQLException {
  133   		//ConnectionEvent event = new ConnectionEvent (con.pooledCon);
  134   		//con.pooledCon.connectionErrorOccurred(event);
  135   		throw (sqlException);
  136   	}
  137   
  138   }

Save This Page
Home » xapool-1.5.0-src » org.enhydra.jdbc » standard » [javadoc | source]