Browse Source
Merge in DESIGN/design from ~HOKY.HE/design-hoky:feature/x to feature/x * commit '16f808f86bd3b20e3ae25dd1f232e91c58a5f5a0': REPORT-58124 公式编辑器优化:不支持实时计算的功能提示处理 1.修改遍历不支持公式的逻辑 REPORT-58124 公式编辑器优化:不支持实时计算的功能提示处理 1.添加一些不支持函数research/11.0
Hoky.He
3 years ago
2 changed files with 70 additions and 20 deletions
@ -0,0 +1,49 @@ |
|||||||
|
package com.fr.design.formula; |
||||||
|
|
||||||
|
import com.fr.parser.BinaryExpression; |
||||||
|
import com.fr.parser.FunctionCall; |
||||||
|
import com.fr.stable.script.Node; |
||||||
|
|
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author Hoky |
||||||
|
* @date 2021/8/30 |
||||||
|
*/ |
||||||
|
public class UnsupportedFormulaScanner { |
||||||
|
public final static String[] UNSUPPORTED_FORMULAS = new String[]{"PROPORTION", "TOIMAGE", |
||||||
|
"WEBIMAGE", "SORT", "CROSSLAYERTOTAL", "CIRCULAR", "LAYERTOTAL", "MOM", "HIERARCHY", |
||||||
|
"FILENAME", "FILESIZE", "FILETYPE", "TREELAYER", "GETUSERDEPARTMENTS", "GETUSERJOBTITLES"}; |
||||||
|
|
||||||
|
private String unSupportFormula = ""; |
||||||
|
|
||||||
|
public boolean travelFormula(Node node) { |
||||||
|
if (node instanceof FunctionCall) { |
||||||
|
if (isUnsupportedFomula(((FunctionCall) node).getName())) { |
||||||
|
unSupportFormula = ((FunctionCall) node).getName(); |
||||||
|
return false; |
||||||
|
} else { |
||||||
|
for (Node argument : ((FunctionCall) node).getArguments()) { |
||||||
|
if (!travelFormula(argument)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} else if (node instanceof BinaryExpression) { |
||||||
|
for (Node array : ((BinaryExpression) node).getNodes()) { |
||||||
|
if (!travelFormula(array)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public String getUnSupportFormula() { |
||||||
|
return unSupportFormula; |
||||||
|
} |
||||||
|
|
||||||
|
private static boolean isUnsupportedFomula(String formula) { |
||||||
|
return Arrays.asList(UNSUPPORTED_FORMULAS).contains(formula.toUpperCase()); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue