View Javadoc

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