121 Star 221 Fork 111

alexgaoyh / MutiModule-parent

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Demo.java 5.43 KB
一键复制 编辑 原始数据 按行查看 历史
alexgaoyh 提交于 2016-08-05 14:51 . 复杂四则运算
package com.anysoft.examples;
import java.util.Date;
import com.anysoft.formula.DateUtil;
import com.anysoft.formula.DefaultFunctionHelper;
import com.anysoft.formula.Expression;
import com.anysoft.formula.Function;
import com.anysoft.formula.Parser;
import com.anysoft.formula.DataProvider;
import com.anysoft.formula.FunctionHelper;
public class Demo {
public static void simple(String[] args) {
Parser parser = new Parser();
String formula = "1>2 || 3<5 && 2";
Expression expr = parser.parse(formula);
System.out.println(expr.toString());
System.out.println(expr.getValue(null));
}
public static void withDataProvider(String[] args) {
Parser parser = new Parser();
String formula = "1+2+to_long(id)";
Expression expr = parser.parse(formula);
System.out.println(expr.toString());
System.out.println(expr.getValue(new DataProvider() {
@Override
public String getValue(String varName, Object context,
String defaultValue) {
if (varName.equals("id")) {
return "100";
}
return null;
}
@Override
public Object getContext(String varName) {
return new Object();
}
}));
}
public static void withDefaultFunctionHelper(String[] args) {
DefaultFunctionHelper functionHelper = new DefaultFunctionHelper();
Parser parser = new Parser(functionHelper);
String formula = "1+2+choice(2>1,100,2000)";
Expression expr = parser.parse(formula);
System.out.println(expr.toString());
System.out.println(expr.getValue(null));
}
public static void withFunctionHelper(String[] args) {
Parser parser = new Parser(new FunctionHelper() {
public Expression customize(String funcName) {
if (funcName.equals("choice")) {
return new Function.Choice();
}
return null;
}
});
String formula = "1+2+choice(2>1,100,2000)";
Expression expr = parser.parse(formula);
System.out.println(expr.toString());
System.out.println(expr.getValue(null));
}
public static void testDate(String[] args) {
DefaultFunctionHelper functionHelper = new DefaultFunctionHelper();
Parser parser = new Parser(functionHelper);
String formula = "to_char(to_date(now,'yyyyMMdd'),'yyyyMMddhh24miss')";
Expression expr = parser.parse(formula);
System.out.println(expr.toString());
System.out.println(expr.getValue(new DataProvider() {
@Override
public String getValue(String varName, Object context,
String defaultValue) {
if (varName.equals("now")) {
return DateUtil.formatDate(new Date(), "yyyyMMdd");
}
return null;
}
@Override
public Object getContext(String varName) {
return new Object();
}
}));
}
public static void testString(String[] args) {
DefaultFunctionHelper functionHelper = new DefaultFunctionHelper();
Parser parser = new Parser(functionHelper);
String formula = "substr(hello,instr(hello,'world'),9)+match(hello,'Hello*')+strlen(hello)";
Expression expr = parser.parse(formula);
System.out.println(expr.toString());
System.out.println(expr.getValue(new DataProvider() {
@Override
public String getValue(String varName, Object context,
String defaultValue) {
if (varName.equals("hello")) {
return "Hello world";
}
return null;
}
@Override
public Object getContext(String varName) {
return new Object();
}
}));
}
public static void testNvl(String[] args) {
DefaultFunctionHelper functionHelper = new DefaultFunctionHelper();
Parser parser = new Parser(functionHelper);
String formula = "nvl(null_var,1000) + to_long(nvl(id,'20'))";
Expression expr = parser.parse(formula);
System.out.println(expr.toString());
System.out.println(expr.getValue(new DataProvider() {
@Override
public String getValue(String varName, Object context,
String defaultValue) {
if (varName.equals("id")) {
return "100";
}
return null;
}
@Override
public Object getContext(String varName) {
return new Object();
}
}));
}
public static void testPMT(String[] args) {
DefaultFunctionHelper functionHelper = new DefaultFunctionHelper();
Parser parser = new Parser(functionHelper);
String formula = "PMT(0.00515,360,-770000,0,0)";
Expression expr = parser.parse(formula);
System.out.println(expr.toString());
System.out.println(expr.getValue(new DataProvider() {
@Override
public String getValue(String varName, Object context,
String defaultValue) {
return null;
}
@Override
public Object getContext(String varName) {
return new Object();
}
}));
}
public static Object testMyFormulaUtilss(String formula) {
DefaultFunctionHelper functionHelper = new DefaultFunctionHelper();
Parser parser = new Parser(functionHelper);
Expression expr = parser.parse(formula);
Object returnObj = (expr.getValue(new DataProvider() {
@Override
public String getValue(String varName, Object context,
String defaultValue) {
return null;
}
@Override
public Object getContext(String varName) {
return new Object();
}
}));
return returnObj;
}
public static void main(String[] args) {
String[] str = new String[]{"PMT(0.00515,360,-770000,0,0)", "FV(0.00515, -770000, 4706.02, 0, 1)",
"NPER(0.00515, 4706.02, -770000, 0, 1)", "PV(0.00515, 360, -4706.02, 0, 1)",
"DB(100,0,10,1,12)", "DDB(2400,0,5,1,2)",
"RATE(4,10000,-30000,0,0,0.1)", "EFFECT(0.0525,4)", "1+2+3*(3+4)+(3*(6+0)+5)"};
for (String string : str) {
System.out.println("执行语句:" + string +" 结果值:" + testMyFormulaUtilss(string));
}
}
}
Java
1
https://gitee.com/alexgaoyh/MutiModule-parent.git
git@gitee.com:alexgaoyh/MutiModule-parent.git
alexgaoyh
MutiModule-parent
MutiModule-parent
master

搜索帮助