Author: markt
Date: Tue Jul 19 23:41:33 2011
New Revision: 1148584
URL: http://svn.apache.org/viewvc?rev=1148584&view=rev
Log:
More generics and supporting refactoring
Added:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PStmtKey.java
(with props)
Modified:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PStmtKey.java
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingConnection.java
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java
Modified:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PStmtKey.java
URL:
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PStmtKey.java?rev=1148584&r1=1148583&r2=1148584&view=diff
==============================================================================
--- commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PStmtKey.java
(original)
+++ commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PStmtKey.java
Tue Jul 19 23:41:33 2011
@@ -21,55 +21,55 @@ import java.sql.PreparedStatement;
/**
* A key uniquely identifying {@link PreparedStatement}s.
*/
-class PStmtKey {
+public class PStmtKey {
/** SQL defining Prepared or Callable Statement */
- protected String _sql = null;
+ private String _sql = null;
/** Result set type */
- protected Integer _resultSetType = null;
+ private Integer _resultSetType = null;
/** Result set concurrency */
- protected Integer _resultSetConcurrency = null;
+ private Integer _resultSetConcurrency = null;
/** Database catalog */
- protected String _catalog = null;
+ private String _catalog = null;
/**
* Statement type. Either STATEMENT_PREPAREDSTMT (PreparedStatement)
* or STATEMENT_CALLABLESTMT (CallableStatement)
*/
- protected byte _stmtType = PoolingConnection.STATEMENT_PREPAREDSTMT;
+ private byte _stmtType = PoolingConnection.STATEMENT_PREPAREDSTMT;
- PStmtKey(String sql) {
+ public PStmtKey(String sql) {
_sql = sql;
}
- PStmtKey(String sql, String catalog) {
+ public PStmtKey(String sql, String catalog) {
_sql = sql;
_catalog = catalog;
}
- PStmtKey(String sql, String catalog, byte stmtType) {
+ public PStmtKey(String sql, String catalog, byte stmtType) {
_sql = sql;
_catalog = catalog;
_stmtType = stmtType;
}
- PStmtKey(String sql, int resultSetType, int resultSetConcurrency) {
+ public PStmtKey(String sql, int resultSetType, int resultSetConcurrency) {
_sql = sql;
_resultSetType = new Integer(resultSetType);
_resultSetConcurrency = new Integer(resultSetConcurrency);
}
- PStmtKey(String sql, String catalog, int resultSetType, int
resultSetConcurrency) {
+ public PStmtKey(String sql, String catalog, int resultSetType, int
resultSetConcurrency) {
_sql = sql;
_catalog = catalog;
_resultSetType = new Integer(resultSetType);
_resultSetConcurrency = new Integer(resultSetConcurrency);
}
- PStmtKey(String sql, String catalog, int resultSetType, int
resultSetConcurrency, byte stmtType) {
+ public PStmtKey(String sql, String catalog, int resultSetType, int
resultSetConcurrency, byte stmtType) {
_sql = sql;
_catalog = catalog;
_resultSetType = new Integer(resultSetType);
@@ -77,6 +77,27 @@ class PStmtKey {
_stmtType = stmtType;
}
+
+ public String getSql() {
+ return _sql;
+ }
+
+ public Integer getResultSetType() {
+ return _resultSetType;
+ }
+
+ public Integer getResultSetConcurrency() {
+ return _resultSetConcurrency;
+ }
+
+ public String getCatalog() {
+ return _catalog;
+ }
+
+ public byte getStmtType() {
+ return _stmtType;
+ }
+
@Override
public boolean equals(Object that) {
try {
Modified:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingConnection.java
URL:
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingConnection.java?rev=1148584&r1=1148583&r2=1148584&view=diff
==============================================================================
---
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingConnection.java
(original)
+++
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/PoolingConnection.java
Tue Jul 19 23:41:33 2011
@@ -284,19 +284,19 @@ public class PoolingConnection extends D
if(null == key) {
throw new IllegalArgumentException("Prepared statement key is null
or invalid.");
} else {
- if( null == key._resultSetType && null ==
key._resultSetConcurrency ) {
- if (key._stmtType == STATEMENT_PREPAREDSTMT ) {
- return new
PoolablePreparedStatement(getDelegate().prepareStatement( key._sql), key,
_pstmtPool, this);
+ if( null == key.getResultSetType() && null ==
key.getResultSetConcurrency()) {
+ if (key.getStmtType() == STATEMENT_PREPAREDSTMT ) {
+ return new
PoolablePreparedStatement(getDelegate().prepareStatement( key.getSql()), key,
_pstmtPool, this);
} else {
- return new
PoolableCallableStatement(getDelegate().prepareCall( key._sql), key,
_pstmtPool, this);
+ return new
PoolableCallableStatement(getDelegate().prepareCall( key.getSql()), key,
_pstmtPool, this);
}
} else { // Both _resultSetType and _resultSetConcurrency are
non-null here (both or neither are set by constructors)
- if(key._stmtType == STATEMENT_PREPAREDSTMT) {
+ if(key.getStmtType() == STATEMENT_PREPAREDSTMT) {
return new
PoolablePreparedStatement(getDelegate().prepareStatement(
- key._sql,
key._resultSetType.intValue(),key._resultSetConcurrency.intValue()), key,
_pstmtPool, this);
+ key.getSql(),
key.getResultSetType().intValue(),key.getResultSetConcurrency().intValue()),
key, _pstmtPool, this);
} else {
return new PoolableCallableStatement(
getDelegate().prepareCall(
- key._sql,key._resultSetType.intValue(),
key._resultSetConcurrency.intValue()), key, _pstmtPool, this);
+ key.getSql(),key.getResultSetType().intValue(),
key.getResultSetConcurrency().intValue()), key, _pstmtPool, this);
}
}
}
Added:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PStmtKey.java
URL:
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PStmtKey.java?rev=1148584&view=auto
==============================================================================
---
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PStmtKey.java
(added)
+++
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PStmtKey.java
Tue Jul 19 23:41:33 2011
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.dbcp2.cpdsadapter;
+
+import java.util.Arrays;
+
+/**
+ * A key uniquely identifying {*link PreparedStatement}s.
+ */
+public class PStmtKey extends org.apache.commons.dbcp2.PStmtKey {
+ private Integer _autoGeneratedKeys = null;
+ private Integer _resultSetHoldability = null;
+ private int _columnIndexes[] = null;
+ private String _columnNames[] = null;
+
+ public PStmtKey(String sql) {
+ super(sql);
+ }
+
+ public PStmtKey(String sql, int autoGeneratedKeys) {
+ super(sql);
+ _autoGeneratedKeys = new Integer(autoGeneratedKeys);
+ }
+
+ public PStmtKey(String sql, int resultSetType, int resultSetConcurrency) {
+ super(sql, resultSetType, resultSetConcurrency);
+ }
+
+ public PStmtKey(String sql, int resultSetType, int resultSetConcurrency,
+ int resultSetHoldability) {
+ super(sql, resultSetType, resultSetConcurrency);
+ _resultSetHoldability = new Integer(resultSetHoldability);
+ }
+
+ public PStmtKey(String sql, int columnIndexes[]) {
+ super(sql);
+ _columnIndexes = columnIndexes;
+ }
+
+ public PStmtKey(String sql, String columnNames[]) {
+ super(sql);
+ _columnNames = columnNames;
+ }
+
+
+ public Integer getAutoGeneratedKeys() {
+ return _autoGeneratedKeys;
+ }
+
+ public Integer getResultSetHoldability() {
+ return _resultSetHoldability;
+ }
+
+ public int[] getColumnIndexes() {
+ return _columnIndexes;
+ }
+
+ public String[] getColumnNames() {
+ return _columnNames;
+ }
+
+ @Override
+ public boolean equals(Object that) {
+ try {
+ PStmtKey key = (PStmtKey) that;
+ return(((null == getSql() && null == key.getSql()) ||
getSql().equals(key.getSql())) &&
+ ((null == getCatalog() && null == key.getCatalog()) ||
getCatalog().equals(key.getCatalog())) &&
+ ((null == getResultSetType() && null ==
key.getResultSetType()) || getResultSetType().equals(key.getResultSetType())) &&
+ ((null == getResultSetConcurrency() && null ==
key.getResultSetConcurrency()) ||
getResultSetConcurrency().equals(key.getResultSetConcurrency())) &&
+ (getStmtType() == key.getStmtType()) &&
+ ((null == _autoGeneratedKeys && null ==
key._autoGeneratedKeys) || _autoGeneratedKeys.equals(key._autoGeneratedKeys)) &&
+ ((null == _resultSetHoldability && null ==
key._resultSetHoldability) ||
_resultSetHoldability.equals(key._resultSetHoldability)) &&
+ ((null == _columnIndexes && null == key._columnIndexes) ||
Arrays.equals(_columnIndexes, key._columnIndexes)) &&
+ ((null == _columnNames && null == key._columnNames) ||
Arrays.equals(_columnNames, key._columnNames))
+ );
+ } catch (ClassCastException e) {
+ return false;
+ } catch (NullPointerException e) {
+ return false;
+ }
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer buf = new StringBuffer();
+ buf.append("PStmtKey: sql=");
+ buf.append(getSql());
+ buf.append(", catalog=");
+ buf.append(getCatalog());
+ buf.append(", resultSetType=");
+ buf.append(getResultSetType());
+ buf.append(", resultSetConcurrency=");
+ buf.append(getResultSetConcurrency());
+ buf.append(", statmentType=");
+ buf.append(getStmtType());
+ buf.append(", autoGeneratedKeys=");
+ buf.append(_autoGeneratedKeys);
+ buf.append(", resultSetHoldability=");
+ buf.append(_resultSetHoldability);
+ buf.append(", columnIndexes=");
+ buf.append(Arrays.toString(_columnIndexes));
+ buf.append(", columnNames=");
+ buf.append(Arrays.toString(_columnNames));
+ return buf.toString();
+ }
+}
\ No newline at end of file
Propchange:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PStmtKey.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java
URL:
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java?rev=1148584&r1=1148583&r2=1148584&view=diff
==============================================================================
---
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java
(original)
+++
commons/proper/dbcp/trunk/src/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java
Tue Jul 19 23:41:33 2011
@@ -20,7 +20,6 @@ package org.apache.commons.dbcp2.cpdsada
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
-import java.util.Arrays;
import java.util.Vector;
import javax.sql.ConnectionEvent;
@@ -31,7 +30,6 @@ import javax.sql.StatementEventListener;
/* JDBC_4_ANT_KEY_END */
import org.apache.commons.dbcp2.DelegatingConnection;
-import org.apache.commons.dbcp2.DelegatingPreparedStatement;
import org.apache.commons.pool2.KeyedObjectPool;
import org.apache.commons.pool2.KeyedPoolableObjectFactory;
@@ -42,8 +40,9 @@ import org.apache.commons.pool2.KeyedPoo
* @author John D. McNally
* @version $Revision$ $Date$
*/
-class PooledConnectionImpl
- implements PooledConnection, KeyedPoolableObjectFactory {
+class PooledConnectionImpl implements PooledConnection,
+ KeyedPoolableObjectFactory<PStmtKey,PoolablePreparedStatementStub> {
+
private static final String CLOSED
= "Attempted to use PooledConnection after closed() was called.";
@@ -65,12 +64,13 @@ class PooledConnectionImpl
/**
* ConnectionEventListeners
*/
- private final Vector eventListeners;
+ private final Vector<ConnectionEventListener> eventListeners;
/**
* StatementEventListeners
*/
- private final Vector statementEventListeners = new Vector();
+ private final Vector<StatementEventListener> statementEventListeners =
+ new Vector<StatementEventListener>();
/**
* flag set to true, once close() is called.
@@ -79,7 +79,7 @@ class PooledConnectionImpl
/** My pool of {*link PreparedStatement}s. */
// TODO - make final?
- protected KeyedObjectPool pstmtPool = null;
+ protected KeyedObjectPool<PStmtKey,PoolablePreparedStatementStub>
pstmtPool = null;
/**
* Controls access to the underlying connection
@@ -98,11 +98,12 @@ class PooledConnectionImpl
} else {
this.delegatingConnection = new DelegatingConnection(connection);
}
- eventListeners = new Vector();
+ eventListeners = new Vector<ConnectionEventListener>();
isClosed = false;
}
- public void setStatementPool(KeyedObjectPool statementPool) {
+ public void setStatementPool(
+ KeyedObjectPool<PStmtKey,PoolablePreparedStatementStub>
statementPool) {
pstmtPool = statementPool;
}
@@ -249,8 +250,7 @@ class PooledConnectionImpl
return connection.prepareStatement(sql);
} else {
try {
- return (PreparedStatement)
- pstmtPool.borrowObject(createKey(sql));
+ return pstmtPool.borrowObject(createKey(sql));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
@@ -282,8 +282,8 @@ class PooledConnectionImpl
return connection.prepareStatement(sql, resultSetType,
resultSetConcurrency);
} else {
try {
- return (PreparedStatement) pstmtPool.borrowObject(
- createKey(sql,resultSetType,resultSetConcurrency));
+ return pstmtPool.borrowObject(
+ createKey(sql,resultSetType,resultSetConcurrency));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
@@ -309,8 +309,7 @@ class PooledConnectionImpl
return connection.prepareStatement(sql, autoGeneratedKeys);
} else {
try {
- return (PreparedStatement) pstmtPool.borrowObject(
- createKey(sql,autoGeneratedKeys));
+ return
pstmtPool.borrowObject(createKey(sql,autoGeneratedKeys));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
@@ -327,9 +326,8 @@ class PooledConnectionImpl
resultSetConcurrency, resultSetHoldability);
} else {
try {
- return (PreparedStatement) pstmtPool.borrowObject(
- createKey(sql, resultSetType, resultSetConcurrency,
- resultSetHoldability));
+ return pstmtPool.borrowObject(createKey(sql, resultSetType,
+ resultSetConcurrency, resultSetHoldability));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
@@ -344,8 +342,7 @@ class PooledConnectionImpl
return connection.prepareStatement(sql, columnIndexes);
} else {
try {
- return (PreparedStatement) pstmtPool.borrowObject(
- createKey(sql, columnIndexes));
+ return pstmtPool.borrowObject(createKey(sql, columnIndexes));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
@@ -360,8 +357,7 @@ class PooledConnectionImpl
return connection.prepareStatement(sql, columnNames);
} else {
try {
- return (PreparedStatement) pstmtPool.borrowObject(
- createKey(sql, columnNames));
+ return pstmtPool.borrowObject(createKey(sql, columnNames));
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
@@ -373,14 +369,14 @@ class PooledConnectionImpl
/**
* Create a {*link PooledConnectionImpl.PStmtKey} for the given arguments.
*/
- protected Object createKey(String sql, int autoGeneratedKeys) {
+ protected PStmtKey createKey(String sql, int autoGeneratedKeys) {
return new PStmtKey(normalizeSQL(sql), autoGeneratedKeys);
}
/**
* Create a {*link PooledConnectionImpl.PStmtKey} for the given arguments.
*/
- protected Object createKey(String sql, int resultSetType,
+ protected PStmtKey createKey(String sql, int resultSetType,
int resultSetConcurrency, int resultSetHoldability) {
return new PStmtKey(normalizeSQL(sql), resultSetType,
resultSetConcurrency, resultSetHoldability);
@@ -389,21 +385,21 @@ class PooledConnectionImpl
/**
* Create a {*link PooledConnectionImpl.PStmtKey} for the given arguments.
*/
- protected Object createKey(String sql, int columnIndexes[]) {
+ protected PStmtKey createKey(String sql, int columnIndexes[]) {
return new PStmtKey(normalizeSQL(sql), columnIndexes);
}
/**
* Create a {*link PooledConnectionImpl.PStmtKey} for the given arguments.
*/
- protected Object createKey(String sql, String columnNames[]) {
+ protected PStmtKey createKey(String sql, String columnNames[]) {
return new PStmtKey(normalizeSQL(sql), columnNames);
}
/**
* Create a {*link PooledConnectionImpl.PStmtKey} for the given arguments.
*/
- protected Object createKey(String sql, int resultSetType,
+ protected PStmtKey createKey(String sql, int resultSetType,
int resultSetConcurrency) {
return new PStmtKey(normalizeSQL(sql), resultSetType,
resultSetConcurrency);
@@ -412,7 +408,7 @@ class PooledConnectionImpl
/**
* Create a {*link PooledConnectionImpl.PStmtKey} for the given arguments.
*/
- protected Object createKey(String sql) {
+ protected PStmtKey createKey(String sql) {
return new PStmtKey(normalizeSQL(sql));
}
@@ -430,29 +426,28 @@ class PooledConnectionImpl
* @param obj the key for the {*link PreparedStatement} to be created
*/
@Override
- public Object makeObject(Object obj) throws Exception {
- if (null == obj || !(obj instanceof PStmtKey)) {
+ public PoolablePreparedStatementStub makeObject(PStmtKey key) throws
Exception {
+ if (null == key) {
throw new IllegalArgumentException();
} else {
// _openPstmts++;
- PStmtKey key = (PStmtKey)obj;
- if (null == key._resultSetType
- && null == key._resultSetConcurrency) {
- if (null == key._autoGeneratedKeys) {
+ if (null == key.getResultSetType()
+ && null == key.getResultSetConcurrency()) {
+ if (null == key.getAutoGeneratedKeys()) {
return new PoolablePreparedStatementStub(
- connection.prepareStatement(key._sql),
+ connection.prepareStatement(key.getSql()),
key, pstmtPool, delegatingConnection);
} else {
return new PoolablePreparedStatementStub(
- connection.prepareStatement(key._sql,
- key._autoGeneratedKeys.intValue()),
+ connection.prepareStatement(key.getSql(),
+ key.getAutoGeneratedKeys().intValue()),
key, pstmtPool, delegatingConnection);
}
} else {
return new PoolablePreparedStatementStub(
- connection.prepareStatement(key._sql,
- key._resultSetType.intValue(),
- key._resultSetConcurrency.intValue()),
+ connection.prepareStatement(key.getSql(),
+ key.getResultSetType().intValue(),
+ key.getResultSetConcurrency().intValue()),
key, pstmtPool, delegatingConnection);
}
}
@@ -465,13 +460,9 @@ class PooledConnectionImpl
* @param obj the {*link PreparedStatement} to be destroyed.
*/
@Override
- public void destroyObject(Object key, Object obj) throws Exception {
- //_openPstmts--;
- if (obj instanceof DelegatingPreparedStatement) {
- ((DelegatingPreparedStatement) obj).getInnermostDelegate().close();
- } else {
- ((PreparedStatement) obj).close();
- }
+ public void destroyObject(PStmtKey key, PoolablePreparedStatementStub ppss)
+ throws Exception {
+ ppss.getInnermostDelegate().close();
}
/**
@@ -482,7 +473,7 @@ class PooledConnectionImpl
* @return <tt>true</tt>
*/
@Override
- public boolean validateObject(Object key, Object obj) {
+ public boolean validateObject(PStmtKey key, PoolablePreparedStatementStub
ppss) {
return true;
}
@@ -493,8 +484,9 @@ class PooledConnectionImpl
* @param obj ignored
*/
@Override
- public void activateObject(Object key, Object obj) throws Exception {
- ((PoolablePreparedStatementStub) obj).activate();
+ public void activateObject(PStmtKey key, PoolablePreparedStatementStub
ppss)
+ throws Exception {
+ ppss.activate();
}
/**
@@ -504,9 +496,10 @@ class PooledConnectionImpl
* @param obj a {*link PreparedStatement}
*/
@Override
- public void passivateObject(Object key, Object obj) throws Exception {
- ((PreparedStatement) obj).clearParameters();
- ((PoolablePreparedStatementStub) obj).passivate();
+ public void passivateObject(PStmtKey key, PoolablePreparedStatementStub
ppss)
+ throws Exception {
+ ppss.clearParameters();
+ ppss.passivate();
}
/**
@@ -528,125 +521,4 @@ class PooledConnectionImpl
public synchronized void setAccessToUnderlyingConnectionAllowed(boolean
allow) {
this.accessToUnderlyingConnectionAllowed = allow;
}
-
- /**
- * A key uniquely identifying {*link PreparedStatement}s.
- */
- static class PStmtKey {
- protected String _sql = null;
- protected Integer _resultSetType = null;
- protected Integer _resultSetConcurrency = null;
- protected Integer _autoGeneratedKeys = null;
- protected Integer _resultSetHoldability = null;
- protected int _columnIndexes[] = null;
- protected String _columnNames[] = null;
-
- PStmtKey(String sql) {
- _sql = sql;
- }
-
- PStmtKey(String sql, int resultSetType, int resultSetConcurrency) {
- _sql = sql;
- _resultSetType = new Integer(resultSetType);
- _resultSetConcurrency = new Integer(resultSetConcurrency);
- }
-
- PStmtKey(String sql, int autoGeneratedKeys) {
- _sql = sql;
- _autoGeneratedKeys = new Integer(autoGeneratedKeys);
- }
-
- PStmtKey(String sql, int resultSetType, int resultSetConcurrency,
- int resultSetHoldability) {
- _sql = sql;
- _resultSetType = new Integer(resultSetType);
- _resultSetConcurrency = new Integer(resultSetConcurrency);
- _resultSetHoldability = new Integer(resultSetHoldability);
- }
-
- PStmtKey(String sql, int columnIndexes[]) {
- _sql = sql;
- _columnIndexes = columnIndexes;
- }
-
- PStmtKey(String sql, String columnNames[]) {
- _sql = sql;
- _columnNames = columnNames;
- }
-
-
- @Override
- public boolean equals(Object that) {
- try {
- PStmtKey key = (PStmtKey) that;
- return(((null == _sql && null == key._sql) ||
_sql.equals(key._sql)) &&
- ((null == _resultSetType && null == key._resultSetType)
|| _resultSetType.equals(key._resultSetType)) &&
- ((null == _resultSetConcurrency && null ==
key._resultSetConcurrency) ||
_resultSetConcurrency.equals(key._resultSetConcurrency)) &&
- ((null == _autoGeneratedKeys && null ==
key._autoGeneratedKeys) || _autoGeneratedKeys.equals(key._autoGeneratedKeys)) &&
- ((null == _resultSetHoldability && null ==
key._resultSetHoldability) ||
_resultSetHoldability.equals(key._resultSetHoldability)) &&
- ((null == _columnIndexes && null == key._columnIndexes)
|| Arrays.equals(_columnIndexes, key._columnIndexes)) &&
- ((null == _columnNames && null == key._columnNames) ||
Arrays.equals(_columnNames, key._columnNames))
- );
- } catch (ClassCastException e) {
- return false;
- } catch (NullPointerException e) {
- return false;
- }
- }
-
- @Override
- public int hashCode() {
- return(null == _sql ? 0 : _sql.hashCode());
- }
-
- @Override
- public String toString() {
- StringBuffer buf = new StringBuffer();
- buf.append("PStmtKey: sql=");
- buf.append(_sql);
- buf.append(", resultSetType=");
- buf.append(_resultSetType);
- buf.append(", resultSetConcurrency=");
- buf.append(_resultSetConcurrency);
- buf.append(", autoGeneratedKeys=");
- buf.append(_autoGeneratedKeys);
- buf.append(", resultSetHoldability=");
- buf.append(_resultSetHoldability);
- buf.append(", columnIndexes=");
-// JDK1.5 buf.append(Arrays.toString(_columnIndexes));
- arrayToString(buf,_columnIndexes);
- buf.append(", columnNames=");
-// JDK1.5 buf.append(Arrays.toString(_columnNames));
- arrayToString(buf,_columnNames);
- return buf.toString();
- }
- private void arrayToString(StringBuffer sb, int[] array){
- if (array == null) {
- sb.append("null");
- return;
- }
- sb.append('[');
- for(int i=0; i<array.length; i++){
- if (i>0){
- sb.append(',');
- }
- sb.append(array[i]);
- }
- sb.append(']');
- }
- private void arrayToString(StringBuffer sb, String[] array){
- if (array == null) {
- sb.append("null");
- return;
- }
- sb.append('[');
- for(int i=0; i<array.length; i++){
- if (i>0){
- sb.append(',');
- }
- sb.append(array[i]);
- }
- sb.append(']');
- }
- }
}