| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- package jnpf.util;
- import jnpf.constant.DbSensitiveConstant;
- import java.util.List;
- /**
- * 短信参数解析
- *
- * @author JNPF开发平台组
- * @version V3.1.0
- * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com)
- * @date 2021-12-10
- */
- public class ParameterUtil {
- /**
- * 获取参数
- *
- * @param text 需要解析的文本
- * @param list 存放参数的集合
- * @return
- */
- public static String parse(String openToken, String closeToken, String text, List<String> list) {
- if (text == null || text.isEmpty()) {
- return "";
- }
- // search open token
- int start = text.indexOf(openToken);
- if (start == -1) {
- return text;
- }
- char[] src = text.toCharArray();
- int offset = 0;
- final StringBuilder builder = new StringBuilder();
- StringBuilder expression = null;
- while (start > -1) {
- if (start > 0 && src[start - 1] == '\\') {
- // this open token is escaped. remove the backslash and continue.
- builder.append(src, offset, start - offset - 1).append(openToken);
- offset = start + openToken.length();
- } else {
- // found open token. let's search close token.
- if (expression == null) {
- expression = new StringBuilder();
- } else {
- expression.setLength(0);
- }
- builder.append(src, offset, start - offset);
- offset = start + openToken.length();
- int end = text.indexOf(closeToken, offset);
- while (end > -1) {
- if (end > offset && src[end - 1] == '\\') {
- // this close token is escaped. remove the backslash and continue.
- expression.append(src, offset, end - offset - 1).append(closeToken);
- offset = end + closeToken.length();
- end = text.indexOf(closeToken, offset);
- } else {
- expression.append(src, offset, end - offset);
- break;
- }
- }
- // 塞到list中
- list.add(expression.toString());
- if (end == -1) {
- // close token was not found.
- builder.append(src, start, src.length - start);
- offset = src.length;
- } else {
- offset = end + closeToken.length();
- }
- }
- start = text.indexOf(openToken, offset);
- }
- if (offset < src.length) {
- builder.append(src, offset, src.length - offset);
- }
- return builder.toString();
- }
- /**
- * 判断数据库类型
- *
- * @param driverName 驱动名称
- * @return
- */
- public static String getDbType(String driverName) {
- if (StringUtil.isNotEmpty(driverName)) {
- // 不是使用自定义URL
- String dbType = "";
- if (driverName.contains("mysql")) {
- dbType = "MySQL";
- } else if (driverName.contains("sqlserver")) {
- dbType = "SQLServer";
- } else if (driverName.contains("oracle")) {
- dbType = "Oracle";
- } else if (driverName.contains("dm")) {
- dbType = "DM";
- } else if (driverName.contains("kingbase8")) {
- dbType = "KingbaseES";
- } else if (driverName.contains("postgresql")) {
- dbType = "PostgreSQL";
- }
- return dbType;
- }
- return null;
- }
- /**
- * 检查是否含有关键字
- *
- * @param sql
- * @param sensitive
- * @return
- */
- public static String checkContainsSensitive(String sql, String sensitive) {
- if (StringUtil.isNotEmpty(sql)) {
- String[] split = sensitive.split(",");
- for (String str : split) {
- str = str.trim();
- String[] matchStr = new String[]{str + " ", str.trim() + "-"};
- for (String s : matchStr) {
- boolean contains = sql.toUpperCase().contains(s);
- if (contains) {
- return str.trim();
- }
- }
- }
- }
- return "";
- }
- }
|