CommonUtils.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. package com.pavis.backend.slim.common.utils;
  2. import cn.hutool.core.date.DateUtil;
  3. import com.alibaba.fastjson2.JSON;
  4. import com.alibaba.fastjson2.JSONArray;
  5. import com.alibaba.fastjson2.JSONObject;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.apache.commons.codec.digest.DigestUtils;
  8. import org.apache.commons.lang3.StringUtils;
  9. import java.io.FileInputStream;
  10. import java.util.regex.Matcher;
  11. import java.util.regex.Pattern;
  12. /**
  13. * @version: java version 1.8
  14. * @Author: Guan H.J.
  15. * @description:
  16. * @date: 2023-11-01 14:25
  17. */
  18. @Slf4j
  19. public class CommonUtils {
  20. /**
  21. * 判断当前数据是否是一个JSON。
  22. *
  23. * @param jsonStr
  24. * @return
  25. */
  26. public static Boolean isJson(String jsonStr) {
  27. try {
  28. JSONObject jsonObject = JSON.parseObject(jsonStr);
  29. if (jsonObject != null) {
  30. return true;
  31. } else {
  32. log.info("该jsonStr不是一个JSON对象");
  33. }
  34. } catch (Exception e) {
  35. log.info("ex -> 该jsonStr不是一个JSON对象:{}", e);
  36. e.printStackTrace();
  37. }
  38. return false;
  39. }
  40. /**
  41. * 判断当前数据是否是一个JSONArray。
  42. *
  43. * @param jsonStr
  44. * @return
  45. */
  46. public static Boolean isJsonArray(String jsonStr) {
  47. try {
  48. Object json = JSON.parse(jsonStr);
  49. if (json instanceof JSONArray) {
  50. log.info("该jsonArrayStr是一个JSONArray对象");
  51. JSONArray jsonArray = (JSONArray) json;
  52. return true;
  53. } else {
  54. log.info("该jsonArrayStr不是一个JSONArray对象");
  55. }
  56. } catch (Exception e) {
  57. log.info("ex -> 该jsonStr不是一个JSONArray对象:{}", e);
  58. e.printStackTrace();
  59. }
  60. return false;
  61. }
  62. public static boolean checkMd5(String filename, String md5) {
  63. try {
  64. FileInputStream fs = new FileInputStream(filename);
  65. String uploadFileMd5 = DigestUtils.md5Hex(fs);
  66. log.info("uploadFileMd5,{}", uploadFileMd5);
  67. if (StringUtils.equalsIgnoreCase(md5, uploadFileMd5)) {
  68. return true;
  69. }
  70. } catch (Exception e) {
  71. e.printStackTrace();
  72. return false;
  73. }
  74. return false;
  75. }
  76. /**
  77. * 处理导入导出图谱schema时实体id的值设置为NULL.
  78. * @param jsonArray
  79. * @return
  80. */
  81. public static JSONArray dealEntityId(JSONArray jsonArray){
  82. // 处理所有的实体ID,设置null。
  83. for (int i = 0; i < jsonArray.size(); i++) {
  84. JSONObject jsonObject = JSON.parseObject(jsonArray.get(i).toString());
  85. if (jsonObject.containsKey("entityId")){
  86. jsonObject.put("entityId",null);
  87. jsonObject.put("createTime", DateUtil.date());
  88. log.info("包含entityId:{}",JSON.toJSONString(jsonObject));
  89. }
  90. jsonArray.set(i,jsonObject);
  91. }
  92. return jsonArray;
  93. }
  94. /**
  95. * 处理导入导出图谱schema时实体关系id的值设置为NULL.
  96. * @param jsonArray
  97. * @return
  98. */
  99. public static JSONArray dealRelationId(JSONArray jsonArray){
  100. // 处理所有的实体ID,设置null。
  101. for (int i = 0; i < jsonArray.size(); i++) {
  102. JSONObject jsonObject = JSON.parseObject(jsonArray.get(i).toString());
  103. if (jsonObject.containsKey("relationId")){
  104. jsonObject.put("relationId",null);
  105. log.info("包含entityId");
  106. }
  107. jsonArray.set(i,jsonObject);
  108. }
  109. return jsonArray;
  110. }
  111. /**
  112. * 处理前端标注数据的颜色。
  113. * @param textFront
  114. * @param entityName
  115. * @param colorStr
  116. * @return
  117. */
  118. public static String dealTextFrontWithColor(String textFront, String entityName,String colorStr,String nameStr) {
  119. log.info("正则匹配替换颜色或名称 sourceName:{},upName:{}",entityName,nameStr);
  120. String regex = "<span[^>]*data-before=\"" + entityName + "\"[^>]*>([^<]+)<\\/span>";
  121. log.info("regex:{}", regex);
  122. Pattern pattern = Pattern.compile(regex);
  123. Matcher matcher = pattern.matcher(textFront);
  124. StringBuffer upTextFront = new StringBuffer();
  125. while (matcher.find()) {
  126. String matched = matcher.group(1);
  127. log.info("matched:{}",matched);
  128. log.info("matcher[0]:{}",matcher.group(0));
  129. String replacedStr = matcher.group(0).replaceAll("--color: #[0-9a-fA-F]{6}", "--color:" + colorStr);
  130. replacedStr = replacedStr.replaceAll("--color:#[0-9a-fA-F]{6}", "--color:" + colorStr);
  131. if (null != nameStr && StringUtils.isNotEmpty(nameStr)){
  132. replacedStr = replacedStr.replaceAll("data-before=\"" + entityName + "\"", "data-before=\"" + nameStr + "\"");
  133. }
  134. log.info("replacedStr:{}",replacedStr);
  135. matcher.appendReplacement(upTextFront, replacedStr);
  136. }
  137. matcher.appendTail(upTextFront);
  138. log.info("最终替换后的标注数据 upTextFront:{}",upTextFront.toString());
  139. return upTextFront.toString();
  140. }
  141. public static void main(String[] args) {
  142. String textFront = "<span class=\"entityhig\" style=\"border-bottom: 8px solid rgb(68, 141, 255); --data-wih: translate(0px,30px); line-height: 30px; --color: #448DFF; background: none; box-shadow: none;\" data-before=\"运动员\" id=\"10\">王曼昱</span>";
  143. String entityName = "运动员";
  144. String colorStr = "#ffffff";
  145. String upTextFront = dealTextFrontWithColorName(textFront, entityName, colorStr,entityName + "哈哈哈");
  146. log.info("upTextFront:{}",upTextFront);
  147. }
  148. public static String dealTextFrontWithColorName(String textFront, String entityName,String colorStr,String nameStr) {
  149. String regex = "<span[^>]*data-before=\"" + entityName + "\"[^>]*>([^<]+)<\\/span>";
  150. log.info("regex:{}", regex);
  151. Pattern pattern = Pattern.compile(regex);
  152. Matcher matcher = pattern.matcher(textFront);
  153. StringBuffer upTextFront = new StringBuffer();
  154. while (matcher.find()) {
  155. String matched = matcher.group(1);
  156. log.info("matched:{}",matched);
  157. log.info("matcher[0]:{}",matcher.group(0));
  158. String replacedStr = matcher.group(0).replaceAll("--color: #[0-9a-fA-F]{6}", "--color:" + colorStr);
  159. replacedStr = replacedStr.replaceAll("--color:#[0-9a-fA-F]{6}", "--color:" + colorStr);
  160. replacedStr = replacedStr.replaceAll("data-before=\"" + entityName + "\"", "data-before=\"" + nameStr + "\"");
  161. log.info("replacedStr:{}",replacedStr);
  162. matcher.appendReplacement(upTextFront, replacedStr);
  163. }
  164. matcher.appendTail(upTextFront);
  165. log.info("最终替换后的标注数据 upTextFront:{}",upTextFront.toString());
  166. return upTextFront.toString();
  167. }
  168. }