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 7 import java.util.HashMap; 8 import java.util.Map; 9 10 public class BenchmarkDatabase implements Database { 11 12 private HashMap averagesMap = new HashMap() ; 13 14 private final Database database; 15 16 public BenchmarkDatabase(Database database) { 17 this.database = database; 18 } 19 20 public Object execute(final DatabaseCommand databaseCommand) throws DatabaseException { 21 return database.execute(new BenchmarkDatabaseCommand(this, databaseCommand)) ; 22 } 23 24 BenchmarkAverages getAverages(String sql) { 25 BenchmarkAverages averages = (BenchmarkAverages) averagesMap.get(sql); 26 if (null == averages ) { 27 averages = new BenchmarkAverages(); 28 averagesMap.put(sql, averages) ; 29 } 30 return averages; 31 } 32 33 public Object executeCommand(DatabaseCommand databaseCommand) throws DatabaseException { 34 return execute(databaseCommand) ; 35 } 36 37 public Map getBenchmarks() { 38 return (Map) averagesMap.clone(); 39 } 40 41 }