代码拉取完成,页面将自动刷新
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));
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。