亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

資源文件工具類

張軍 6667 0
package zj.message.util;

import java.io.Serializable;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import org.apache.log4j.Logger;

import zj.java.util.JavaUtil;

/**
 * 資源文件工具類<br>
 * 
 * @version 1.00 (2011.12.02)
 * @author SHNKCS 張軍 {@link  <a target=_blank href="http://m.eyofj.com">張軍個人網站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">張軍QQ空間</a>}
 * @see zj.message.util.MessageConstantsUtil
 * @see zj.message.util.MessageI18nUtil
 */
@Deprecated
public class MessageUtil implements Serializable {
	private static final long serialVersionUID = 1L;
	private transient static final Logger log = Logger.getLogger(MessageUtil.class);
	public static String AJAX_SUCCESS;
	public static String AJAX_FAIL;
	public static String AJAX_MSG;
	/** 是否重新獲取配置文件值 **/
	public static boolean RELOAD_READ;
	/** 資源鍵值對 **/
	public static final Map<String, String> CONSTANT_KEY_VALUE = new ConcurrentHashMap<String, String>();
	/** 國際化資源文件鍵值對 **/
	public static final Map<String, String> I18N_RESOURCE_KEY_VALUE = new ConcurrentHashMap<String, String>();
	/** 資源鍵值對臨時集合 **/
	public static final Map<String, String> TEMP_CONSTANT_KEY_VALUE = new ConcurrentHashMap<String, String>();
	/** 國際化資源文件臨時集合 **/
	public static final Map<String, String> TEMP_I18N_RESOURCE_KEY_VALUE = new ConcurrentHashMap<String, String>();
	/** 國際化資源文件名以,隔開 */
	private static String I18N_RESOURCE;
	/** 國際化資源文件地址集合,無序 **/
	public static Set<String> I18N_RESOURCES = new HashSet<String>();
	/** 資源文件地址 */
	private static String CONFIG;
	/** 資源文件地址集合,無序 **/
	public static List<String> CONFIGS = new ArrayList<String>();
	/** 資源文件地址 */
	private static final String I18N_RESOURCE_KEY = "cons.global.i18n.resouces";
	/** 資源文件地址 */
	private static final String CONFIG_KEY = "cons.global.config";
	/** 國際化資源文件/資源文件內容初使化 **/
	static {
		AJAX_SUCCESS = "success";
		AJAX_FAIL = "fail";
		AJAX_MSG = "msg";
		// 默認注冊資源文件地址
		CONFIGS.add("./constant.properties");
		CONFIGS.add("./systemConfig.properties");
		CONFIGS.add("./app.properties");
		I18N_RESOURCES.add("i18n.page");
		I18N_RESOURCES.add("i18n.info");
		I18N_RESOURCES.add("i18n.error");

		I18N_RESOURCES.add("i18n.app.page");
		I18N_RESOURCES.add("i18n.app.info");
		I18N_RESOURCES.add("i18n.app.error");

		// 添加新的國際化資源文件地址
		I18N_RESOURCE = getConstant(I18N_RESOURCE_KEY, true);
		String[] i18n_resources = JavaUtil.split(I18N_RESOURCE, ",");
		for (String s : i18n_resources) {
			if (s == null || s.equals("") || s.equals(I18N_RESOURCE_KEY))
				continue;
			I18N_RESOURCES.add(s);
		}
		// 添加新的資源文件地址
		CONFIG = getConstant(CONFIG_KEY, true);
		String[] configs = JavaUtil.split(CONFIG, ",");
		for (String s : configs) {
			if (s == null || s.equals("") || s.equals(CONFIG_KEY))
				continue;
			CONFIGS.add(s);
		}
	}

	// 國際化資源文件
	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @return 資源文件值
	 */
	public static String getString(String key, boolean notExistIsNull) {
		return getString(key, I18N_RESOURCES, notExistIsNull);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @return 資源文件值
	 */
	public static String getString(String key) {
		return getString(key, false);
	}

	/**
	 * 通過key,action類獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param action
	 *            action對應的類
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @return 資源文件值
	 */
	public static String getStringByClass(String key, Class<?> action, boolean notExistIsNull) {
		// 添加后會去重
		I18N_RESOURCES.add(action.getName());
		return getString(key, notExistIsNull);
	}

	/**
	 * 通過key,action類獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param action
	 *            action對應的類
	 * @return 資源文件值
	 */
	public static String getStringByClass(String key, Class<?> action) {
		return getStringByClass(key, action, false);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getStringByMemoryParams(String key, boolean notExistIsNull, Object... arguments) {
		return getValueByParams(getStringByMemory(key), arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getStringByMemoryParams(String key, Object... arguments) {
		return getStringByMemoryParams(key, false, arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param baseNames
	 *            國際化資源文件地址集合,無序
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getStringBySetParams(String key, Set<String> baseNames, boolean notExistIsNull, Object... arguments) {
		try {
			return getValueByParams(getString(key, baseNames, notExistIsNull), arguments);
		} catch (Exception e) {
			e.printStackTrace();
			return key;
		}
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param baseNames
	 *            國際化資源文件地址集合,無序
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getStringBySetParams(String key, Set<String> baseNames, Object... arguments) {
		return getStringBySetParams(key, baseNames, false, arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getStringByParams(String key, boolean notExistIsNull, Object... arguments) {
		return getStringBySetParams(key, I18N_RESOURCES, notExistIsNull, arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getStringByParams(String key, Object... arguments) {
		return getStringByParams(key, false, arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param action
	 *            action對應的類
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getStringByClassParams(String key, Class<?> action, boolean notExistIsNull, Object... arguments) {
		I18N_RESOURCES.add(action.getName());
		return getStringByParams(key, notExistIsNull, arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param action
	 *            action對應的類
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getStringByClassParams(String key, Class<?> action, Object... arguments) {
		return getStringByClassParams(key, action, false, arguments);
	}

	// 資源文件
	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @return 資源文件值
	 */
	public static String getConstant(String key, boolean notExistIsNull) {
		String value = null;
		if (RELOAD_READ || (value = TEMP_CONSTANT_KEY_VALUE.get(key)) == null) {
			boolean exists = false;
			for (String path : CONFIGS) {
				value = ConfigUtil.getConfig(path, key);
				if (value != null && !value.equals(key)) {
					exists = true;
					break;
				}
			}
			if (!exists) {
				if (notExistIsNull) {
					value = null;
				} else {
					value = key;
				}
			}
			if (value != null) {
				TEMP_CONSTANT_KEY_VALUE.put(key, value);
			}
		} else {

		}
		return value;
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @return 資源文件值
	 */
	public static String getConstant(String key) {
		return getConstant(key, false);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getConstantByParams(String key, boolean notExistIsNull, Object... arguments) {
		return getValueByParams(getConstant(key, notExistIsNull), arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getConstantByParams(String key, Object... arguments) {
		return getConstantByParams(key, false, arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param paths
	 *            資源文件路徑集合
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @return 資源文件值
	 */
	public static String getConstantValueByMemory(String key, List<String> paths, boolean notExistIsNull) {
		String value = null;
		if (key == null || "".equals(key)) {
			// 先清除緩存
			CONSTANT_KEY_VALUE.clear();
			TEMP_CONSTANT_KEY_VALUE.clear();
			// 最好只調用一次
			CONSTANT_KEY_VALUE.putAll(ConfigUtil.getConstantKeyValues(paths));
		} else {
			if (RELOAD_READ || (value = CONSTANT_KEY_VALUE.get(key)) == null) {
				value = getConstant(key, notExistIsNull);
				CONSTANT_KEY_VALUE.put(key, value);
			}
		}
		return value;
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param paths
	 *            資源文件路徑集合
	 * @return 資源文件值
	 */
	public static String getConstantValueByMemory(String key, List<String> paths) {
		return getConstantValueByMemory(key, paths, false);
	}

	/**
	 * 設置所有資源文件鍵值到內存中
	 * 
	 * @param config
	 */
	public static void setConstantKeyValueToMemory(List<String> config) {
		getConstantValueByMemory(null, CONFIGS);
	}

	/**
	 * 設置所有資源鍵值
	 */
	public static void setConstantKeyValueToMemory() {
		setConstantKeyValueToMemory(CONFIGS);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @return 資源文件值
	 */
	public static String getConstantValueByMemory(String key, boolean notExistIsNull) {
		return getConstantValueByMemory(key, CONFIGS, notExistIsNull);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @return 資源文件值
	 */
	public static String getConstantValueByMemory(String key) {
		return getConstantValueByMemory(key, false);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getConstantValueByMemoryParams(String key, boolean notExistIsNull, Object... arguments) {
		return getValueByParams(getConstantValueByMemory(key, notExistIsNull), arguments);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param arguments
	 *            資源文件參數
	 * @return 資源文件值
	 */
	public static String getConstantValueByMemoryParams(String key, Object... arguments) {
		return getConstantValueByMemoryParams(key, false, arguments);
	}

	/**
	 * 配置文件內容取得帶參數
	 * 
	 * @param value
	 * @param arguments
	 * @return
	 */
	public static String getValueByParams(String value, Object... arguments) {
		try {
			return MessageFormat.format(value, arguments);
		} catch (Exception e) {
			e.printStackTrace();
			return value;
		}
	}

	/**
	 * 通過key獲取資源文件值
	 * 
	 * @param key
	 * @return
	 */
	public static String getStringByMemory(String key) {
		String value = null;
		if (key == null || "".equals(key)) {
			// 最好只調用一次
			setStringKeyValuesToMemory();
		} else {
			if (RELOAD_READ || (value = I18N_RESOURCE_KEY_VALUE.get(key)) == null) {
				value = getString(key);
				I18N_RESOURCE_KEY_VALUE.put(key, value);
			}
		}
		return value == null ? key : value;
	}

	/**
	 * 打印debug信息
	 * 
	 * @return
	 */
	public static void debugString() {
		log.debug("國際化資源文件列表如下:");
		for (String s : I18N_RESOURCES) {
			log.debug("I18N_RESOURCES:" + s);
		}
		log.debug("資源文件列表如下:");
		for (String s : CONFIGS) {
			log.debug("CONFIGS:" + s);
		}
		log.debug("CONSTANT_KEY_VALUE:" + CONSTANT_KEY_VALUE.entrySet());
		log.debug("I18N_RESOURCE_KEY_VALUE:" + I18N_RESOURCE_KEY_VALUE.entrySet());
		log.debug("TEMP_CONSTANT_KEY_VALUE:" + TEMP_CONSTANT_KEY_VALUE.entrySet());
		log.debug("TEMP_I18N_RESOURCE_KEY_VALUE:" + TEMP_I18N_RESOURCE_KEY_VALUE.entrySet());
	}

	/**
	 * 通過resources設置所有資源文件鍵值到內存中
	 * 
	 * @param resources
	 */
	public static void setStringKeyValuesToMemory(Set<String> resources) {
		setStringKeyValuesToMemory(resources, Locale.getDefault());
	}

	/**
	 * 設置所有資源文件鍵值到內存中
	 */
	public static void setStringKeyValuesToMemory() {
		setStringKeyValuesToMemory(I18N_RESOURCES);
	}

	/**
	 * 通過resources設置所有資源文件鍵值到內存中
	 * 
	 * @param resources
	 * @param locale
	 */
	public static void setStringKeyValuesToMemory(Set<String> resources, Locale locale) {
		try {
			// 先清除緩存
			I18N_RESOURCE_KEY_VALUE.clear();
			TEMP_I18N_RESOURCE_KEY_VALUE.clear();
			ResourceBundle.clearCache();
			if (locale == null) {
				locale = new Locale("zh_CN");
			}
			ResourceBundle rb = null;
			Iterator<String> it = resources.iterator();
			while (it.hasNext()) {
				String resource = it.next();
				try {
					rb = ResourceBundle.getBundle(resource, locale);
					Enumeration<String> keys = rb.getKeys();
					while (keys.hasMoreElements()) {
						String key = keys.nextElement();
						String value = rb.getString(key);
						I18N_RESOURCE_KEY_VALUE.put(key, value);
					}
				} catch (Exception e) {
					log.warn("設置資源文件警告:" + e.getMessage());
				}
			}
		} catch (Exception e) {
			log.error("獲取資源值失敗:" + e.getMessage());
		}
	}

	/**
	 * 通過key,baseNames獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param baseNames
	 *            國際化資源文件地址集合,無序
	 * @param locale
	 *            特定的地理、政治和文化地區
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @return 資源文件值
	 */
	public static String getString(String key, Set<String> baseNames, Locale locale, boolean notExistIsNull) {
		String value = null;
		key = JavaUtil.trim(key);
		if (RELOAD_READ || (value = TEMP_I18N_RESOURCE_KEY_VALUE.get(key)) == null) {
			try {
				// 清除緩存
				ResourceBundle.clearCache();
				if (locale == null) {
					locale = new Locale("zh_CN");
				}
				ResourceBundle rb = null;
				Iterator<String> it = baseNames.iterator();
				boolean exists = false;
				while (it.hasNext()) {
					String baseName = it.next();
					try {
						rb = ResourceBundle.getBundle(baseName, locale);
						value = rb.getString(key);
					} catch (Exception e) {
						if (notExistIsNull) {
							value = null;
						} else {
							value = key;
						}
					}
					if (value != null && !value.equals(key)) {
						exists = true;
						break;
					}
				}
				if (!exists) {
					if (notExistIsNull) {
						value = null;
					} else {
						value = key;
					}
				}
			} catch (Exception e) {
				log.error("獲取資源值失敗:" + e.getMessage());
				if (notExistIsNull) {
					value = null;
				} else {
					value = key;
				}
			}
			TEMP_I18N_RESOURCE_KEY_VALUE.put(key, value);
		} else {
		}
		return value;
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param baseNames
	 *            國際化資源文件地址集合,無序
	 * @return 資源文件值
	 */
	public static String getString(String key, Set<String> baseNames) {
		return getString(key, baseNames, Locale.getDefault(), false);
	}

	/**
	 * 通過key,baseNames獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param baseNames
	 *            國際化資源文件地址集合,無序
	 * @param locale
	 *            特定的地理、政治和文化地區
	 * @return 資源文件值
	 */
	public static String getString(String key, Set<String> baseNames, Locale locale) {
		return getString(key, baseNames, locale, false);
	}

	/**
	 * 獲取資源文件值
	 * 
	 * @param key
	 *            資源文件key
	 * @param baseNames
	 *            國際化資源文件地址集合,無序
	 * @param notExistIsNull
	 *            <p>
	 *            true:如果資源文件鍵不存在,則返回null
	 *            </p>
	 *            <p>
	 *            false:如果資源文件鍵不存在,則返回資源文件key
	 *            </p>
	 * @return 資源文件值
	 */
	public static String getString(String key, Set<String> baseNames, boolean notExistIsNull) {
		return getString(key, baseNames, Locale.getDefault(), notExistIsNull);
	}

}



更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 视频精品一区二区三区 | 99尹人香蕉国产免费天天拍 | 国产香蕉偷在线观看视频 | 一级做a爱片特黄在线观看免费看 | 久久亚洲精品一区二区三区浴池 | 国产在线视频二区 | 国产成人综合久久综合 | 日本乱人伦片中文字幕三区 | 自拍视频精品 | 欧产日产国产精品专区 | 99热这里只有精品首页精品 | 精品无码久久久久国产 | 一级毛片观看 | 中国一级特黄大片毛片 | 欧美视频三区 | 高清午夜毛片 | 日韩伦理视频 | 青草资源站 | 久久99热只有视精品6国产 | 四虎影永久在线观看精品 | 国产精品久久亚洲不卡动漫 | 性做久久久久久久免费看 | 国产精品原创巨作无遮挡 | 99精品欧美一区 | 日韩欧美国产偷亚洲清高 | 香蕉在线精品亚洲第一区 | 精品国产国产综合精品 | 亚洲妖精天堂 | 久久中文字幕不卡一二区 | 久久99精品久久久久久黑人 | 免费观看一级成人毛片软件 | 欧美亚洲国产一区 | 久99re视频9在线观看 | 九九看片 | 97视频在线观看视频在线精品 | 日韩欧美 在线播放 | 免费观看91视频 | 成年ssswww中国女人 | 久久久久欧美精品 | 九九视频免费观看 | 两性色午夜视频免费老司机 |