1. FormulaCalculator类 Java代码 1.package test; 2. 3.import java.util.Map; 4. 5.import org.apache.commons.jexl.Expression; 6.import org.apache.commons.jexl.ExpressionFactory; 7.import org.apache.commons.jexl.JexlContext; 8. 9.public class
1. FormulaCalculator类
Java代码
1.package test;
2.
3.import java.util.Map;
4.
5.import org.apache.commons.jexl.Expression;
6.import org.apache.commons.jexl.ExpressionFactory;
7.import org.apache.commons.jexl.JexlContext;
8.
9.public class FormulaCalculator {
10.
11. String _formula;
12.
13. JexlContext _jexlContext;
14.
15. Map _varmap;
16.
17. public FormulaCalculator(){
18.
19. _jexlContext = new JexlContext(){
20. public Map getVars() {
21. return _varmap;
22. }
23. public void setVars(Map vars) {
24. _varmap.clear();
25. _varmap.putAll( vars );
26. }
27. };
28. }
29.
30. public void setFormula(String formula) throws Exception{
31. validateFormula( formula );
32. _formula = formula;
33. }
34.
35. public void setVars(Map vars){
36. _varmap = vars;
37. }
38.
39.
40. public Number calculate() throws Exception{
41. Expression e = ExpressionFactory.createExpression( _formula );
42. return (Number) e.evaluate( _jexlContext );
43. }
44.
45. private void validateFormula( String formula ) throws Exception{
46. // FIXME: implementation
47. }
48.}
package test;
import java.util.Map;
import org.apache.commons.jexl.Expression;
import org.apache.commons.jexl.ExpressionFactory;
import org.apache.commons.jexl.JexlContext;
public class FormulaCalculator {
String _formula;
JexlContext _jexlContext;
Map _varmap;
public FormulaCalculator(){
_jexlContext = new JexlContext(){
public Map getVars() {
return _varmap;
}
public void setVars(Map vars) {
_varmap.clear();
_varmap.putAll( vars );
}
};
}
public void setFormula(String formula) throws Exception{
validateFormula( formula );
_formula = formula;
}
public void setVars(Map vars){
_varmap = vars;
}
public Number calculate() throws Exception{
Expression e = ExpressionFactory.createExpression( _formula );
return (Number) e.evaluate( _jexlContext );
}
private void validateFormula( String formula ) throws Exception{
// FIXME: implementation
}
}