package jef.database.datasource; import java.util.Collection; import javax.sql.DataSource; /** * 使用URL来访问json资源得到数据源配置的实现 * @author jiyi * */ public class URLJsonDataSourceLookup implements DataSourceLookup { URLJsonDataSourceInfoLookup inner=new URLJsonDataSourceInfoLookup(); public DataSource getDataSource(String dataSourceName) { DataSourceInfo info=inner.getDataSourceInfo(dataSourceName); return DataSources.getAsDataSource(info); } /** * 数据源配置Json中的唯一标识字段,举例<pre> * [{id:"ds1", url:"jdbc:mysql://localhost:3306/test", user: "root", password:"123456", * driverClassName:"org.gjt.mm.mysql.Driver"}] * </pre> * 在上面这段json中,dataSourceKeyFieldName就是 'id' * @param dataSourceKeyFieldName default valuie is 'url' */ public void setDataSourceKeyFieldName(String dataSourceKeyFieldName) { inner.setDataSourceKeyFieldName(dataSourceKeyFieldName); } /** * 数据源配置Json中的JDBC URL字段,举例<pre> * [{id:"ds1", url:"jdbc:mysql://localhost:3306/test", user: "root", password:"123456", * driverClassName:"org.gjt.mm.mysql.Driver"}] * </pre> * 在上面这段json中,urlFieldName就是 'url' * @param urlFieldName default valuie is 'url' */ public void setUrlFieldName(String urlFieldName) { inner.setUrlFieldName(urlFieldName); } /** * 数据源配置Json中的用户名字段,举例<pre> * [{id:"ds1", url:"jdbc:mysql://localhost:3306/test", user: "root", password:"123456", * driverClassName:"org.gjt.mm.mysql.Driver"}] * </pre> * 在上面这段json中,userFieldName就是 'user' * @param userFieldName default valuie is 'user' */ public void setUserFieldName(String userFieldName) { inner.setUserFieldName(userFieldName); } /** * 数据源配置Json中的用口令字段,举例<pre> * [{id:"ds1", url:"jdbc:mysql://localhost:3306/test", user: "root", password:"123456", * driverClassName:"org.gjt.mm.mysql.Driver"}] * </pre> * 在上面这段json中,passwordFieldName就是 'password' * @param passwordFieldName default valuie is 'password' */ public void setPasswordFieldName(String passwordFieldName) { inner.setPasswordFieldName(passwordFieldName); } /** * 数据源配置Json中的用驱动类字段,举例<pre> * [{id:"ds1", url:"jdbc:mysql://localhost:3306/test", user: "root", password:"123456", * driverClassName:"org.gjt.mm.mysql.Driver"}] * </pre> * 在上面这段json中,driverFieldName就是 'driverClassName' * @param driverFieldName default valuie is 'driverClassName' */ public void setDriverFieldName(String driverFieldName) { inner.setDriverFieldName(driverFieldName); } /** * 设置数据库密码解密回调类。很多时候,我们配置的数据库密码都是加密后的,这种场合下我们可以实现PasswordDecryptor接口, * 并将其设置到DataSourceLookup中,每当发现新的数据源,就可以对其中的用户口令解密. * @param passwordDecryptor */ public void setPasswordDecryptor(PasswordDecryptor passwordDecryptor) { inner.setPasswordDecryptor(passwordDecryptor); } public String getDefaultKey() { return inner.getDefaultKey(); } public void setDefaultKey(String defaultKey) { inner.setDefaultKey(defaultKey); } public Collection<String> getAvailableKeys() { return inner.getAvailableKeys(); } public void setIgnoreCase(boolean ignoreCase) { inner.setIgnoreCase(ignoreCase); } public boolean getIgnoreCase(){ return inner.ignoreCase; } public String getLocation() { return inner.getLocation(); } public void setLocation(String localtion) { inner.setLocation(localtion); } }