1 package com.imcode.db.benchmark;
2
3 import com.imcode.db.Database;
4 import com.imcode.db.DatabaseCommand;
5 import com.imcode.db.DatabaseException;
6 import com.imcode.db.AbstractDatabase;
7
8 import java.util.HashMap;
9 import java.util.Map;
10
11 public class BenchmarkDatabase extends AbstractDatabase {
12
13 private HashMap averagesMap = new HashMap() ;
14
15 private final Database database;
16
17 public BenchmarkDatabase(Database database) {
18 this.database = database;
19 }
20
21 public Object execute(final DatabaseCommand databaseCommand) throws DatabaseException {
22 return database.execute(new BenchmarkDatabaseCommand(this, databaseCommand)) ;
23 }
24
25 BenchmarkAverages getAverages(String sql) {
26 BenchmarkAverages averages = (BenchmarkAverages) averagesMap.get(sql);
27 if (null == averages ) {
28 averages = new BenchmarkAverages();
29 averagesMap.put(sql, averages) ;
30 }
31 return averages;
32 }
33
34 public Object executeCommand(DatabaseCommand databaseCommand) throws DatabaseException {
35 return execute(databaseCommand) ;
36 }
37
38 public Map getBenchmarks() {
39 return (Map) averagesMap.clone();
40 }
41
42 }