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 }