1 package com.imcode.db.benchmark;
2
3 import com.imcode.db.DatabaseConnection;
4 import com.imcode.db.DatabaseConnectionWrapper;
5 import com.imcode.db.DatabaseException;
6 import com.imcode.db.JdbcDatabaseConnection;
7 import org.apache.commons.dbutils.ResultSetHandler;
8 import org.apache.commons.lang.time.StopWatch;
9
10 import java.sql.Connection;
11
12 class BenchmarkDatabaseConnection extends DatabaseConnectionWrapper {
13
14 private BenchmarkDatabase benchmarkDatabase;
15
16 BenchmarkDatabaseConnection(final BenchmarkDatabase benchmarkDatabase, final DatabaseConnection connection) {
17 super(new JdbcDatabaseConnection(connection.getConnection()) {
18 public Connection getConnection() {
19 return new BenchmarkConnection(benchmarkDatabase, connection.getConnection());
20 }
21 });
22 this.benchmarkDatabase = benchmarkDatabase ;
23 }
24
25 public Object executeQuery(String sqlQuery, Object[] parameters,
26 ResultSetHandler resultSetHandler) throws DatabaseException {
27
28 StopWatch stopWatch = new StopWatch();
29 stopWatch.start();
30 Object result = super.executeQuery(sqlQuery, parameters, resultSetHandler);
31 stopWatch.stop();
32 long time = stopWatch.getTime();
33 benchmarkDatabase.getAverages(sqlQuery).getTotalAverage().add(time,1);
34 return result ;
35 }
36
37 }