001: /*
002:
003: Derby - Class org.apache.derby.impl.jdbc.ConnectionChild
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.impl.jdbc;
023:
024: import org.apache.derby.jdbc.InternalDriver;
025:
026: import java.sql.SQLException;
027:
028: /**
029: Any class in the embedded JDBC driver (ie this package) that needs to
030: refer back to the EmbedConnection object extends this class.
031: */
032:
033: abstract class ConnectionChild {
034:
035: /*
036: ** Local connection is the current EmbedConnection
037: ** object that we use for all our work.
038: */
039: EmbedConnection localConn;
040:
041: /**
042: Factory for JDBC objects to be created.
043: */
044: final InternalDriver factory;
045:
046: /**
047: Calendar for data operations.
048: */
049: private java.util.Calendar cal;
050:
051: ConnectionChild(EmbedConnection conn) {
052: super ();
053: localConn = conn;
054: factory = conn.getLocalDriver();
055: }
056:
057: /**
058: Return a reference to the EmbedConnection
059: */
060: final EmbedConnection getEmbedConnection() {
061: return localConn;
062: }
063:
064: /**
065: * Return an object to be used for connection
066: * synchronization.
067: */
068: final Object getConnectionSynchronization() {
069: return localConn.getConnectionSynchronization();
070: }
071:
072: /**
073: Handle any exception.
074: @see EmbedConnection#handleException
075: @exception SQLException thrown if can't handle
076: */
077: final SQLException handleException(Throwable t) throws SQLException {
078: return localConn.handleException(t);
079: }
080:
081: /**
082: If Autocommit is on, note that a commit is needed.
083: @see EmbedConnection#needCommit
084: */
085: final void needCommit() {
086: localConn.needCommit();
087: }
088:
089: /**
090: Perform a commit if one is needed.
091: @see EmbedConnection#commitIfNeeded
092: @exception SQLException thrown on failure
093: */
094: final void commitIfNeeded() throws SQLException {
095: //System.out.println(this + " <> " + localConn.getClass());
096: //new Throwable("cin").printStackTrace(System.out);
097: localConn.commitIfNeeded();
098: }
099:
100: /**
101: Perform a commit if autocommit is enabled.
102: @see EmbedConnection#commitIfNeeded
103: @exception SQLException thrown on failure
104: */
105: final void commitIfAutoCommit() throws SQLException {
106: //System.out.println(this + " <> " + localConn.getClass());
107: //new Throwable("cin").printStackTrace(System.out);
108: localConn.commitIfAutoCommit();
109: }
110:
111: /**
112: Setup the context stack (a.k.a. context manager)
113: for this connection.
114: @see EmbedConnection#setupContextStack
115: @exception SQLException thrown on failure
116: */
117: final void setupContextStack() throws SQLException {
118: localConn.setupContextStack();
119: }
120:
121: /**
122: Setup the context stack (a.k.a. context manager)
123: for this connection.
124: @see EmbedConnection#restoreContextStack
125: @exception SQLException thrown on failure
126: */
127: final void restoreContextStack() throws SQLException {
128: localConn.restoreContextStack();
129: }
130:
131: /**
132: Get and save a unique calendar object for this JDBC object.
133: No need to synchronize because multiple threads should not
134: be using a single JDBC object. Even if they do there is only
135: a small window where each would get its own Calendar for a
136: single call.
137: */
138: java.util.Calendar getCal() {
139: if (cal == null)
140: cal = new java.util.GregorianCalendar();
141: return cal;
142: }
143:
144: SQLException newSQLException(String messageId) {
145: return localConn.newSQLException(messageId);
146: }
147:
148: SQLException newSQLException(String messageId, Object arg1) {
149: return localConn.newSQLException(messageId, arg1);
150: }
151:
152: SQLException newSQLException(String messageId, Object arg1,
153: Object arg2) {
154: return localConn.newSQLException(messageId, arg1, arg2);
155: }
156: }
|