All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.nfwork.dbfound.util.ParseUtil Maven / Gradle / Ivy

There is a newer version: 4.3.2
Show newest version
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 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();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy