package org.molgenis.js;
import org.molgenis.script.Script;
import org.molgenis.script.ScriptRunner;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import static java.util.Objects.requireNonNull;
/**
* Runs a JavaScript with the given inputs and returns one output
*/
@Service
public class JsScriptRunner implements ScriptRunner
{
private static final String NAME = "JavaScript";
private final JsScriptExecutor jsScriptExecutor;
@Autowired
public JsScriptRunner(JsScriptExecutor jsScriptExecutor)
{
this.jsScriptExecutor = requireNonNull(jsScriptExecutor);
}
@Override
public String getName()
{
return NAME;
}
@Override
public String runScript(Script script, Map<String, Object> parameters)
{
String jsScript = script.generateScript(parameters);
Object scriptResult = jsScriptExecutor.executeScript(jsScript);
return scriptResult != null ? scriptResult.toString() : null;
}
}