package net.paoding.rose.jade; import java.util.HashMap; import java.util.Map; import java.util.Random; import javax.sql.DataSource; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * 为可能的测试需要提供各种DataSource实现 * <p> * * 这些DataSource使用hsqldb实现,均为内存数据库 * * @author 王志亮 [qieqie.wang@gmail.com] * */ public class DataSources { public static Map<String, DataSource> instances = new HashMap<String, DataSource>(); /** * 获取或创建给定名称的一个DataSource实例 * * @param name * @return */ public static DataSource getDataSource(String name) { DataSource instance = instances.get(name); if (instance == null) { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setUrl("jdbc:hsqldb:mem:" + name); dataSource.setDriverClassName("org.hsqldb.jdbc.JDBCDriver"); instance = dataSource; instances.put(name, instance); } return instance; } /** * 创建一个新的、唯一的DataSource实例 * * @return */ public static DataSource createUniqueDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); int random = new Random(Integer.MAX_VALUE).nextInt(); dataSource.setUrl("jdbc:hsqldb:mem:" + System.currentTimeMillis() + "-" + random); dataSource.setDriverClassName("org.hsqldb.jdbc.JDBCDriver"); return dataSource; } }