package org.test4j.module.dbfit.fixture.fit;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.test4j.module.database.utility.DBHelper;
import org.test4j.module.dbfit.environment.DbFitEnvironment;
import org.test4j.module.dbfit.fixture.Test4JFixture;
import org.test4j.module.dbfit.model.DataTable;
import fit.Parse;
public class StoreQueryTableFixture extends Test4JFixture {
private DbFitEnvironment dbEnvironment;
private String query;
private String symbolName;
public StoreQueryTableFixture(DbFitEnvironment 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) {
String err = "No query and symbol name specified to StoreQuery constructor or argument list";
throw new UnsupportedOperationException(err);
}
query = args[0];
symbolName = args[1];
}
if (symbolName.startsWith(">>")) {
symbolName = symbolName.substring(2);
}
PreparedStatement st = null;
ResultSet rs = null;
try {
st = dbEnvironment.createStatementWithBoundFixtureSymbols(query);
rs = st.executeQuery();
DataTable dt = new DataTable(rs);
org.test4j.module.dbfit.utility.SymbolUtil.setSymbol(symbolName, dt);
} catch (Exception sqle) {
throw new Error(sqle);
} finally {
DBHelper.closeResultSet(rs);
rs = null;
DBHelper.closeStatement(st);
st = null;
}
}
}