package jeql.workbench;
import jeql.api.JeqlOptions;
import jeql.api.JeqlRunner;
class JeqlRunnable implements Runnable
{
public interface RunListener {
void end(JeqlRunner runner);
}
private RunListener listener;
private String scriptFile;
private String scriptText;
private boolean isKeepData = false;
JeqlRunnable(RunListener listener)
{
this.listener = listener;
}
public void setScriptFile(String scriptFile)
{
this.scriptFile = scriptFile;
}
public void setScript(String scriptText)
{
this.scriptText = scriptText;
}
public void setKeepData(boolean isKeepData)
{
this.isKeepData = isKeepData;
}
public void run()
{
JeqlRunner runner = new JeqlRunner();
JeqlOptions options = new JeqlOptions();
options.setWorkbench(true);
// Workbench Run mode => not keeping data => run in Monitor View mode
options.setMonitorView(! isKeepData);
runner.init(options);
//TODO: fix exception handling
boolean returnCode;
try {
returnCode = runScript(runner);
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally {
listener.end(runner);
}
}
private boolean runScript(JeqlRunner runner)
throws Exception
{
if (scriptFile != null) {
return runner.execScriptFile(scriptFile, null);
}
return runner.execScript(scriptText, null);
}
}