View Javadoc

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  }