001: /*
002:
003: Derby - Class org.apache.derby.iapi.jdbc.BrokeredConnectionControl
004:
005: Licensed to the Apache Software Foundation (ASF) under one or more
006: contributor license agreements. See the NOTICE file distributed with
007: this work for additional information regarding copyright ownership.
008: The ASF licenses this file to you under the Apache License, Version 2.0
009: (the "License"); you may not use this file except in compliance with
010: the License. You may obtain a copy of the License at
011:
012: http://www.apache.org/licenses/LICENSE-2.0
013:
014: Unless required by applicable law or agreed to in writing, software
015: distributed under the License is distributed on an "AS IS" BASIS,
016: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
017: See the License for the specific language governing permissions and
018: limitations under the License.
019:
020: */
021:
022: package org.apache.derby.iapi.jdbc;
023:
024: import java.sql.SQLException;
025: import java.sql.Statement;
026: import java.sql.PreparedStatement;
027: import java.sql.CallableStatement;
028:
029: /**
030: Provides control over a BrokeredConnection
031: */
032: public interface BrokeredConnectionControl {
033: /**
034: Return the real JDBC connection for the brokered connection.
035: */
036: public EngineConnection getRealConnection() throws SQLException;
037:
038: /**
039: Notify the control class that a SQLException was thrown
040: during a call on one of the brokered connection's methods.
041: */
042: public void notifyException(SQLException sqle);
043:
044: /**
045: Allow control over setting auto commit mode.
046: */
047: public void checkAutoCommit(boolean autoCommit) throws SQLException;
048:
049: /**
050: Allow control over creating a Savepoint (JDBC 3.0)
051: */
052: public void checkSavepoint() throws SQLException;
053:
054: /**
055: Allow control over calling rollback.
056: */
057: public void checkRollback() throws SQLException;
058:
059: /**
060: Allow control over calling commit.
061: */
062: public void checkCommit() throws SQLException;
063:
064: /**
065: Can cursors be held across commits.
066: @param downgrade true to downgrade the holdability,
067: false to throw an exception.
068: */
069: public int checkHoldCursors(int holdability, boolean downgrade)
070: throws SQLException;
071:
072: /**
073: Returns true if isolation level has been set using JDBC/SQL.
074: */
075: public boolean isIsolationLevelSetUsingSQLorJDBC()
076: throws SQLException;
077:
078: /**
079: Reset the isolation level flag used to keep state in
080: BrokeredConnection. It will get set to true when isolation level
081: is set using JDBC/SQL. It will get reset to false at the start
082: and the end of a global transaction.
083: */
084: public void resetIsolationLevelFlag() throws SQLException;
085:
086: /**
087: Close called on BrokeredConnection. If this call
088: returns true then getRealConnection().close() will be called.
089: */
090: public boolean closingConnection() throws SQLException;
091:
092: /**
093: Optionally wrap a Statement with another Statement.
094: */
095: public Statement wrapStatement(Statement realStatement)
096: throws SQLException;
097:
098: /**
099: Optionally wrap a PreparedStatement with another PreparedStatement.
100: */
101: public PreparedStatement wrapStatement(
102: PreparedStatement realStatement, String sql,
103: Object generateKeys) throws SQLException;
104:
105: /**
106: Optionally wrap a CallableStatement with an CallableStatement.
107: */
108: public CallableStatement wrapStatement(
109: CallableStatement realStatement, String sql)
110: throws SQLException;
111:
112: /**
113: * Close called on the associated PreparedStatement object
114: * @param statement PreparedStatement object on which the close event
115: * occurred
116: */
117: public void onStatementClose(PreparedStatement statement);
118:
119: /**
120: * Error occurred on associated PreparedStatement object
121: * @param statement PreparedStatement object on which the
122: * error occured
123: * @param sqle The SQLExeption that caused the error
124: */
125: public void onStatementErrorOccurred(PreparedStatement statement,
126: SQLException sqle);
127:
128: }
|