diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java new file mode 100644 index 0000000..7900fda --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java @@ -0,0 +1,16 @@ +package com.casic.missiles.function; + +import com.googlecode.aviator.runtime.function.AbstractFunction; + +/** + * @author cz + * 只是扩展使用,没有实际用处 + */ +public class CustomizedFunction extends AbstractFunction { + + @Override + public String getName() { + return null; + } + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java new file mode 100644 index 0000000..7900fda --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java @@ -0,0 +1,16 @@ +package com.casic.missiles.function; + +import com.googlecode.aviator.runtime.function.AbstractFunction; + +/** + * @author cz + * 只是扩展使用,没有实际用处 + */ +public class CustomizedFunction extends AbstractFunction { + + @Override + public String getName() { + return null; + } + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java new file mode 100644 index 0000000..4b0728a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java @@ -0,0 +1,46 @@ +package com.casic.missiles.function; + + +import com.googlecode.aviator.runtime.function.AbstractFunction; +import com.googlecode.aviator.runtime.function.FunctionUtils; +import com.googlecode.aviator.runtime.type.AviatorObject; +import com.googlecode.aviator.runtime.type.AviatorStringBuilder; + +import java.beans.Customizer; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * @author cz + */ +public class HexDateFormatFunction extends CustomizedFunction { + /** + * + * @param env 自定义的参数 + * @param arg1 函数参数 + * @return + */ + @Override + public AviatorObject call(Map env, AviatorObject arg1) { + String timeFormat = FunctionUtils.getStringValue(arg1, env); + String currentTime = new SimpleDateFormat(timeFormat).format(new Date()); + String[] timeSegments = currentTime.split("-"); + String dateTime = ""; + for (String timeSegment : timeSegments) { + String hexTimeSegment = Integer.toHexString(Integer.valueOf(timeSegment)); + dateTime += hexTimeSegment.length() == 1 ? "0" + hexTimeSegment : hexTimeSegment; + } + return new AviatorStringBuilder(dateTime); + } + + /** + * 函数自定义名称 + * @return + */ + @Override + public String getName() { + return "hexDateFormat"; + } + +} \ No newline at end of file diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java new file mode 100644 index 0000000..7900fda --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java @@ -0,0 +1,16 @@ +package com.casic.missiles.function; + +import com.googlecode.aviator.runtime.function.AbstractFunction; + +/** + * @author cz + * 只是扩展使用,没有实际用处 + */ +public class CustomizedFunction extends AbstractFunction { + + @Override + public String getName() { + return null; + } + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java new file mode 100644 index 0000000..4b0728a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java @@ -0,0 +1,46 @@ +package com.casic.missiles.function; + + +import com.googlecode.aviator.runtime.function.AbstractFunction; +import com.googlecode.aviator.runtime.function.FunctionUtils; +import com.googlecode.aviator.runtime.type.AviatorObject; +import com.googlecode.aviator.runtime.type.AviatorStringBuilder; + +import java.beans.Customizer; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * @author cz + */ +public class HexDateFormatFunction extends CustomizedFunction { + /** + * + * @param env 自定义的参数 + * @param arg1 函数参数 + * @return + */ + @Override + public AviatorObject call(Map env, AviatorObject arg1) { + String timeFormat = FunctionUtils.getStringValue(arg1, env); + String currentTime = new SimpleDateFormat(timeFormat).format(new Date()); + String[] timeSegments = currentTime.split("-"); + String dateTime = ""; + for (String timeSegment : timeSegments) { + String hexTimeSegment = Integer.toHexString(Integer.valueOf(timeSegment)); + dateTime += hexTimeSegment.length() == 1 ? "0" + hexTimeSegment : hexTimeSegment; + } + return new AviatorStringBuilder(dateTime); + } + + /** + * 函数自定义名称 + * @return + */ + @Override + public String getName() { + return "hexDateFormat"; + } + +} \ No newline at end of file diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java index 08788b2..d6acc37 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java @@ -1,6 +1,6 @@ package com.casic.missiles.listeners; -public interface EventListener{ +public interface EventListener { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java new file mode 100644 index 0000000..7900fda --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java @@ -0,0 +1,16 @@ +package com.casic.missiles.function; + +import com.googlecode.aviator.runtime.function.AbstractFunction; + +/** + * @author cz + * 只是扩展使用,没有实际用处 + */ +public class CustomizedFunction extends AbstractFunction { + + @Override + public String getName() { + return null; + } + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java new file mode 100644 index 0000000..4b0728a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java @@ -0,0 +1,46 @@ +package com.casic.missiles.function; + + +import com.googlecode.aviator.runtime.function.AbstractFunction; +import com.googlecode.aviator.runtime.function.FunctionUtils; +import com.googlecode.aviator.runtime.type.AviatorObject; +import com.googlecode.aviator.runtime.type.AviatorStringBuilder; + +import java.beans.Customizer; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * @author cz + */ +public class HexDateFormatFunction extends CustomizedFunction { + /** + * + * @param env 自定义的参数 + * @param arg1 函数参数 + * @return + */ + @Override + public AviatorObject call(Map env, AviatorObject arg1) { + String timeFormat = FunctionUtils.getStringValue(arg1, env); + String currentTime = new SimpleDateFormat(timeFormat).format(new Date()); + String[] timeSegments = currentTime.split("-"); + String dateTime = ""; + for (String timeSegment : timeSegments) { + String hexTimeSegment = Integer.toHexString(Integer.valueOf(timeSegment)); + dateTime += hexTimeSegment.length() == 1 ? "0" + hexTimeSegment : hexTimeSegment; + } + return new AviatorStringBuilder(dateTime); + } + + /** + * 函数自定义名称 + * @return + */ + @Override + public String getName() { + return "hexDateFormat"; + } + +} \ No newline at end of file diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java index 08788b2..d6acc37 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java @@ -1,6 +1,6 @@ package com.casic.missiles.listeners; -public interface EventListener{ +public interface EventListener { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java index 0a7de08..6952ccf 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java @@ -91,11 +91,11 @@ byte[] bytes = null; //查询当前设备类型,并且版本号对应,否则重新读取,获取最新的版本号,读取不到则读取失败 if (UpgradeFileStore.versionFileStoreMap.containsKey(deviceType) - && (StringUtils.isEmpty(version) || UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion().equals(version))) { + && (StringUtils.isEmpty(version) || version.equals(UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion()))) { typeVersionFileBytes = UpgradeFileStore.versionFileStoreMap.get(deviceType); } else { //线程读取安全问题 - synchronized (deviceType+version) { + synchronized (deviceType + version) { if (UpgradeFileStore.versionFileStoreMap.containsKey(deviceType) && (StringUtils.isEmpty(version) || UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion().equals(version))) { typeVersionFileBytes = UpgradeFileStore.versionFileStoreMap.get(deviceType); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java new file mode 100644 index 0000000..7900fda --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java @@ -0,0 +1,16 @@ +package com.casic.missiles.function; + +import com.googlecode.aviator.runtime.function.AbstractFunction; + +/** + * @author cz + * 只是扩展使用,没有实际用处 + */ +public class CustomizedFunction extends AbstractFunction { + + @Override + public String getName() { + return null; + } + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java new file mode 100644 index 0000000..4b0728a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java @@ -0,0 +1,46 @@ +package com.casic.missiles.function; + + +import com.googlecode.aviator.runtime.function.AbstractFunction; +import com.googlecode.aviator.runtime.function.FunctionUtils; +import com.googlecode.aviator.runtime.type.AviatorObject; +import com.googlecode.aviator.runtime.type.AviatorStringBuilder; + +import java.beans.Customizer; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * @author cz + */ +public class HexDateFormatFunction extends CustomizedFunction { + /** + * + * @param env 自定义的参数 + * @param arg1 函数参数 + * @return + */ + @Override + public AviatorObject call(Map env, AviatorObject arg1) { + String timeFormat = FunctionUtils.getStringValue(arg1, env); + String currentTime = new SimpleDateFormat(timeFormat).format(new Date()); + String[] timeSegments = currentTime.split("-"); + String dateTime = ""; + for (String timeSegment : timeSegments) { + String hexTimeSegment = Integer.toHexString(Integer.valueOf(timeSegment)); + dateTime += hexTimeSegment.length() == 1 ? "0" + hexTimeSegment : hexTimeSegment; + } + return new AviatorStringBuilder(dateTime); + } + + /** + * 函数自定义名称 + * @return + */ + @Override + public String getName() { + return "hexDateFormat"; + } + +} \ No newline at end of file diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java index 08788b2..d6acc37 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java @@ -1,6 +1,6 @@ package com.casic.missiles.listeners; -public interface EventListener{ +public interface EventListener { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java index 0a7de08..6952ccf 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java @@ -91,11 +91,11 @@ byte[] bytes = null; //查询当前设备类型,并且版本号对应,否则重新读取,获取最新的版本号,读取不到则读取失败 if (UpgradeFileStore.versionFileStoreMap.containsKey(deviceType) - && (StringUtils.isEmpty(version) || UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion().equals(version))) { + && (StringUtils.isEmpty(version) || version.equals(UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion()))) { typeVersionFileBytes = UpgradeFileStore.versionFileStoreMap.get(deviceType); } else { //线程读取安全问题 - synchronized (deviceType+version) { + synchronized (deviceType + version) { if (UpgradeFileStore.versionFileStoreMap.containsKey(deviceType) && (StringUtils.isEmpty(version) || UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion().equals(version))) { typeVersionFileBytes = UpgradeFileStore.versionFileStoreMap.get(deviceType); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/replier/decorator/ByteFieldDecorator.java b/sensorhub-core/src/main/java/com/casic/missiles/replier/decorator/ByteFieldDecorator.java index b58e1d0..5b35da7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/replier/decorator/ByteFieldDecorator.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/replier/decorator/ByteFieldDecorator.java @@ -3,12 +3,15 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.missiles.function.CustomizedFunction; import com.casic.missiles.pojo.AbstractFieldConfig; +import com.casic.missiles.util.ClazzUtil; import com.googlecode.aviator.AviatorEvaluator; import io.netty.buffer.ByteBuf; import lombok.extern.slf4j.Slf4j; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -19,7 +22,7 @@ public class ByteFieldDecorator { /** - * 定制化的和默认的byte回复报文构建 + * 定制化的和默认的byte回复报文构建 * * @param fieldConfig * @param currentConfigValue @@ -35,7 +38,7 @@ /** - * 默认byte构建修饰器 + * 默认byte构建修饰器 * * @param fieldConfig * @param currentValue @@ -47,7 +50,7 @@ } /** - * 定制化的byte报文构建修饰器 + * 定制化的byte报文构建修饰器 * 1、执行前置规则处理 * 2、调用默认的报文构建 * @@ -58,6 +61,11 @@ */ private static void buildCustomByte(AbstractFieldConfig fieldConfig, Object currentConfigValue, ByteBuf dynamicContent, String replyRuleExpression) { try { + //加载自定义函数 + List customizedFunctions = ClazzUtil.getSubClassList(CustomizedFunction.class, false); + for (CustomizedFunction customizedFunction : customizedFunctions) { + AviatorEvaluator.addFunction(customizedFunction); + } Map env2 = new HashMap(); //如果当前实际的值不存在的时候,直接进行rule执行,不需要 if (ObjectUtils.isNotEmpty(currentConfigValue)) { diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java new file mode 100644 index 0000000..7900fda --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/CustomizedFunction.java @@ -0,0 +1,16 @@ +package com.casic.missiles.function; + +import com.googlecode.aviator.runtime.function.AbstractFunction; + +/** + * @author cz + * 只是扩展使用,没有实际用处 + */ +public class CustomizedFunction extends AbstractFunction { + + @Override + public String getName() { + return null; + } + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java new file mode 100644 index 0000000..4b0728a --- /dev/null +++ b/sensorhub-core/src/main/java/com/casic/missiles/function/HexDateFormatFunction.java @@ -0,0 +1,46 @@ +package com.casic.missiles.function; + + +import com.googlecode.aviator.runtime.function.AbstractFunction; +import com.googlecode.aviator.runtime.function.FunctionUtils; +import com.googlecode.aviator.runtime.type.AviatorObject; +import com.googlecode.aviator.runtime.type.AviatorStringBuilder; + +import java.beans.Customizer; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Map; + +/** + * @author cz + */ +public class HexDateFormatFunction extends CustomizedFunction { + /** + * + * @param env 自定义的参数 + * @param arg1 函数参数 + * @return + */ + @Override + public AviatorObject call(Map env, AviatorObject arg1) { + String timeFormat = FunctionUtils.getStringValue(arg1, env); + String currentTime = new SimpleDateFormat(timeFormat).format(new Date()); + String[] timeSegments = currentTime.split("-"); + String dateTime = ""; + for (String timeSegment : timeSegments) { + String hexTimeSegment = Integer.toHexString(Integer.valueOf(timeSegment)); + dateTime += hexTimeSegment.length() == 1 ? "0" + hexTimeSegment : hexTimeSegment; + } + return new AviatorStringBuilder(dateTime); + } + + /** + * 函数自定义名称 + * @return + */ + @Override + public String getName() { + return "hexDateFormat"; + } + +} \ No newline at end of file diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java index 08788b2..d6acc37 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/EventListener.java @@ -1,6 +1,6 @@ package com.casic.missiles.listeners; -public interface EventListener{ +public interface EventListener { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java index 0a7de08..6952ccf 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/UpgradeFileProvider.java @@ -91,11 +91,11 @@ byte[] bytes = null; //查询当前设备类型,并且版本号对应,否则重新读取,获取最新的版本号,读取不到则读取失败 if (UpgradeFileStore.versionFileStoreMap.containsKey(deviceType) - && (StringUtils.isEmpty(version) || UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion().equals(version))) { + && (StringUtils.isEmpty(version) || version.equals(UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion()))) { typeVersionFileBytes = UpgradeFileStore.versionFileStoreMap.get(deviceType); } else { //线程读取安全问题 - synchronized (deviceType+version) { + synchronized (deviceType + version) { if (UpgradeFileStore.versionFileStoreMap.containsKey(deviceType) && (StringUtils.isEmpty(version) || UpgradeFileStore.versionFileStoreMap.get(deviceType).getVersion().equals(version))) { typeVersionFileBytes = UpgradeFileStore.versionFileStoreMap.get(deviceType); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/replier/decorator/ByteFieldDecorator.java b/sensorhub-core/src/main/java/com/casic/missiles/replier/decorator/ByteFieldDecorator.java index b58e1d0..5b35da7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/replier/decorator/ByteFieldDecorator.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/replier/decorator/ByteFieldDecorator.java @@ -3,12 +3,15 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.casic.missiles.function.CustomizedFunction; import com.casic.missiles.pojo.AbstractFieldConfig; +import com.casic.missiles.util.ClazzUtil; import com.googlecode.aviator.AviatorEvaluator; import io.netty.buffer.ByteBuf; import lombok.extern.slf4j.Slf4j; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -19,7 +22,7 @@ public class ByteFieldDecorator { /** - * 定制化的和默认的byte回复报文构建 + * 定制化的和默认的byte回复报文构建 * * @param fieldConfig * @param currentConfigValue @@ -35,7 +38,7 @@ /** - * 默认byte构建修饰器 + * 默认byte构建修饰器 * * @param fieldConfig * @param currentValue @@ -47,7 +50,7 @@ } /** - * 定制化的byte报文构建修饰器 + * 定制化的byte报文构建修饰器 * 1、执行前置规则处理 * 2、调用默认的报文构建 * @@ -58,6 +61,11 @@ */ private static void buildCustomByte(AbstractFieldConfig fieldConfig, Object currentConfigValue, ByteBuf dynamicContent, String replyRuleExpression) { try { + //加载自定义函数 + List customizedFunctions = ClazzUtil.getSubClassList(CustomizedFunction.class, false); + for (CustomizedFunction customizedFunction : customizedFunctions) { + AviatorEvaluator.addFunction(customizedFunction); + } Map env2 = new HashMap(); //如果当前实际的值不存在的时候,直接进行rule执行,不需要 if (ObjectUtils.isNotEmpty(currentConfigValue)) { diff --git a/sensorhub-support/src/main/java/com/casic/missiles/util/AviatorUtil.java b/sensorhub-support/src/main/java/com/casic/missiles/util/AviatorUtil.java index fc13be9..aec6ac2 100644 --- a/sensorhub-support/src/main/java/com/casic/missiles/util/AviatorUtil.java +++ b/sensorhub-support/src/main/java/com/casic/missiles/util/AviatorUtil.java @@ -2,57 +2,20 @@ import cn.hutool.core.util.ObjectUtil; import com.googlecode.aviator.AviatorEvaluator; -import com.googlecode.aviator.runtime.function.AbstractFunction; -import com.googlecode.aviator.runtime.function.FunctionUtils; -import com.googlecode.aviator.runtime.type.AviatorBigInt; -import com.googlecode.aviator.runtime.type.AviatorObject; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufAllocator; -import io.netty.buffer.ByteBufUtil; -import org.bouncycastle.util.encoders.Hex; -import java.nio.charset.Charset; +import java.text.SimpleDateFormat; import java.util.*; public class AviatorUtil { public static void main(String[] args) { -// byte[] query = {0x00, 0x00, 0x00, 0x00, (byte) 0x5B, (byte) 0xA8, (byte) 0x0A, (byte) 0x40}; -// String ruleJson = "[{\"ruletype\":\"logicalShift\",\"vaildRange\":\"1,2, 3,4\",},{\"ruletype\":\"mergeCombin\",\"vaildRange\":\"1,2,3,4\",},{\"ruletype\":\"conversionRule\",\"vaildRange\":\"1,2,3,4\",},{\"ruletype\":\"operation\",\"vaildRange\":\"1,2,3,4\",},{\"ruletype\":\"precision\",\"vaildRange\":\"1,2,3,4\",}]"; -// List maps = JSONArray.parseArray(ruleJson, Map.class); -// List bytStrList = new ArrayList<>(); -// for (int i = 0; i < query.length; i++) { -// bytStrList.add(query[i]); -// } - //Original String -// tring string = "hello world"; -// List list = new ArrayList<>(); -// Map env2 = new HashMap(); -// for (int i = 0; i < 2; i++) { -// list.add("2"); -// } -// env2.put("list", list); - - Object values = String.valueOf(AviatorEvaluator.execute("dateTime=date_to_string(sysdate(),'yyyyMMddHHmmss');string.replace_first(dateTime,\"20\",\"\")")); +// AviatorEvaluator.addFunction(new HexDateFormatFunction()); + String currentTime = new SimpleDateFormat("").format(new Date()); + Object values = String.valueOf(AviatorEvaluator.execute("hexDateFormat(\"yy-MM-dd-HH-mm-ss\")")); System.out.println(values); -// int i = 0; + } - static class MinFunction extends AbstractFunction { - @Override - public AviatorObject call(Map env, AviatorObject arg1, AviatorObject arg2) { - Number left = FunctionUtils.getNumberValue(arg1, env); - Number right = FunctionUtils.getNumberValue(arg2, env); - return new AviatorBigInt(Math.min(left.doubleValue(), right.doubleValue())); - } - - @Override - public String getName() { - return "min"; - } - } - - //字节位移 private static Object resolveLogicalShift(Object value, Integer index) { Map env2 = new HashMap();