summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorqidaijie <[email protected]>2020-12-27 18:15:06 +0800
committerqidaijie <[email protected]>2020-12-27 18:15:06 +0800
commitaff082a3033c8acd88230a476fcda1f4281b598e (patch)
tree550b557d851aea38d1ff1b75c2155e0e3898b93f
parente6c602a154c9ee0767c42cb6414562f2eb91ea68 (diff)
修改if函数,判断是否为数字若为数字则转换为long类型返回结果。
-rw-r--r--src/main/java/cn/ac/iie/utils/general/TransFunction.java18
-rw-r--r--src/test/java/cn/ac/iie/test/FunctionIfTest.java19
2 files changed, 32 insertions, 5 deletions
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;
+
+ }
+}