自己写的一个SystemConfig,备份下

阅读更多
java 代码
  1. package org.wanwei.test.xmlreader;   
  2.   
  3. import java.io.InputStream;   
  4. import java.util.HashMap;   
  5. import java.util.Iterator;   
  6. import java.util.List;   
  7. import java.util.Map;   
  8. import java.util.Set;   
  9.   
  10. import org.apache.log4j.Logger;   
  11. import org.jdom.Document;   
  12. import org.jdom.Element;   
  13. import org.jdom.input.SAXBuilder;   
  14.   
  15. /**  
  16.  * 读取系统配置文件systemConfig.xml.
     
  17.  * 只支持读取简单的XML配置:
     
  18.  * eg:
     
  19.  *                2007-06-20
     
  20.  *       
     
  21.  * 不支持带属性的XML读取:
     
  22.  *     
  23.  * @author wanwei  
  24.  * @since 2007-7-4  
  25.  */  
  26. public class SystemConfig   
  27. {   
  28.     private static final Logger logger = Logger.getLogger(SystemConfig.class);   
  29.   
  30.     private static final String DEFAULT_SPLIT = "/";   
  31.   
  32.     private static final Map cacheMap = new HashMap();   
  33.   
  34.     private static boolean initialize = false;   
  35.     /**  
  36.      * 从systemConfig.xml文件中读取相应配置
     
  37.      * note:第一次读取需要初始化,以后都从缓存中读取.  
  38.      * @param configPath eg:/config/assocication/bj_comp_eff_date  
  39.      * @return String not null or empty  
  40.      * @throws Exception "unmatching configPath" will throw if no matching text found  
  41.      */  
  42.     public static String getConfigTextValue(String configPath) throws Exception   
  43.     {   
  44.         if( !initialize )   
  45.         {   
  46.             initialize();   
  47.         }   
  48.         String value = (String) cacheMap.get(configPath);   
  49.         if( value == null || value.length() == 0 )   
  50.         {   
  51.             getConfigTextValue(configPath, true);   
  52.         }   
  53.         return value;   
  54.     }   
  55.     /**  
  56.      * 从systemConfig.xml文件中读取相应配置  
  57.      * @param configPath eg:/config/assocication/bj_comp_eff_date  
  58.      * @param reinitialize if true ,system will read the xml files again.  
  59.      * @return String not null or empty  
  60.      * @throws Exception Exception "unmatching configPath" will throw if no matching text found  
  61.      */  
  62.     public static final String getConfigTextValue(String configPath, boolean reinitialize)   
  63.             throws Exception   
  64.     {   
  65.         if( reinitialize )   
  66.         {   
  67.             initialize();   
  68.         }   
  69.         String value = (String) cacheMap.get(configPath);   
  70.         if( value == null || value.length() == 0 )   
  71.             throw new Exception("unmatching configPath:" + configPath);   
  72.         return value;   
  73.     }   
  74.        
  75.     /**  
  76.      * read xml files and cache them.  
  77.      * @throws Exception  
  78.      */  
  79.     private static void initialize() throws Exception   
  80.     {   
  81.         SAXBuilder sb = new SAXBuilder();   
  82.         InputStream is = ClassLoader.getSystemResourceAsStream("org/wanwei/test/xmlreader/systemconfig.xml");   
  83.         Document doc = sb.build(is); // 构造文档对象   
  84.         Element root = doc.getRootElement(); // 获取根元素   
  85.         recursiveReadElement(root, "");// 递归读取xml元素   
  86.         initialize = true;   
  87.         // logger the cacheMap.   
  88.         if( logger.isInfoEnabled() )   
  89.             logger.info("initialize system config:\n"+mapToString(cacheMap));   
  90.         //System.out.println(mapToString(cacheMap));   
  91.     }   
  92.   
  93.     private static void recursiveReadElement(Element root, String parentName)   
  94.     {   
  95.         List list = root.getChildren();   
  96.         String text = root.getTextTrim();   
  97.         String url = parentName + DEFAULT_SPLIT + root.getName();   
  98.         if( text != null && text.length() > 0 )   
  99.         {   
  100.             cacheMap.put(url, text);   
  101.         }   
  102.         if( list != null && list.size() >= 0 )   
  103.         {   
  104.             forint i = 0; i < list.size(); i++ )   
  105.             {   
  106.                 if( list.get(i) instanceof Element )   
  107.                 {   
  108.                     recursiveReadElement((Element) list.get(i), url);   
  109.                 }   
  110.             }   
  111.         }   
  112.     }   
  113.   
  114.     private static String mapToString(Map map)   
  115.     {   
  116.         StringBuffer mapBuffer = new StringBuffer();   
  117.         if( map == null || map.isEmpty() )    
  118.             return "";   
  119.         Set KeySet = map.keySet();   
  120.         Iterator iterator = KeySet.iterator();   
  121.         while( iterator.hasNext() )   
  122.         {   
  123.             String key = (String) iterator.next();   
  124.             String value = (String) map.get(key);   
  125.             mapBuffer.append(key + "=" + value);   
  126.             if( iterator.hasNext() )   
  127.                 mapBuffer.append(";\n");   
  128.         }   
  129.         return mapBuffer.toString();   
  130.     }   
  131.   
  132.     public static void main(String[] arg0)   
  133.     {   
  134.         try  
  135.         {   
  136.             System.out.println(SystemConfig.getConfigTextValue("/config/assocication/bj_comp_eff_date"));   
  137.             System.out.println("OK");   
  138.         } catch( Exception e )   
  139.         {   
  140.             e.printStackTrace();   
  141.             System.out.println("ERROR");   
  142.         }   
  143.     }   
  144. }   

你可能感兴趣的:(XML,log4j,JBoss,Apache,Web)