package com.founderdpt.comm.xworld.util.config; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; import com.founderdpt.comm.xworld.orm.Configuration; import com.founderdpt.comm.xworld.orm.exception.XMLConfigException; import com.founderdpt.comm.xworld.util.POJOUtil; import com.founderdpt.comm.xworld.util.config.builder.DynamicContext; import com.founderdpt.comm.xworld.util.config.builder.DynamicXQLSource; import com.founderdpt.comm.xworld.util.string.StringMatch; import com.founderdpt.comm.xworld.util.xml.XmlAnalysis; import com.founderdpt.comm.xworld.util.xml.XmlOperate; /** * 读取CDAConfig 配置文件 依赖于XmlAnalysis文件 * * @author Administrator * */ public class XMLConfigUtil { private static Logger log = Logger.getLogger(XMLConfigUtil.class); private static Configuration configuration = new Configuration(); public static void main(String[] args) throws XMLConfigException { // XMLConfigUtil.getConfigByXpath("system"); } public static DynamicContext getConfigByXpath(String nameSpace, String xpath, Object param) throws XMLConfigException { try { if (nameSpace == null || "".equals(nameSpace)) { throw new XMLConfigException("nameSpace为空"); } else { Element element = (Element) configuration.getElement(nameSpace); if (element == null) { throw new XMLConfigException("无此配置文件"); } if(log.isDebugEnabled()){ log.debug("namsSpace:"+nameSpace+" xpath:"+xpath); } //System.out.println("namsSpace:"+nameSpace+" xpath:"+xpath); DynamicContext context= DynamicXQLSource.parse(xpath, param, element); return context; } } catch (Exception e) { log.error("解析查询配置文件出错"+e.getMessage()); throw new XMLConfigException(e); } } public static String getConfigStr(String nameSpace, String xpath, Object param) throws XMLConfigException { return getConfigByXpath(nameSpace,xpath,param).getXql_list().get(0); } public static List<String> getConfigStrs(String nameSpace, String xpath, Object param) throws XMLConfigException { return getConfigByXpath(nameSpace,xpath,param).getXql_list(); } public static <T> T getConfigObject(String nameSpace, String xpath, Object param,Class<T> clazz) throws XMLConfigException { DynamicContext dycontext = getConfigByXpath(nameSpace, xpath, param); List<String> xqls = dycontext.getXql_list(); return (T) XmlOperate.Xml2Object(xqls.get(0), clazz); } public static <T> List<T> getConfigObjects(String nameSpace, String xpath, Object param,Class<T> clazz) throws XMLConfigException { DynamicContext dycontext = getConfigByXpath(nameSpace, xpath, param); List<String> xqls = dycontext.getXql_list(); List<T> list = new ArrayList<T>(); for (String xql : xqls) { list.add((T) XmlOperate.Xml2Object(xql, clazz)); } return list; } public static String getNamespaceXPath(String xpath){ return "/mapper/"+xpath; } }