View Javadoc
1   package com.github.davidmoten.rx.jdbc;
2   
3   import java.sql.Array;
4   import java.sql.Blob;
5   import java.sql.CallableStatement;
6   import java.sql.Clob;
7   import java.sql.Connection;
8   import java.sql.DatabaseMetaData;
9   import java.sql.NClob;
10  import java.sql.PreparedStatement;
11  import java.sql.SQLClientInfoException;
12  import java.sql.SQLException;
13  import java.sql.SQLWarning;
14  import java.sql.SQLXML;
15  import java.sql.Savepoint;
16  import java.sql.Statement;
17  import java.sql.Struct;
18  import java.util.Map;
19  import java.util.Properties;
20  import java.util.concurrent.CountDownLatch;
21  import java.util.concurrent.Executor;
22  
23  public class CountingConnection implements Connection {
24  
25      private final Connection con;
26  
27      private final CountDownLatch closesLatch;
28  
29      public CountingConnection(Connection con, CountDownLatch closesLatch) {
30          this.con = con;
31          this.closesLatch = closesLatch;
32      }
33  
34      @Override
35      public <T> T unwrap(Class<T> iface) throws SQLException {
36          return con.unwrap(iface);
37      }
38  
39      @Override
40      public boolean isWrapperFor(Class<?> iface) throws SQLException {
41          return con.isWrapperFor(iface);
42      }
43  
44      @Override
45      public Statement createStatement() throws SQLException {
46          return con.createStatement();
47      }
48  
49      @Override
50      public PreparedStatement prepareStatement(String sql) throws SQLException {
51          return con.prepareStatement(sql);
52      }
53  
54      @Override
55      public CallableStatement prepareCall(String sql) throws SQLException {
56          return con.prepareCall(sql);
57      }
58  
59      @Override
60      public String nativeSQL(String sql) throws SQLException {
61          return con.nativeSQL(sql);
62      }
63  
64      @Override
65      public void setAutoCommit(boolean autoCommit) throws SQLException {
66          con.setAutoCommit(autoCommit);
67      }
68  
69      @Override
70      public boolean getAutoCommit() throws SQLException {
71          return con.getAutoCommit();
72      }
73  
74      @Override
75      public void commit() throws SQLException {
76          con.commit();
77      }
78  
79      @Override
80      public void rollback() throws SQLException {
81          con.rollback();
82      }
83  
84      @Override
85      public void close() throws SQLException {
86          con.close();
87          closesLatch.countDown();
88      }
89  
90      @Override
91      public boolean isClosed() throws SQLException {
92          return con.isClosed();
93      }
94  
95      @Override
96      public DatabaseMetaData getMetaData() throws SQLException {
97          return con.getMetaData();
98      }
99  
100     @Override
101     public void setReadOnly(boolean readOnly) throws SQLException {
102         con.setReadOnly(readOnly);
103     }
104 
105     @Override
106     public boolean isReadOnly() throws SQLException {
107         return con.isReadOnly();
108     }
109 
110     @Override
111     public void setCatalog(String catalog) throws SQLException {
112         con.setCatalog(catalog);
113     }
114 
115     @Override
116     public String getCatalog() throws SQLException {
117         return con.getCatalog();
118     }
119 
120     @Override
121     public void setTransactionIsolation(int level) throws SQLException {
122         con.setTransactionIsolation(level);
123     }
124 
125     @Override
126     public int getTransactionIsolation() throws SQLException {
127         return con.getTransactionIsolation();
128     }
129 
130     @Override
131     public SQLWarning getWarnings() throws SQLException {
132         return con.getWarnings();
133     }
134 
135     @Override
136     public void clearWarnings() throws SQLException {
137         con.clearWarnings();
138     }
139 
140     @Override
141     public Statement createStatement(int resultSetType, int resultSetConcurrency)
142             throws SQLException {
143         return con.createStatement(resultSetType, resultSetConcurrency);
144     }
145 
146     @Override
147     public PreparedStatement prepareStatement(String sql, int resultSetType,
148             int resultSetConcurrency) throws SQLException {
149         return con.prepareStatement(sql, resultSetType, resultSetConcurrency);
150     }
151 
152     @Override
153     public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency)
154             throws SQLException {
155         return con.prepareCall(sql, resultSetType, resultSetConcurrency);
156     }
157 
158     @Override
159     public Map<String, Class<?>> getTypeMap() throws SQLException {
160         return con.getTypeMap();
161     }
162 
163     @Override
164     public void setTypeMap(Map<String, Class<?>> map) throws SQLException {
165         con.setTypeMap(map);
166     }
167 
168     @Override
169     public void setHoldability(int holdability) throws SQLException {
170         con.setHoldability(holdability);
171     }
172 
173     @Override
174     public int getHoldability() throws SQLException {
175         return con.getHoldability();
176     }
177 
178     @Override
179     public Savepoint setSavepoint() throws SQLException {
180         return con.setSavepoint();
181     }
182 
183     @Override
184     public Savepoint setSavepoint(String name) throws SQLException {
185         return con.setSavepoint(name);
186     }
187 
188     @Override
189     public void rollback(Savepoint savepoint) throws SQLException {
190         con.rollback(savepoint);
191     }
192 
193     @Override
194     public void releaseSavepoint(Savepoint savepoint) throws SQLException {
195         con.releaseSavepoint(savepoint);
196     }
197 
198     @Override
199     public Statement createStatement(int resultSetType, int resultSetConcurrency,
200             int resultSetHoldability) throws SQLException {
201         return con.createStatement(resultSetType, resultSetConcurrency, resultSetHoldability);
202     }
203 
204     @Override
205     public PreparedStatement prepareStatement(String sql, int resultSetType,
206             int resultSetConcurrency, int resultSetHoldability) throws SQLException {
207         return con.prepareStatement(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
208     }
209 
210     @Override
211     public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency,
212             int resultSetHoldability) throws SQLException {
213         return con.prepareCall(sql, resultSetType, resultSetConcurrency, resultSetHoldability);
214     }
215 
216     @Override
217     public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
218             throws SQLException {
219         return con.prepareStatement(sql, autoGeneratedKeys);
220     }
221 
222     @Override
223     public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException {
224         return con.prepareStatement(sql, columnIndexes);
225     }
226 
227     @Override
228     public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException {
229         return con.prepareStatement(sql, columnNames);
230     }
231 
232     @Override
233     public Clob createClob() throws SQLException {
234         return con.createClob();
235     }
236 
237     @Override
238     public Blob createBlob() throws SQLException {
239         return con.createBlob();
240     }
241 
242     @Override
243     public NClob createNClob() throws SQLException {
244         return con.createNClob();
245     }
246 
247     @Override
248     public SQLXML createSQLXML() throws SQLException {
249         return con.createSQLXML();
250     }
251 
252     @Override
253     public boolean isValid(int timeout) throws SQLException {
254         return con.isValid(timeout);
255     }
256 
257     @Override
258     public void setClientInfo(String name, String value) throws SQLClientInfoException {
259         con.setClientInfo(name, value);
260     }
261 
262     @Override
263     public void setClientInfo(Properties properties) throws SQLClientInfoException {
264         con.setClientInfo(properties);
265     }
266 
267     @Override
268     public String getClientInfo(String name) throws SQLException {
269         return con.getClientInfo(name);
270     }
271 
272     @Override
273     public Properties getClientInfo() throws SQLException {
274         return con.getClientInfo();
275     }
276 
277     @Override
278     public Array createArrayOf(String typeName, Object[] elements) throws SQLException {
279         return con.createArrayOf(typeName, elements);
280     }
281 
282     @Override
283     public Struct createStruct(String typeName, Object[] attributes) throws SQLException {
284         return con.createStruct(typeName, attributes);
285     }
286 
287     @Override
288     public void setSchema(String schema) throws SQLException {
289         con.setSchema(schema);
290     }
291 
292     @Override
293     public String getSchema() throws SQLException {
294         return con.getSchema();
295     }
296 
297     @Override
298     public void abort(Executor executor) throws SQLException {
299         con.abort(executor);
300     }
301 
302     @Override
303     public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {
304         con.setNetworkTimeout(executor, milliseconds);
305     }
306 
307     @Override
308     public int getNetworkTimeout() throws SQLException {
309         return con.getNetworkTimeout();
310     }
311 }