package com.nfwork.dbfound.util; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.nfwork.dbfound.exception.ParamNotFoundException; import com.nfwork.dbfound.model.bean.Param; /** * 静态参数 初始化 * * @author John * */ public class ParseUtil { static String replaceString = "\\#\\{\\@[ a-zA-Z_0-9\u4E00-\u9FA5]*\\}"; /** * 静态参数 初始化 * @param sql * @param params * @return */ public static String parse(String sql, Map<String, Param> params) { if (sql == null || "".equals(sql)) { return ""; } String paramValue; Pattern p = Pattern.compile(replaceString); Matcher m = p.matcher(sql); StringBuffer buf = new StringBuffer(); while (m.find()) { String param = m.group(); String pn = param.substring(3, param.length() - 1); Param nfParam = params.get(pn.trim()); if (nfParam == null) { throw new ParamNotFoundException("param: " + pn + " 没有定义"); } paramValue = nfParam.getStringValue(); // UUID取值 if ("true".equals(nfParam.getUUID())) { paramValue = UUIDUtil.getUUID(); }else if (paramValue == null) { paramValue = ""; }else { paramValue = paramValue.replace("$", "\\$"); } m.appendReplacement(buf, paramValue); } m.appendTail(buf); return buf.toString(); } }