package dbfit.fixture; import dbfit.api.DBEnvironment; import dbfit.api.DbEnvironmentFactory; import dbfit.util.DataTable; import dbfit.util.FitNesseTestHost; import fit.Parse; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class StoreQuery extends fit.Fixture { private DBEnvironment dbEnvironment; private String query; private String symbolName; public StoreQuery() { dbEnvironment = DbEnvironmentFactory.getDefaultEnvironment(); } public StoreQuery(DBEnvironment environment, String query, String symbolName) { this.dbEnvironment = environment; this.query = query; this.symbolName = symbolName; } public void doTable(Parse table) { if (query == null || symbolName == null) { if (args.length < 2) { throw new UnsupportedOperationException( "No query and symbol name specified to StoreQuery constructor or argument list"); } query = args[0]; symbolName = args[1]; } try ( PreparedStatement st = dbEnvironment.createStatementWithBoundFixtureSymbols( FitNesseTestHost.getInstance(), query) ) { ResultSet rs = st.executeQuery(); DataTable dt = new DataTable(rs); dbfit.util.SymbolUtil.setSymbol(symbolName, dt); } catch (SQLException sqle) { throw new Error(sqle); } } }