package foundation.server.config; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class ConfigerLoader { protected static Logger logger; private static ConfigerLoader instance; static { logger = LogManager.getLogger(ConfigerLoader.class); } private ConfigerLoader() { } public synchronized static ConfigerLoader getInstance() { if (instance == null) { instance = new ConfigerLoader(); } return instance; } public static void staticLoad() throws Exception { getInstance(); instance.load(); } public void load() throws Exception { //1. clear configuration Configer configer = Configer.newInstance(); //2. load configuration String path = Configer.getPath_MainConfig(); File file = new File(path); loadOneFile(configer, file); //3. Configer.activeInstance(configer); } private void loadOneFile(Configer configer, File file) throws Exception { try { logger.debug("load config file:" + file); InputStream inputStream = new FileInputStream(file); try { SAXReader reader = new SAXReader(); reader.setValidation(false); Document doc = reader.read(inputStream); Element root = doc.getRootElement(); loadParams(configer, root); } finally { try { inputStream.close(); } catch (IOException e) { } } } catch (Exception e) { logger.error("can not load dispatch file: " + file); logger.error(e); throw e; } } private void loadParams(Configer configer, Element root) throws Exception { Iterator iterator = root.elementIterator("param"); while (iterator.hasNext()) { Element element = (Element) iterator.next(); String name = element.attributeValue("name"); String value = element.attributeValue("value"); configer.addParam(name, value); } } }