package com.mossle.core.jdbc; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DataSourceService { private Logger logger = LoggerFactory.getLogger(DataSourceService.class); private Map<String, DataSourceInfo> dataSourceInfoMap = new HashMap<String, DataSourceInfo>(); private Map<String, DataSourceWrapper> dataSourceMap = new HashMap<String, DataSourceWrapper>(); private String defaultName = "default"; private boolean log4jdbcEnabled; // ~ ====================================================================== public DataSourceWrapper getDataSource() { return getDataSource(defaultName); } public DataSourceWrapper getDataSource(String name) { return dataSourceMap.get(name); } public Collection<DataSourceWrapper> getDataSources() { return dataSourceMap.values(); } public boolean isDataSourceExists(String name) { return dataSourceMap.containsKey(name); } public void saveDataSource(String name, DataSourceWrapper dataSource) { dataSourceMap.put(name, dataSource); } public void removeDataSource(String name) { dataSourceMap.remove(name); } public void clearDataSource() { dataSourceMap.clear(); } // ~ ====================================================================== public DataSourceInfo getDataSourceInfo(String name) { return dataSourceInfoMap.get(name); } public Collection<DataSourceInfo> getDataSourceInfos() { return dataSourceInfoMap.values(); } public boolean isDataSourceInfoExists(String name) { return dataSourceInfoMap.containsKey(name); } public void saveDataSourceInfo(DataSourceInfo dataSourceInfo) { dataSourceInfoMap.put(dataSourceInfo.getName(), dataSourceInfo); } public void removeDataSourceInfo(String name) { dataSourceInfoMap.remove(name); } public void clearDataSourceInfo() { dataSourceInfoMap.clear(); } // ~ ====================================================================== public void enableLog4jdbc() { for (DataSourceWrapper dataSourceWrapper : getDataSources()) { dataSourceWrapper.enableLog4jdbc(); } log4jdbcEnabled = true; } public void disableLog4jdbc() { for (DataSourceWrapper dataSourceWrapper : getDataSources()) { dataSourceWrapper.disableLog4jdbc(); } log4jdbcEnabled = false; } public boolean isLog4jdbcEnabled() { return log4jdbcEnabled; } public void setLog4jdbcEnabled(boolean log4jdbcEnabled) { this.log4jdbcEnabled = log4jdbcEnabled; } // ~ ====================================================================== public void register(DataSourceInfo dataSourceInfo) { logger.debug("register : {}", dataSourceInfo); String name = dataSourceInfo.getName(); DataSourceWrapper dataSourceWrapper = dataSourceMap.get(name); if (dataSourceWrapper != null) { logger.debug("close : {}", dataSourceWrapper); dataSourceWrapper.close(); } dataSourceWrapper = new DataSourceWrapper(dataSourceInfo); dataSourceWrapper.setLog4jdbcEnabled(log4jdbcEnabled); dataSourceWrapper.init(); dataSourceInfoMap.put(name, dataSourceInfo); dataSourceMap.put(name, dataSourceWrapper); } }