+ * 表达式栗子: + * + *
+ * persion + * persion.name + * persons[3] + * person.friends[5].name + *+ * + * @param json {@link JSON} + * @param expression 表达式 + * @return 对象 + * @see JSON#getByPath(String) + */ + public static Object getByPath(JSON json, String expression) { + return (null == json || StrUtil.isBlank(expression)) ? null : json.getByPath(expression); + } + + /** + * 设置表达式指定位置(或filed对应)的值
+ * 表达式栗子: + * + *
+ * persion + * persion.name + * persons[3] + * person.friends[5].name + *+ * + * @param json JSON,可以为JSONObject或JSONArray + * @param expression 表达式 + * @param value 值 + */ + public static void putByPath(JSON json, String expression, Object value) { + json.putByPath(expression, value); + } + + /** + * 对所有双引号做转义处理(使用双反斜杠做转义)
null =》 JSONNull.NULLnull
+ * 1. {@code null}
+ * 2. {@link JSONNull}
+ *
+ *
+ * @param obj 对象
+ * @return 是否为null
+ * @since 4.5.7
+ */
+ public static boolean isNull(Object obj) {
+ return null == obj || obj instanceof JSONNull;
+ }
+
+ /**
+ * XML转JSONObject+ * 需要注意的是,此工具类在某些数据库(比如Oracle)下无效,此时需要手动在数据库配置中增加: + *
+ * remarks = true + * useInformationSchema = true + *+ * + * @author looly + */ + public static class MetaUtil extends cn.hutool.db.meta.MetaUtil {} + /** + * 异常工具类 + * + * @author Looly + */ + public static class ExceptionUtil extends cn.hutool.core.exceptions.ExceptionUtil {} + /** + * 正则相关工具类
+ * new BigDecimal(0.1) + *+ *
+ * 表示的不是0.1而是0.1000000000000000055511151231257827021181583404541015625 + * + *
+ * 这是因为0.1无法准确的表示为double。因此应该使用new BigDecimal(String)。 + *
+ * 相关介绍: + *+ * 1、系统信息 + * 2、硬件信息 + *+ * + * 相关内容见:https://github.com/oshi/oshi + * + * @author Looly + * @since 4.6.4 + */ + public static class OshiUtil extends cn.hutool.system.oshi.OshiUtil {} + /** + * URL(Uniform Resource Locator)统一资源定位符相关工具类 + * + *
+ * 统一资源定位符,描述了一台特定服务器上某资源的特定位置。 + *
+ * URL组成: + *+ * 协议://主机名[:端口]/ 路径/[:参数] [?查询]#Fragment + * protocol :// hostname[:port] / path / [:parameters][?query]#fragment + *+ * + * @author xiaoleilu + */ + public static class URLUtil extends cn.hutool.core.util.URLUtil {} + /** + * ID生成器工具类,此工具类中主要封装: + * + *
+ * 1. 唯一性ID生成器:UUID、ObjectId(MongoDB)、Snowflake + *+ * + *
+ * ID相关文章见:http://calvin1978.blogcn.com/articles/uuid.html
+ *
+ * @author looly
+ * @since 4.1.13
+ */
+ public static class IdUtil extends net.geedge.confagent.util.IdUtil {}
+ /**
+ * Http请求工具类
+ *
+ * @author xiaoleilu
+ */
+ public static class HttpUtil extends cn.hutool.http.HttpUtil {}
+ /**
+ * 桌面相关工具(平台相关)
+ * Desktop 类允许 Java 应用程序启动已在本机桌面上注册的关联应用程序,以处理 URI 或文件。
+ *
+ * @author looly
+ * @since 4.5.7
+ */
+ public static class DesktopUtil extends cn.hutool.core.swing.DesktopUtil {}
+ /**
+ * 图片处理工具类:
+ * 功能:缩放图像、切割图像、旋转、图像类型转换、彩色转黑白、文字水印、图片水印等
+ * 参考:http://blog.csdn.net/zhangzhikaixinya/article/details/8459400
+ *
+ * @author Looly
+ */
+ public static class ImgUtil extends cn.hutool.core.img.ImgUtil {}
+ /**
+ * 分页工具类
+ *
+ * @author xiaoleilu
+ */
+ public static class PageUtil extends cn.hutool.core.util.PageUtil {}
+ /**
+ * HTML工具类
+ *
+ *
+ * 比如我们在使用爬虫爬取HTML页面后,需要对返回页面的HTML内容做一定处理,
+ * 比如去掉指定标签(例如广告栏等)、去除JS、去掉样式等等,这些操作都可以使用此工具类完成。
+ *
+ * @author xiaoleilu
+ *
+ */
+ public static class HtmlUtil extends cn.hutool.http.HtmlUtil {}
+ /**
+ * PEM(Privacy Enhanced Mail)格式相关工具类。(基于Bouncy Castle)
+ *
+ *
+ * PEM一般为文本格式,以 -----BEGIN... 开头,以 -----END... 结尾,中间的内容是 BASE64 编码。 + *
+ * 这种格式可以保存证书和私钥,有时我们也把PEM格式的私钥的后缀改为 .key 以区别证书与私钥。
+ *
+ * @author looly
+ * @since 5.1.6
+ */
+ public static class PemUtil extends cn.hutool.crypto.PemUtil {}
+ /**
+ * 分词工具类
+ *
+ * @author looly
+ * @since 4.3.3
+ */
+ public static class TokenizerUtil extends cn.hutool.extra.tokenizer.TokenizerUtil {}
+ /**
+ * 工具封装
+ *
+ * @author looly
+ * @since 5.4.4
+ */
+ public static class ExcelExtractorUtil extends cn.hutool.poi.excel.ExcelExtractorUtil {}
+ /**
+ * 邮件工具类,基于javax.mail封装
+ *
+ * @author looly
+ * @since 3.1.2
+ */
+ public static class MailUtil extends cn.hutool.extra.mail.MailUtil {}
+ /**
+ * NIO中Path对象操作封装
+ *
+ * @author looly
+ * @since 5.4.1
+ */
+ public static class PathUtil extends cn.hutool.core.io.file.PathUtil {}
+ /**
+ * 邮件内部工具类
+ * @author looly
+ * @since 3.2.3
+ */
+ public static class InternalMailUtil extends cn.hutool.extra.mail.InternalMailUtil {}
+ /**
+ * 定时任务工具类
+ * 此工具持有一个全局{@link cn.hutool.cron.Scheduler},所有定时任务在同一个调度器中执行
+ * {@link #setMatchSecond(boolean)} 方法用于定义是否使用秒匹配模式,如果为true,则定时任务表达式中的第一位为秒,否则为分,默认是分
+ *
+ * @author xiaoleilu
+ *
+ */
+ public static class CronUtil extends cn.hutool.cron.CronUtil {}
+ /**
+ * Java的System类封装工具类。
+ * 参考:http://blog.csdn.net/zhongweijian/article/details/7619383
+ *
+ * @author Looly
+ */
+ public static class SystemUtil extends cn.hutool.system.SystemUtil {}
+ /**
+ * 压缩工具类
+ * 基于commons-compress的压缩解压封装
+ *
+ * @author looly
+ * @since 5.5.0
+ */
+ public static class CompressUtil extends cn.hutool.extra.compress.CompressUtil {}
+ /**
+ * {@link ClassLoader}工具类
+ *
+ * @author Looly
+ * @since 3.0.9
+ */
+ public static class ClassLoaderUtil extends cn.hutool.core.util.ClassLoaderUtil {}
+ /**
+ * {@link Spliterator}相关工具类
+ *
+ * @author looly
+ * @since 5.4.3
+ */
+ public static class SpliteratorUtil extends cn.hutool.core.collection.SpliteratorUtil {}
+ /**
+ * 监听工具类
+ * 主要负责文件监听器的快捷创建
+ *
+ * @author Looly
+ * @since 3.1.0
+ */
+ public static class WatchUtil extends cn.hutool.core.io.watch.WatchUtil {}
+ /**
+ * Excel样式工具类
+ *
+ * @author looly
+ * @since 4.0.0
+ */
+ public static class StyleUtil extends cn.hutool.poi.excel.style.StyleUtil {}
+ /**
+ * 系统剪贴板工具类
+ *
+ * @author looly
+ * @since 3.2.0
+ */
+ public static class ClipboardUtil extends cn.hutool.core.swing.clipboard.ClipboardUtil {}
+ /**
+ * 文件类型判断工具类
+ *
+ *
此工具根据文件的前几位bytes猜测文件类型,对于文本、zip判断不准确,对于视频、图片类型判断准确
+ * + *需要注意的是,xlsx、docx等Office2007格式,全部识别为zip,因为新版采用了OpenXML格式,这些格式本质上是XML文件打包为zip
+ * + * @author Looly + */ + public static class FileTypeUtil extends cn.hutool.core.io.FileTypeUtil {} + /** + * 引用工具类,主要针对{@link Reference} 工具化封装
+ * 1. {@link SoftReference} 软引用,在GC报告内存不足时会被GC回收
+ * 2. {@link WeakReference} 弱引用,在GC时发现弱引用会回收其对象
+ * 3. {@link PhantomReference} 虚引用,在GC时发现虚引用对象,会将{@link PhantomReference}插入{@link ReferenceQueue}。 此时对象未被真正回收,要等到{@link ReferenceQueue}被真正处理后才会被回收。
+ *
+ *
+ * @author looly
+ * @since 3.1.2
+ */
+ public static class ReferenceUtil extends cn.hutool.core.util.ReferenceUtil {}
+ /**
+ * 布隆过滤器工具
+ *
+ * @author looly
+ * @since 4.1.5
+ */
+ public static class BloomFilterUtil extends cn.hutool.bloomfilter.BloomFilterUtil {}
+ /**
+ * 修饰符工具类
+ *
+ * @author looly
+ * @since 4.0.5
+ */
+ public static class ModifierUtil extends cn.hutool.core.util.ModifierUtil {}
+ /**
+ * 集合的stream操作封装
+ *
+ * @author 528910437@QQ.COM
+ * @since 5.5.2
+ */
+ public static class CollStreamUtil extends cn.hutool.core.collection.CollStreamUtil {}
+ /**
+ * 摘要算法工具类
+ *
+ * @author Looly
+ */
+ public static class DigestUtil extends cn.hutool.crypto.digest.DigestUtil {}
+ /**
+ * 对象工具类,包括判空、克隆、序列化等操作
+ *
+ * @author Looly
+ */
+ public static class ObjectUtil extends cn.hutool.core.util.ObjectUtil {}
+ /**
+ * Hash算法大全+ * 1. 获取方法的参数和返回值类型(包括Type和Class) + * 2. 获取泛型参数类型(包括对象的泛型参数或集合元素的泛型类型) + *+ * + * @author Looly + * @since 3.0.8 + */ + public static class TypeUtil extends cn.hutool.core.util.TypeUtil {} + /** + * Excel文件工具类 + * + * @author looly + * @since 4.2.1 + */ + public static class ExcelFileUtil extends cn.hutool.poi.excel.ExcelFileUtil {} + /** + * NIO工具类 + * + * @since 5.4.0 + */ + public static class NioUtil extends cn.hutool.socket.nio.NioUtil {} + /** + * 类工具类
+ * 参考:https://my.oschina.net/xinxingegeya/blog/287476 + * + * @author Looly + */ + public static class HexUtil extends cn.hutool.core.util.HexUtil {} + /** + * 数据大小工具类 + * + * @author looly + * @since 5.3.10 + */ + public static class DataSizeUtil extends cn.hutool.core.io.unit.DataSizeUtil {} + /** + * User-Agent工具类 + * + * @author looly + * + */ + public static class UserAgentUtil extends cn.hutool.http.useragent.UserAgentUtil {} + /** + * 统一社会信用代码工具类 + * + *
+ * 第一部分:登记管理部门代码1位 (数字或大写英文字母) + * 第二部分:机构类别代码1位 (数字或大写英文字母) + * 第三部分:登记管理机关行政区划码6位 (数字) + * 第四部分:主体标识码(组织机构代码)9位 (数字或大写英文字母) + * 第五部分:校验码1位 (数字或大写英文字母) + *+ * + * @author looly + * @since 5.2.4 + */ + public static class CreditCodeUtil extends cn.hutool.core.util.CreditCodeUtil {} + /** + * {@link Temporal} 工具类封装 + * + * @author looly + * @since 5.4.5 + */ + public static class TemporalUtil extends cn.hutool.core.date.TemporalUtil {} + /** + * Setting工具类
+ * emoji-java文档以及别名列表见:https://github.com/vdurmont/emoji-java + * + * @author looly + * @since 4.2.1 + */ + public static class EmojiUtil extends cn.hutool.extra.emoji.EmojiUtil {} + /** + * Bean工具类 + * + *
+ * 把一个拥有对属性进行set和get方法的类,我们就可以称之为JavaBean。 + *
+ * + * @author Looly + * @since 3.1.2 + */ + public static class BeanUtil extends cn.hutool.core.bean.BeanUtil {} + /** + * Servlet相关工具类封装 + * + * @author looly + * @since 3.2.0 + */ + public static class ServletUtil extends cn.hutool.extra.servlet.ServletUtil {} + /** + * java bean 校验工具类,此工具类基于validation-api(jakarta.validation-api)封装 + * + *在实际使用中,用户需引入validation-api的实现,如:hibernate-validator
+ *注意:hibernate-validator还依赖了javax.el,需自行引入。
+ * + * @author chengqiang + * @since 5.5.0 + */ + public static class ValidationUtil extends cn.hutool.extra.validation.ValidationUtil {} + /** + * Excel工作簿相关工具类 + * + * @author looly + * @since 4.0.7 + * + */ + public static class WorkbookUtil extends cn.hutool.poi.excel.WorkbookUtil {} + /** + * 拼音工具类,封装了TinyPinyin、JPinyin、Pinyin4j,通过SPI自动识别。 + * + * @author looly + */ + public static class PinyinUtil extends cn.hutool.extra.pinyin.PinyinUtil {} + /** + * 调用者。可以通过此类的方法获取调用者、多级调用者以及判断是否被调用 + * + * @author Looly + * @since 4.1.6 + */ + public static class CallerUtil extends cn.hutool.core.lang.caller.CallerUtil {} + /** + * 定时任务表达式工具类 + * + * @author looly + * + */ + public static class CronPatternUtil extends cn.hutool.cron.pattern.CronPatternUtil {} + /** + * 系统运行时工具类,用于执行系统命令的工具 + * + * @author Looly + * @since 3.1.1 + */ + public static class RuntimeUtil extends cn.hutool.core.util.RuntimeUtil {} + /** + * {@link TemporalAccessor} 工具类封装 + * + * @author looly + * @since 5.3.9 + */ + public static class TemporalAccessorUtil extends cn.hutool.core.date.TemporalAccessorUtil {} + /** + * 图形验证码工具 + * + * @author looly + * @since 3.1.2 + */ + public static class CaptchaUtil extends cn.hutool.captcha.CaptchaUtil {} + /** + * 反射工具类 + * + * @author Looly + * @since 3.0.9 + */ + public static class ReflectUtil extends cn.hutool.core.util.ReflectUtil {} + /** + * IPV4地址工具类 + * + *pr自:https://gitee.com/loolly/hutool/pulls/161
+ * + * @author ZhuKun + * @since 5.4.1 + */ + public static class Ipv4Util extends cn.hutool.core.net.Ipv4Util {} + /** + * {@link Robot} 封装工具类,提供截屏等工具 + * + * @author looly + * @since 4.1.14 + */ + public static class RobotUtil extends cn.hutool.core.swing.RobotUtil {} + /** + * {@link Graphics}相关工具类 + * + * @author looly + * @since 4.5.2 + */ + public static class GraphicsUtil extends cn.hutool.core.img.GraphicsUtil {} + /** + * Cglib工具类 + * + * @author looly + * @since 5.4.1 + */ + public static class CglibUtil extends cn.hutool.extra.cglib.CglibUtil {} + /** + * 转义和反转义工具类Escape / Unescape+ * 包括: + *
+ * 1、生成密钥(单密钥、密钥对) + * 2、读取密钥文件 + *+ * + * @author looly, Gsealy + * @since 4.4.1 + */ + public static class KeyUtil extends cn.hutool.crypto.KeyUtil {} + /** + * 基于Zxing的二维码工具类 + * + * @author looly + * @since 4.0.2 + */ + public static class QrCodeUtil extends cn.hutool.extra.qrcode.QrCodeUtil {} + /** + * SQL相关工具类,包括相关SQL语句拼接等 + * + * @author looly + * @since 4.0.10 + */ + public static class SqlUtil extends cn.hutool.db.sql.SqlUtil {} + /** + * Excel工具类,不建议直接使用index直接操作sheet,在wps/excel中sheet显示顺序与index无关,还有隐藏sheet + * + * @author Looly + * + */ + public static class ExcelUtil extends cn.hutool.poi.excel.ExcelUtil {} + /** + * 缓存工具类 + * @author Looly + *@since 3.0.1 + */ + public static class CacheUtil extends cn.hutool.cache.CacheUtil {} + /** + * Word工具类 + * + * @author Looly + * @since 4.5.16 + */ + public static class WordUtil extends cn.hutool.poi.word.WordUtil {} + /** + * 注解工具类
+ * 本工具并没有对行政区划代码做校验,如有需求,请参阅(2018年10月): + * http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/20181011221630.html + *
+ * + * @author Looly + * @since 3.0.4 + */ + public static class IdcardUtil extends cn.hutool.core.util.IdcardUtil {} + /** + * 字符工具类+ * 此工具方法针对{@link Collection}及其实现类封装的工具。 + *
+ * 由于{@link Collection} 实现了{@link Iterable}接口,因此部分工具此类不提供,而是在{@link IterUtil} 中提供 + * + * @author xiaoleilu + * @see IterUtil + * @since 3.1.1 + */ + public static class CollUtil extends cn.hutool.core.collection.CollUtil {} + /** + * {@link JavaFileObject} 相关工具类封装 + * + * @author lzpeng, looly + * @since 5.5.2 + */ + public static class JavaFileObjectUtil extends cn.hutool.core.compiler.JavaFileObjectUtil {} + /** + * 数组工具类 + * + * @author Looly + */ + public static class ArrayUtil extends cn.hutool.core.util.ArrayUtil {} + /** + * SSL(Secure Sockets Layer 安全套接字协议)相关工具封装 + * + * @author looly + * @since 5.5.2 + */ + public static class SSLUtil extends cn.hutool.core.net.SSLUtil {} + /** + * 集合相关工具类,包括数组,是{@link CollUtil} 的别名工具类类 + * + * @author xiaoleilu + * @see CollUtil + */ + public static class CollectionUtil extends cn.hutool.core.collection.CollectionUtil {} + /** + * Excel表格中单元格工具类 + * + * @author looly + * @since 4.0.7 + */ + public static class CellUtil extends cn.hutool.poi.excel.cell.CellUtil {} + /** + * 字符集工具类 + * + * @author xiaoleilu + */ + public static class CharsetUtil extends cn.hutool.core.util.CharsetUtil {} + /** + * 字符串工具类 + * + * @author xiaoleilu + */ + public static class StrUtil extends cn.hutool.core.util.StrUtil {} + /** + * Map相关工具类 + * + * @author Looly + * @since 3.1.1 + */ + public static class MapUtil extends cn.hutool.core.map.MapUtil {} + /** + * SPI机制中的服务加载工具类,流程如下 + * + *
+ * 1、创建接口,并创建实现类 + * 2、ClassPath/META-INF/services下创建与接口全限定类名相同的文件 + * 3、文件内容填写实现类的全限定类名 + *+ * 相关介绍见:https://www.jianshu.com/p/3a3edbcd8f24 + * + * @author looly + * @since 5.1.6 + */ + public static class ServiceLoaderUtil extends cn.hutool.core.util.ServiceLoaderUtil {} + /** + * Spring(Spring boot)工具封装,包括: + * + *
+ * 1、Spring IOC容器中的bean对象获取 + *+ * + * @author loolly + * @since 5.1.0 + */ + public static class SpringUtil extends cn.hutool.extra.spring.SpringUtil {} + /** + * 随机工具类 + * + * @author xiaoleilu + */ + public static class RandomUtil extends cn.hutool.core.util.RandomUtil {} + public static class ListUtil extends cn.hutool.core.collection.ListUtil {} + /** + * Resource资源工具类 + * + * @author Looly + * + */ + public static class ResourceUtil extends cn.hutool.core.io.resource.ResourceUtil {} + /** + * AWT中字体相关工具类 + * + * @author looly + * @since 5.3.6 + */ + public static class FontUtil extends cn.hutool.core.img.FontUtil {} + /** + * CSV工具 + * + * @author looly + * @since 4.0.5 + */ + public static class CsvUtil extends cn.hutool.core.text.csv.CsvUtil {} + /** + * Word中表格相关工具 + * + * @author Looly + * @since 4.5.14 + */ + public static class TableUtil extends cn.hutool.poi.word.TableUtil {} + /** + * 原始类型数组工具类 + * + * @author looly + * @since 5.5.2 + */ + public static class PrimitiveArrayUtil extends cn.hutool.core.util.PrimitiveArrayUtil {} + + + /** + * @Description + * @Author rui + * @Date 2021/3/23 + */ + public static class JSONUtil extends net.geedge.confagent.util.JSONUtil{} + + public static class YamlUtil extends net.geedge.confagent.util.YamlUtil{} + + /** + * 获取项目中各种路径 + * @author ThinkPad + * + */ + public static class WebPathUtil { + static Log log= Log.get(); + /** + * 如果已打成jar包,则返回jar包所在目录 + * 如果未打成jar,则返回target所在目录 + * @return + */ + public static String getClassPath() { + try { + // 项目的编译文件的根目录 + String path = URLDecoder.decode(System.getProperty("user.dir"), "utf-8"); + log.debug("root path:{}",path); + return path; + } catch (UnsupportedEncodingException e) { + return null; + } + } + + public static String getRootPath() { + File file = Tool.FileUtil.file(WebPathUtil.getClassPath()); + return file.getAbsolutePath(); + } + + } +} diff --git a/src/main/java/net/geedge/confagent/util/YamlUtil.java b/src/main/java/net/geedge/confagent/util/YamlUtil.java new file mode 100644 index 0000000..ef55436 --- /dev/null +++ b/src/main/java/net/geedge/confagent/util/YamlUtil.java @@ -0,0 +1,112 @@ +package net.geedge.confagent.util; + +import cn.hutool.core.util.StrUtil; +import org.springframework.beans.factory.config.YamlPropertiesFactoryBean; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.Resource; +import org.yaml.snakeyaml.Yaml; + +import java.io.BufferedReader; +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +public class YamlUtil { + + public static void writeAsMap(Map map,String path){ + Map writeObj = map; + if(writeObj == null) + writeObj = new HashMap<>(); + Yaml yaml = new Yaml(); + Tool.FileUtil.writeUtf8String(yaml.dumpAsMap(writeObj), path); + } + + /** + * @Description 将yaml文件中的内容读取到map中 + * @Author rui + * @Date 2021/3/24 + */ + public static Map