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. 13
      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

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

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

@ -1,7 +1,9 @@
package com.fanruan.api.cal;
import com.fanruan.api.err.KitError;
import com.fanruan.api.util.GeneralKit;
import com.fr.base.BaseFormula;
import com.fr.base.ScriptFormula;
import com.fr.log.FineLoggerFactory;
import com.fr.script.Calculator;
import com.fr.stable.FormulaProvider;
@ -58,6 +60,16 @@ public class FormulaKit {
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.err.KitError;
import com.fr.base.BaseFormula;
import com.fr.base.Formula;
import com.fr.base.ParameterMapNameSpace;
import com.fr.script.Calculator;
import com.fr.stable.UtilEvalError;
import com.fr.stable.script.CalculatorProvider;
import org.junit.Assert;
import org.junit.Test;
@ -43,6 +45,19 @@ public class FormulaKitTest extends Prepare {
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
public void testCheckFormulaContent() {
assertEquals(true, FormulaKit.checkFormulaContent(new Formula("")));

Loading…
Cancel
Save