📄 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.*;
/**
* TODO 修改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 + -