package org.archive.crawler.restlet.models; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Collection; import java.util.List; import java.util.Map; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import org.archive.crawler.restlet.ScriptingConsole; @XmlRootElement(name="script") @XmlType(propOrder={ "crawlJobUrl", "crawlJobShortName", "availableScriptEngines", "script", "linesExecuted", "exception", "rawOutput", "htmlOutput", "availableGlobalVariables" }) public class ScriptModel { private String crawlJobUrl; private Collection<Map<String, String>> availableScriptEngines; private ScriptingConsole scriptingConsole; public ScriptModel(ScriptingConsole cc, String crawlJobUrl, Collection<Map<String, String>> scriptEngines) { scriptingConsole = cc; this.crawlJobUrl = crawlJobUrl; this.availableScriptEngines = scriptEngines; } public boolean isFailure() { return scriptingConsole.getException() != null; } public String getStackTrace() { Throwable exception = scriptingConsole.getException(); if (exception == null) return ""; StringWriter s = new StringWriter(); exception.printStackTrace(new PrintWriter(s)); return s.toString(); } public Throwable getException() { return scriptingConsole.getException(); } public int getLinesExecuted() { return scriptingConsole.getLinesExecuted(); } public String getRawOutput() { return scriptingConsole.getRawOutput(); } public String getHtmlOutput() { return scriptingConsole.getHtmlOutput(); } public String getScript() { return scriptingConsole.getScript(); } public String getCrawlJobShortName() { return scriptingConsole.getCrawlJob().getShortName(); } public Collection<Map<String, String>> getAvailableScriptEngines() { return availableScriptEngines; } public List<Map<String, String>> getAvailableGlobalVariables() { return scriptingConsole.getAvailableGlobalVariables(); } public String getCrawlJobUrl() { return crawlJobUrl; } }