package fi.otavanopisto.pyramus.util.dataimport.scripting;
import java.io.Reader;
import java.util.Map;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class ScriptedImporter {
public void importDataFromReader(Long loggedUserId, Reader script) throws InvalidScriptException {
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByName("JavaScript");
Invocable inv = (Invocable) se;
try {
Object obj = se.eval(script);
if (obj instanceof Map) {
inv.invokeMethod(obj, "run", new Object[] { new ImportAPI(loggedUserId) });
} else {
throw new InvalidScriptException("Invalid top-level object");
}
} catch (NoSuchMethodException ex) {
throw new InvalidScriptException(ex);
} catch (ScriptException ex) {
throw new InvalidScriptException(ex);
}
}
}