Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/fanruan/api/cal/CalculatorKit.java
master
Kalven 5 years ago
parent
commit
c21c14bf3c
  1. 17
      src/main/java/com/fanruan/api/cal/CalculatorKit.java
  2. 12
      src/main/java/com/fanruan/api/cal/FormulaKit.java
  3. 15
      src/test/java/com/fanruan/api/cal/FormulaKitTest.java

17
src/main/java/com/fanruan/api/cal/CalculatorKit.java

@ -12,18 +12,18 @@ import com.fr.stable.StringUtils;
import com.fr.stable.script.CalculatorProvider; import com.fr.stable.script.CalculatorProvider;
import com.fr.stable.script.NameSpace; import com.fr.stable.script.NameSpace;
import com.fr.stable.web.SessionProvider; import com.fr.stable.web.SessionProvider;
import org.jetbrains.annotations.Nullable;
import com.fr.web.core.ReportSessionIDInfor; import com.fr.web.core.ReportSessionIDInfor;
import com.fr.web.core.TemplateSessionIDInfo; import com.fr.web.core.TemplateSessionIDInfo;
import com.fr.web.session.SessionIDInfo; import com.fr.web.session.SessionIDInfo;
import org.jetbrains.annotations.Nullable;
import java.util.Map; import java.util.Map;
/** /**
* @author zack * @author zack
* @date 2019/8/23
* @version 10.0 * @version 10.0
* 帆软算子工具类主要用于公式计算 * 帆软算子工具类主要用于公式计算
* @date 2019/8/23
*/ */
public class CalculatorKit { public class CalculatorKit {
/** /**
@ -78,20 +78,21 @@ public class CalculatorKit {
return calculator; return calculator;
} }
/** /**
* 返回服务器数据集的算子空间可以通过调用calculator.pushNameSpace()将算子空间塞进算子实例从而支持服务器数据集相关的函数计算 * 返回服务器数据集的算子空间可以通过调用calculator.pushNameSpace()将算子空间塞进算子实例从而支持服务器数据集相关的函数计算
* @return 算子空间对象 *
* @return 服务器数据集名字空间
*/ */
public static NameSpace getServerTableDataNameSpace(){ public static NameSpace getServerTableDataNameSpace() {
return TableDataNameSpace.getInstance(); return TableDataNameSpace.getInstance();
} }
/** /**
* 单例模式SimpleCellValueNameSpace * 用于计算单元格的名字空间
* @return SimpleCellValueNameSpace实例对象 *
* @return 单元格名字空间
*/ */
public static NameSpace createSimpleCellValueNameSpace() { public static NameSpace createSimpleCellValueNameSpace() {
return SimpleCellValueNameSpace.getInstance(); return SimpleCellValueNameSpace.getInstance();
} }
} }

12
src/main/java/com/fanruan/api/cal/FormulaKit.java

@ -1,7 +1,9 @@
package com.fanruan.api.cal; package com.fanruan.api.cal;
import com.fanruan.api.err.KitError; import com.fanruan.api.err.KitError;
import com.fanruan.api.util.GeneralKit;
import com.fr.base.BaseFormula; import com.fr.base.BaseFormula;
import com.fr.base.ScriptFormula;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.script.Calculator; import com.fr.script.Calculator;
import com.fr.stable.FormulaProvider; import com.fr.stable.FormulaProvider;
@ -58,6 +60,16 @@ public class FormulaKit {
return BaseFormula.createFormulaBuilder().build(content); return BaseFormula.createFormulaBuilder().build(content);
} }
/**
* 生成脚本公式对象
*
* @param content 公式的内容是一段javascript脚本
* @return 脚本公式
*/
public @NotNull static BaseFormula newScriptFormula(Object content) {
return new ScriptFormula(GeneralKit.objectToString(content));
}
/** /**
* 检查公式内容合法性 * 检查公式内容合法性
* *

15
src/test/java/com/fanruan/api/cal/FormulaKitTest.java

@ -2,9 +2,11 @@ package com.fanruan.api.cal;
import com.fanruan.api.Prepare; import com.fanruan.api.Prepare;
import com.fanruan.api.err.KitError; import com.fanruan.api.err.KitError;
import com.fr.base.BaseFormula;
import com.fr.base.Formula; import com.fr.base.Formula;
import com.fr.base.ParameterMapNameSpace; import com.fr.base.ParameterMapNameSpace;
import com.fr.script.Calculator; import com.fr.script.Calculator;
import com.fr.stable.UtilEvalError;
import com.fr.stable.script.CalculatorProvider; import com.fr.stable.script.CalculatorProvider;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
@ -43,6 +45,19 @@ public class FormulaKitTest extends Prepare {
Assert.fail(); Assert.fail();
} }
} }
@Test
public void testScriptFormula() {
BaseFormula formula = FormulaKit.newScriptFormula("=return Math.abs(-1)");
CalculatorProvider provider = CalculatorKit.createCalculator();
try {
Object r = formula.evalValue(provider);
Assert.assertEquals(1, r);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test @Test
public void testCheckFormulaContent() { public void testCheckFormulaContent() {
assertEquals(true, FormulaKit.checkFormulaContent(new Formula(""))); assertEquals(true, FormulaKit.checkFormulaContent(new Formula("")));

Loading…
Cancel
Save