From aff082a3033c8acd88230a476fcda1f4281b598e Mon Sep 17 00:00:00 2001 From: qidaijie Date: Sun, 27 Dec 2020 18:15:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9if=E5=87=BD=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E4=B8=BA=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E8=8B=A5=E4=B8=BA=E6=95=B0=E5=AD=97=E5=88=99=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E4=B8=BAlong=E7=B1=BB=E5=9E=8B=E8=BF=94=E5=9B=9E=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ac/iie/utils/general/TransFunction.java | 18 +++++++++++++----- .../java/cn/ac/iie/test/FunctionIfTest.java | 19 +++++++++++++++++++ 2 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 src/test/java/cn/ac/iie/test/FunctionIfTest.java diff --git a/src/main/java/cn/ac/iie/utils/general/TransFunction.java b/src/main/java/cn/ac/iie/utils/general/TransFunction.java index 2ee2f4b..51a5692 100644 --- a/src/main/java/cn/ac/iie/utils/general/TransFunction.java +++ b/src/main/java/cn/ac/iie/utils/general/TransFunction.java @@ -14,12 +14,15 @@ import org.apache.log4j.Logger; import java.util.ArrayList; import java.util.Arrays; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * @author qidaijie */ class TransFunction { private static Logger logger = Logger.getLogger(TransFunction.class); + private static final Pattern pattern = Pattern.compile("[0-9]*"); /** * 生成当前时间戳的操作 @@ -156,14 +159,13 @@ class TransFunction { } /** - * IF函数实现,解析日志构建三目运算 + * IF函数实现,解析日志构建三目运算;包含判断是否为数字若为数字则转换为long类型返回结果。 * * @param object 内存实体类 * @param ifParam 字段名/普通字符串 * @return resultA or resultB or "" */ - static String condition(Object object, String ifParam) { - String result = ""; + static Object condition(Object object, String ifParam) { try { String[] split = ifParam.split(FlowWriteConfig.FORMAT_SPLITTER); String[] norms = split[0].split(FlowWriteConfig.IF_CONDITION_SPLITTER); @@ -172,13 +174,19 @@ class TransFunction { if (split.length == FlowWriteConfig.IF_PARAM_LENGTH) { String resultA = isJsonValue(object, split[1]); String resultB = isJsonValue(object, split[2]); - result = (Integer.parseInt(direction) == Integer.parseInt(norms[1])) ? resultA : resultB; + String result = (Integer.parseInt(direction) == Integer.parseInt(norms[1])) ? resultA : resultB; + Matcher isNum = pattern.matcher(result); + if (isNum.matches()) { + return Long.parseLong(result); + } else { + return result; + } } } } catch (Exception e) { logger.error("IF 函数执行异常,异常信息:" + e); e.printStackTrace(); } - return result; + return null; } } diff --git a/src/test/java/cn/ac/iie/test/FunctionIfTest.java b/src/test/java/cn/ac/iie/test/FunctionIfTest.java new file mode 100644 index 0000000..440d785 --- /dev/null +++ b/src/test/java/cn/ac/iie/test/FunctionIfTest.java @@ -0,0 +1,19 @@ +package cn.ac.iie.test; + +import org.junit.Test; + +/** + * @author qidaijie + * @Package cn.ac.iie.test + * @Description: + * @date 2020/12/2717:33 + */ +public class FunctionIfTest { + + @Test + public void IfTest() { + String s = "123"; + Object obj = s; + + } +}