package frame.persist; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import javax.sql.DataSource; import org.apache.log4j.Logger; import com.alibaba.druid.pool.DruidDataSource; import frame.role.Scenario; import frame.util.MapList; public class ConnectionManager { private static Logger logger; private static MapList dataSourceList; private static NamedDataSource defaultDataSource; private static NamedDataSource activeDataSource; static { logger = Logger.getLogger(ConnectionManager.class); dataSourceList = new MapList(); } public static Connection createConnection() { try { if (activeDataSource != null) { return activeDataSource.getConnection(); } Scenario scenario = ScenarioContainer.getActiveScenario(); if (scenario == null) { return defaultDataSource.getConnection(); } DataSource dataSource = scenario.getDataSource(); return dataSource.getConnection(); } catch (SQLException e) { logger.error(e); return null; } } public static void appendDataSource(NamedDataSource dataSource) throws SQLException { String name = dataSource.getName(); if (name == null) { return; } dataSourceList.add(name, dataSource); if (defaultDataSource == null) { defaultDataSource = dataSource; } } public static NamedDataSource getDataSource(String code) { if (code == null) { return null; } return dataSourceList.get(code); } public static List getDataSourceList() { return dataSourceList.getItemList(); } public static void setActiveSource(NamedDataSource dataSource) { activeDataSource = dataSource; } }