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<String, Object> expressionMap = new HashMap<String,Object>();
|
|
public static void removeExpression(String key) {
|
if (expressionMap.containsKey(key)) {
|
expressionMap.remove(key);
|
}
|
}
|
|
public static boolean invokeExpressionListner(String key, String expressionCode, HashMap<String, Object> 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<String, Object> parameters = new HashMap<String, Object>();
|
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;
|
}
|
}
|