package main.java.parser.model; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import bsh.EvalError; import bsh.Interpreter; public class BeanshellLogicExecutor implements LogicExecuter, Serializable { /** * */ private static final long serialVersionUID = -4388909980140292783L; String script; Map<String, Object> inputValues = new HashMap<String, Object>(); List<String> outputNames = new ArrayList<String>(); public String getScript() { return script; } public void setScript(final String script) { this.script = script; } public Map<String, Object> getInputValues() { return inputValues; } public void setInputValues(final Map<String, Object> inputValues) { this.inputValues = inputValues; } public List<String> getOutputNames() { return outputNames; } @Override public void setOutputNames(final List<String> outputNames) { this.outputNames = outputNames; } @Override public void setParam(final String inputName, final Object value) { inputValues.put(inputName, value); } @Override public Map<String, Object> executeLogic() { final Interpreter interpreter = new Interpreter(); final Map<String, Object> ret = new HashMap<String, Object>(); try { for (final String input : inputValues.keySet()) { interpreter.set(input, inputValues.get(input)); } interpreter.eval(script); for (final String output : outputNames) { ret.put(output, interpreter.get(output)); } } catch (final EvalError e) { // TODO Auto-generated catch block e.printStackTrace(); } return ret; } }