📄 tanghanconfig.java
字号:
/* * Created on 2003-4-14 * */package com.tanghan.util;import java.util.HashMap;import java.util.ResourceBundle;import org.apache.log4j.Logger;import org.w3c.dom.*;import com.tanghan.util.Log;import com.tanghan.util.config.Config;//import org.apache.xerces.dom.*;/** * TO_DO 修改Config类的调用方式, 修改循环调用的问题 * * @author Jerry Tang * @version v0.1.0 * @copyright (C) 2003 Tanghan工作组 * */public class TanghanConfig { /**系统变量: Tanghan Lib的根目录*/ public static final String TANGHANLIBHOME = "TanghanLib.Home"; /**系统变量: Tanghan Lib的配置文件*/ public static final String TANGHANLIBCONFIGEFILE = "TanghanLib.ConfigFile"; /**日志*/ private static Logger log = Log.getInstanse().getLogger("TanghanConfig"); /**自身引用 * 在继承TanghanConfig时必须通过 * */ private static TanghanConfig configInstance=null; /**TanghanLib环境变量存储的类*/ private static HashMap properties=new HashMap(); /**配置文件路径*/ private static String configFileName = ""; /**系统目录分割苻*/ private static String SEPARATOR=(System.getProperties()).getProperty("file.separator"); /** Creates a new instance of TanghanConfig */ private TanghanConfig() { } /** * 初始化数据 * */ private synchronized static void initInstance(){ if(null == configInstance){ configInstance=new TanghanConfig(); log.info("Config properties...."); //loadFilePath() ; loadProperties(); log.info("Config properties Done!") ; } } /** * 重新载入配置文件 * */ public static void reload(){ configInstance = null; log.info("Config released OK!"); initInstance(); } /** * 得到环境变量 * @param pParam 环境变量 * @return 环境变量的值,如果没有则为null * */ public static String getProperty(String pParam){ if(configInstance==null){ initInstance(); } String value=(String)properties.get(pParam) ; return value; } /** * 改变环境变量值 * @param pParam 环境变量 * @param value 环境变量的值 * */ public static void setProperty(String sysParam, String value){ if(configInstance==null){ initInstance(); } properties.put(sysParam,value); } /** * 根据根目录构造配置文件的目录 * */ private static void loadFilePath(){ String home=DealSystem.getClassRootPath(TanghanConfig.class) ; log.info(TANGHANLIBHOME+":"+home); configFileName = home; properties.put(TANGHANLIBHOME,home); String configFile=configFileName+"config"+SEPARATOR+"Config.xml"; properties.put(TANGHANLIBCONFIGEFILE,configFile) ; log.info(TANGHANLIBCONFIGEFILE+":"+configFile); } /** * 载入配置文件 * */ private static void loadProperties(){ Document doc = null; try{ //doc =XMLUtility.xml2Document(TanghanConfig.getProperty(TANGHANLIBCONFIGEFILE)) ; doc = XMLUtility.xml2Document(TanghanConfig.class.getClassLoader().getResourceAsStream("config"+SEPARATOR+"Config.xml")); }catch(Exception ex){ log.error(ex.getMessage(),ex); } Element rootElement=doc.getDocumentElement() ; loadConfig(rootElement); } /** * 载入各种自定义的配置文件类 * @param rootElement 配置文件根目录Dom * */ private static void loadConfig(Element rootElement){ Element configClassElement=(Element)(rootElement.getElementsByTagName("Config").item(0)); try{ NodeList nodelist=configClassElement.getElementsByTagName("ConfigClass"); String className = null; for(int i=0;i<nodelist.getLength();i++){ className = null; try{ className = XMLUtility.getNodeAttr(configClassElement,"ConfigClass","Value",i); if(className==null) break; Config obj = null; obj = (Config)Class.forName(className.trim()).newInstance(); //根据配置类重的rootName得到相应的xml相对根结点 if(DealString.equals(obj.getRootName(),"")){ obj.dealConfigInfo(properties,rootElement); }else{ Element elem=(Element)(rootElement.getElementsByTagName(DealString.trim(obj.getRootName())).item(0)); obj.dealConfigInfo(properties,elem); } }catch(Exception e){ log.error("Load"+className+"配置类时发生错误",e); } } }catch(Exception e){ log.error("LoadConfig时发生错误",e); } } public static void setTanghanExceptionErrorCodes(ResourceBundle res){ } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -