1 package com.imcode.db;
2
3 import javax.sql.DataSource;
4 import java.sql.Connection;
5 import java.sql.SQLException;
6
7 public class DataSourceDatabase extends AbstractDatabase {
8
9 private DataSource dataSource;
10
11 public DataSourceDatabase( DataSource dataSource ) {
12 this.dataSource = dataSource;
13 }
14
15 public Object execute( final DatabaseCommand databaseCommand ) throws DatabaseException {
16 try {
17 Connection connection = dataSource.getConnection();
18 try {
19 DatabaseConnection defaultDatabaseConnection = new JdbcDatabaseConnection( connection );
20 return databaseCommand.executeOn( defaultDatabaseConnection );
21 } finally {
22 connection.close() ;
23 }
24 } catch ( SQLException e ) {
25 throw DatabaseException.fromSQLException( e );
26 }
27 }
28
29 }