View Javadoc

1   package com.imcode.db.benchmark;
2   
3   import com.imcode.db.jdbc.PreparedStatementWrapper;
4   
5   import java.sql.PreparedStatement;
6   import java.sql.ResultSet;
7   import java.sql.SQLException;
8   
9   import org.apache.commons.lang.time.StopWatch;
10  
11  class BenchmarkPreparedStatement extends PreparedStatementWrapper {
12  
13      private final String sql;
14      private BenchmarkDatabase benchmarkDatabase;
15  
16      BenchmarkPreparedStatement(BenchmarkDatabase benchmarkDatabase, PreparedStatement preparedStatement, String sql) {
17          super(preparedStatement);
18          this.benchmarkDatabase = benchmarkDatabase;
19          this.sql = sql;
20      }
21  
22      public ResultSet executeQuery() throws SQLException {
23          StopWatch stopWatch = new StopWatch();
24          stopWatch.start();
25          ResultSet resultSet = super.executeQuery();
26          stopWatch.stop();
27          long time = stopWatch.getTime();
28          benchmarkDatabase.getAverages(sql).getQueryAverage().add(time, 1);
29          return new BenchmarkResultSet(benchmarkDatabase, sql, resultSet);
30      }
31  
32  }