package marubinotto.piggydb.ui.page.common; import java.sql.Connection; import javax.sql.DataSource; import marubinotto.piggydb.impl.db.DatabaseSchema; import marubinotto.piggydb.impl.db.H2JdbcUrl; import marubinotto.util.Assert; import marubinotto.util.RdbUtils; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.NoSuchBeanDefinitionException; public class DatabaseSpecificBeans { private BeanFactory factory; public DatabaseSpecificBeans(BeanFactory factory) { Assert.Arg.notNull(factory, "factory"); this.factory = factory; } public DataSource getDataSource() { return (DataSource) this.factory.getBean("dataSource"); } public Connection getJdbcConnection() { return RdbUtils.getSpringTransactionalConnection(getDataSource()); } public DatabaseSchema getDatabaseSchema() { return (DatabaseSchema) this.factory.getBean("databaseSchema"); } public H2JdbcUrl getH2JdbcUrl() { return (H2JdbcUrl) getBeanIfExists("h2JdbcUrl"); } protected Object getBeanIfExists(String beanName) { try { return this.factory.getBean(beanName); } catch (NoSuchBeanDefinitionException e) { return null; } } }