package com.nms.server.common; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.URL; import java.util.Properties; import javax.swing.JOptionPane; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; /** * 获取和保存myconfig信息的类 * * @author ZGGG3 * */ public class Config { private static Logger logger = Logger.getLogger(Config.class); private static Properties properties; private static String url = null; public static Config config = Config.getInstance(); // private static ResourceBundle resource; public static String getSystemDir() { return System.getProperty("user.dir"); } /** * 单例 初始化获取实例 * * @return */ public static Config getInstance() { if (config == null) return new Config(); return config; } /** * 单例 重新读取文件已获取参数 * * @return */ public static Config reinitialize() { config = null; return new Config(); } /** * 构造函数私有,用于单例实例 */ private Config() { //执行参数更新及检查 ConfigUpdate.getInstance(); //加载配置文件 URL urlObj = Config.class.getClassLoader().getResource("myconfig.properties"); // resource = ResourceBundle.getBundle(DefaultConfig.class.getName()); if(urlObj==null){ // JOptionPane.showMessageDialog(null, "未找到参数配文件!\n请运行"+Constants.COMMON_CONFIG_EXE_NAME+"初始化参数配置", "错误", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, "Parameter configuration file not found! \nPlease run "+Constants.COMMON_CONFIG_EXE_NAME+"initialization parameter configuration", "Error", JOptionPane.ERROR_MESSAGE); // JOptionPane.showMessageDialog(null, "i18n_server.Config.initConfig_n81i"+Constants.COMMON_CONFIG_EXE_NAME+"i18n_server.Config.initConfig.init_n81i", "i18n_server.Config.error_n81i", JOptionPane.ERROR_MESSAGE); System.exit(0); }else{ url = urlObj.getPath().replaceAll("%20", " "); } properties = new Properties(); try { properties.load(new FileInputStream(url)); } catch (IOException e) { logger.error("Reading properties file error"+"",e); } } /** * 根据name获取value * * @param name * @return */ public static Boolean getBoolan(String name,Boolean defaultValue) { try { String val = getString(name,defaultValue==null?null:defaultValue.toString()); return StringUtils.isEmpty(val)? null : Boolean.valueOf(val); } catch (Exception e) { logger.error("Digital formatting error", e); } return null; } /** * 根据name获取value * * @param name * @return */ public static Integer getInteger(String name,Integer defaultValue) { try { String val = getString(name,defaultValue==null?null:defaultValue.toString()); return StringUtils.isEmpty(val)? null : Integer.parseInt(val); } catch (Exception e) { logger.error("Digital formatting error", e); } return null; } /** * 根据name获取value * * @param name * @return */ public static String getString(String name,String defaultValue) { String str = null; /* 获取参数值:先从资源文件取值,如果为空,则从默认参数配置中取值 */ str = properties.getProperty(name,defaultValue); if(StringUtils.isNotEmpty(str)){ str = str.trim(); }else{ logger.warn("Resource configuration file abnormality >> "+name+" Value is empty"); } return str; } /** * 向资源配置文件中添加或更新一个键值对 * * @time Jul 7, 2011-3:52:45 PM * @param key * @param value */ public static void setValueByName(String key, String value) { // 添加或更新键值对 properties.setProperty(key, value); try { // 保存到文件 if (url != null && !"".equals(url)) { String fileName = url.substring( url.lastIndexOf(File.separator), url.length()); properties.store(new FileOutputStream(url), fileName); } } catch (FileNotFoundException e) { logger.error("The properties file Set Value file does not find ERROR "+"",e); } catch (IOException e) { logger.error("Properties file Set Value set value ERROR"+"",e); } } /* // 测试主函数 public static void main(String[] args) { Config cfg=new Config(); String oid="mission.file.download.dir"; System.out.println("---------"+cfg.getString(oid)); } */ }