package org.test4j.module.dbfit; import java.io.FileNotFoundException; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.test4j.module.database.environment.DBEnvironment; import org.test4j.module.database.environment.DBEnvironmentFactory; import org.test4j.module.dbfit.utility.DBFitSqlRunner; import org.test4j.module.dbfit.utility.DbFitRunner; import org.test4j.module.dbfit.utility.FitRunner; import org.test4j.module.dbfit.utility.SymbolUtil; @SuppressWarnings("rawtypes") public class Test4JFitnesse { /** * 通过程序来准备数据库数据<br> * 一般用于在spring加载缓存资源时使用,在@BeforeClass中调用 * * @param clazz * @param wiki * @param wikis */ public void runDbFit(Class clazz, String wiki, String... wikis) { DbFitRunner.runDbFit(clazz, wiki, wikis); } public void runDbFit(Class clazz, boolean cleanSymbols, String wiki, String... wikis) { DbFitRunner.runDbFit(clazz, cleanSymbols, wiki, wikis); } /** * 通过程序来准备数据库数据<br> * 一般用于在spring加载缓存资源时使用,在@BeforeClass中调用<br> * 或者用程序来整备wiki变量时使用 * * @param clazz * @param symbols * @param wiki * @param wikis */ public void runDbFit(Class clazz, Map<String, ?> symbols, String wiki, String... wikis) { DbFitRunner.runDbFit(clazz, symbols, wiki, wikis); } /** * 通过程序来运行fitnesse wiki文件<br> * 一般用于在spring加载缓存资源时使用,在@BeforeClass中调用 * * @param clazz * @param wiki * @param wikis */ public void runFit(Class clazz, String wiki, String... wikis) { FitRunner.runFit(clazz, wiki, wikis); } /** * 通过程序来运行fitnesse wiki文件<br> * 一般用于在spring加载缓存资源时使用,在@BeforeClass中调用<br> * 或者用程序来整备wiki变量时使用 * * @param clazz * @param symbols * @param wiki * @param wikis */ public void runFit(Class clazz, Map<String, Object> symbols, String wiki, String... wikis) { FitRunner.runFit(clazz, symbols, wiki, wikis); } @SuppressWarnings("unchecked") public <T> T getSymbol(String key) { Object o = SymbolUtil.getSymbol(key); return (T) o; } public void setSymbol(String key, Object value) { SymbolUtil.setSymbol(key, value); } public void setSymbols(Map<String, Object> symbols) { SymbolUtil.setSymbol(symbols); } public void cleanSymbols() { SymbolUtil.cleanSymbols(); } /** * 使用默认的数据源执行相关sql操作 */ public void useDefaultDataSource() { DBEnvironment environment = DBEnvironmentFactory.getDefaultDBEnvironment(); DBEnvironmentFactory.changeDBEnvironment(environment); } /** * 使用指定的数据源执行相关sql操作 * * @param dataSourceName */ public void useSpecDataSource(String dataSourceName) { DBEnvironment environment = DBEnvironmentFactory.getDBEnvironment(dataSourceName); DBEnvironmentFactory.changeDBEnvironment(environment); } /** * 使用指定的数据源执行相关sql操作 * * @param dataSourceName 数据源名称 * @param dataSourceFrom 数据源配置文件 */ public void useSpecDataSource(String dataSourceName, String dataSourceFrom) { DBEnvironment environment = DBEnvironmentFactory.getDBEnvironment(dataSourceName, dataSourceFrom); DBEnvironmentFactory.changeDBEnvironment(environment); } /** * 执行单条sql语句 * * @param sql 单条sql * @param sqls 单条sql * @throws SQLException */ public void execute(String sql, String... sqls) { DBFitSqlRunner.instance.execute(sql); for (String item : sqls) { DBFitSqlRunner.instance.execute(item); } } /** * 提交操作 * * @throws SQLException */ public void commit() { DBFitSqlRunner.instance.commit(); } /** * 回滚操作 * * @throws SQLException */ public void rollback() { DBFitSqlRunner.instance.rollback(); } /** * 执行sql文件<br> * 默认从classpath中读取<br> * classpath:前缀开头,表示从classpath中读取<br> * file:前缀开头,表示从文件系统中读取<br> * * @param sqlFile * @throws SQLException * @throws FileNotFoundException */ public void executeSQLFile(String sqlFile) throws Exception { DBFitSqlRunner.instance.executeFromFile(sqlFile); } /** * 替换sql文件中@{variable}变量后,在执行sql文件 * * @param symbols * @param sqlFile * @throws SQLException * @throws FileNotFoundException */ public void executeSQLFile(Map<String, ?> symbols, String sqlFile) throws Exception { DBFitSqlRunner.instance.executeFromFile(symbols, sqlFile); } /** * 根据sql查询数据,如果result是Map.class则返回Map类型<br> * 如果是PoJo,则根据camel name命名方式初始化result * * @param <T> * @param sql query语句 * @param claz 返回值类型 * @return * @throws SQLException */ public <T> T query(String sql, Class<T> claz) { T result = DBFitSqlRunner.instance.query(sql, claz); return result; } /** * 执行sql,返回查询数据列表,如果result是Map.class则返回Map列表<br> * 如果是PoJo,则根据camel name命名方式初始化result,返回PoJo列表 * * @param <T> * @param sql 查询语句 * @param claz 列表中数据类型 * @return * @throws SQLException */ public <T> List<T> queryList(String sql, Class<T> clazz) { List<T> list = DBFitSqlRunner.instance.queryList(sql, clazz); return list; } }