package jef.database.datasource; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.springframework.jdbc.datasource.AbstractDriverBasedDataSource; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * 这是为Spring的AbstractDriverBasedDataSource(含DriverManagerDatasource)所写的包装类,可以将其包装为DataSourceInfo * @author jiyi * */ public class DriverManagerDataSourceWrapper extends AbstractDataSource implements DataSource,DataSourceWrapper{ private AbstractDriverBasedDataSource datasource; public DriverManagerDataSourceWrapper(){ datasource=new DriverManagerDataSource(); } public DriverManagerDataSourceWrapper(AbstractDriverBasedDataSource datasource){ this.datasource=datasource; } public String getUrl() { assertDataSource(); return datasource.getUrl(); } public String getUser() { assertDataSource(); return datasource.getUsername(); } public String getPassword() { assertDataSource(); return datasource.getPassword(); } public Connection getConnection() throws SQLException { assertDataSource(); return datasource.getConnection(); } public Connection getConnection(String username, String password) throws SQLException { return datasource.getConnection(username, password); } private void assertDataSource() { if(datasource==null){ throw new NullPointerException("You have not inject the spring DriverManagerDataSourece into this object."); } } public String getDriverClass() { return null; } public void setUrl(String url) { datasource.setUrl(url); } public void setUser(String user) { datasource.setUsername(user); } public void setPassword(String password) { datasource.setPassword(password); } public void setDriverClass(String driverClassName) { } public boolean isConnectionPool() { return false; } public void setWrappedDataSource(DataSource ds) { this.datasource=(AbstractDriverBasedDataSource)ds; } @Override protected Class<? extends DataSource> getWrappedClass() { return AbstractDriverBasedDataSource.class; } public Properties getProperties() { return datasource.getConnectionProperties(); } public void putProperty(String key, Object value) { if(datasource.getConnectionProperties()==null){ datasource.setConnectionProperties(new Properties()); } datasource.getConnectionProperties().put(key, value); } }