package dbfit.fixture;
import dbfit.api.DBEnvironment;
import dbfit.api.DbEnvironmentFactory;
import dbfit.util.NameNormaliser;
import dbfit.util.Options;
import static dbfit.util.Options.OPTION_AUTO_COMMIT;
import fit.Fixture;
import fit.Parse;
import java.sql.SQLException;
public class SetOption extends Fixture {
private DBEnvironment dbEnvironment;
private String option;
private String value;
public SetOption() {
dbEnvironment = DbEnvironmentFactory.getDefaultEnvironment();
}
public SetOption(DBEnvironment env, String option, String value) {
this.dbEnvironment = env;
this.option = NameNormaliser.normaliseName(option);
this.value = value;
}
public void setOption() throws SQLException {
Options.setOption(getOption(), getValue());
setEnvironmentOption();
}
@Override
public void doRows(Parse rows) {
try {
setOption();
} catch (Throwable e) {
throw new Error(e);
}
}
private String getOption() {
if (option == null) {
option = NameNormaliser.normaliseName(args[0]);
}
return option;
}
private String getValue() {
if (value == null) {
value = args[1];
}
return value;
}
private void setEnvironmentOption() throws SQLException {
if (OPTION_AUTO_COMMIT.equals(getOption()) && dbEnvironment != null) {
dbEnvironment.setAutoCommit();
}
}
}