package com.vci.server.base.expression; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class ExpressionUtility { private static Map expressionMap = new HashMap(); public static void removeExpression(String key) { if (expressionMap.containsKey(key)) { expressionMap.remove(key); } } public static boolean invokeExpressionListner(String key, String expressionCode, HashMap parameters) { try { ExpressionIntf expression = null; if ( expressionMap.containsKey(key) ) { expression = (ExpressionIntf) expressionMap.get(key); } else { bsh.Interpreter interpreter = new bsh.Interpreter(); expressionCode = ExpressionUtility.getCompleteExperssion(expressionCode); expression = (ExpressionIntf) interpreter.eval(expressionCode); } return expression.expressionFunction(parameters); } catch(Exception e) { e.printStackTrace(); } return false; } private static String getCompleteExperssion(String expression) { String expressioncode = ""; expressioncode += " public boolean expressionFunction(Map parameters) " + "\n"; expressioncode += " { " + "\n"; expressioncode += expression; expressioncode += " } " + "\n"; expressioncode += " return (com.vci.base.server.expression.ExpressionIntf) this; " + "\n"; return expressioncode; } /** * @param args */ public static void main(String[] args) { HashMap parameters = new HashMap(); parameters.put("a", "10"); parameters.put("b", "20"); ExpressionUtility u = new ExpressionUtility(); // String script = u.readScript(); String script = "System.out.println(\"sss\"); return true;"; ExpressionUtility.invokeExpressionListner("key1", script, parameters); } private String readScript() { String str = ""; try { FileReader read = new FileReader("properties/script.txt"); BufferedReader br = new BufferedReader(read); String row; while((row = br.readLine())!=null){ str += row; } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e){ e.printStackTrace(); } return str; } }