📄 defaultmessagepropertyhandler.java
字号:
/*
* 嶌惉擔: 2003/08/06
*
* 偙偺惗惉偝傟偨僐儊儞僩偺憓擖偝傟傞僥儞僾儗乕僩傪曄峏偡傞偨傔
* 僂傿儞僪僂 > 愝掕 > Java > 僐乕僪惗惉 > 僐乕僪偲僐儊儞僩
*/
package jp.co.intra_mart.framework.base.message;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import jp.co.intra_mart.framework.system.property.PropertyHandlerException;
import jp.co.intra_mart.framework.system.property.PropertyParam;
/**
* 儊僢僙乕僕偺愝掕忣曬偵愙懕偡傞僨僼僅儖僩偺僾儘僷僥傿僴儞僪儔偱偡丅
* <BR>僾儘僷僥傿僼傽僀儖偼傾僾儕働乕僔儑儞枅偵暘妱偝傟傑偡丅偙偺応崌偺僼傽僀儖柤偼乽<I>僾儗僼傿僢僋僗</I>_<I>傾僾儕働乕僔儑儞ID</I>[_<I>儘働乕儖</I>].properties乿偱偡丅
* <BR>_<I>儘働乕儖</I>傪捛壛偡傞偙偲偵傛偭偰儘働乕儖偛偲偵儊僢僙乕僕傪曄峏偡傞偙偲傕壜擻偱偡丅儘働乕儖偵傛傞僾儘僷僥傿僼傽僀儖偺桪愭弴埵偼Java<sup><font size=-2>TM</font></sup>偺java.util.ResourceBundle偲摨條偺儖乕儖偵廬偭偰寛掕偝傟傑偡丅
* <BR>僾儘僷僥傿僼傽僀儖偺僾儗僼傿僢僋僗偼{@link jp.co.intra_mart.framework.system.property.PropertyManager#getPropertyHandlerParams(String)}偱僉乕偵{@link MessageManager#MESSAGE_PROPERTY_HANDLER_KEY}傪巜掕偟偨偲偒偵庢摼偝傟傞僷儔儊乕僞偺偆偪{@link #DEFAULT_BUNDLE_NAME}偱庢摼偝傟傞傕偺偲側傝傑偡丅
* 巜掕偟側偐偭偨応崌偺僾儘僷僥傿僼傽僀儖偺僾儗僼傿僢僋僗偼{@link #DEFAULT_BUNDLE_NAME_PARAM}偱帵偝傟傞傕偺偱偡丅
* <BR><BR>僾儘僷僥傿偺撪梕偼乽<I>僉乕</I>=<I>儊僢僙乕僕</I>乿偺宍幃偱巜掕偟傑偡丅
*
* @author INTRAMART
* @since 4.2
*/
public class DefaultMessagePropertyHandler implements MessagePropertyHandler {
/**
* 僨僼僅儖僩偺儕僜乕僗僶儞僪儖柤偺僾儗僼傿僢僋僗
*/
public static final String DEFAULT_BUNDLE_NAME = "MessageConfig";
/**
* 儕僜乕僗僶儞僪儖柤偺僷儔儊乕僞柤
*/
public static final String DEFAULT_BUNDLE_NAME_PARAM = "bundle";
/**
* 儊僢僙乕僕忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
*/
private String bundlePrefix;
/**
* 傾僾儕働乕僔儑儞偛偲偺抧堟懳墳偝傟偨儊僢僙乕僕忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖
*/
private Map localizedBundles;
/**
* DefaultMessagePropertyHandler傪怴婯偵惗惉偟傑偡丅
*/
public DefaultMessagePropertyHandler() {
setBundlePrefix(null);
setLocalizedApplicationBundles(new HashMap());
}
/**
* 僾儘僷僥傿偺摦揑撉傒崬傒偑壜擻偐偳偆偐挷傋傑偡丅
* 偙偺僋儔僗偱偼偙偺儊僜僢僪偼忢偵false傪曉偟傑偡丅
*
* @return 忢偵false
* @throws MessagePropertyException 僠僃僢僋帪偵椺奜偑敪惗
*/
public boolean isDynamic() throws MessagePropertyException {
return false;
}
/**
* 儊僢僙乕僕傪庢摼偟傑偡丅
* <code>application</code>偱巜掕偝傟傞傾僾儕働乕僔儑儞屌桳偺僾儘僷僥傿偐傜
* <code>key</code>偵奩摉偡傞儊僢僙乕僕傪庢摼偟傑偡丅
* 僔僗僥儉偑壱摦偟偰偄傞儘働乕儖傪僸儞僩偵儊僢僙乕僕傪庢摼偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @param key 儊僢僙乕僕偺僉乕
* @return 儊僢僙乕僕
* @throws MessagePropertyException 儊僢僙乕僕庢摼帪偵椺奜偑敪惗
*/
public String getMessage(String application, String key)
throws MessagePropertyException {
return getMessage(application, key, Locale.getDefault());
}
/**
* 儊僢僙乕僕傪庢摼偟傑偡丅
* <code>application</code>偱巜掕偝傟傞傾僾儕働乕僔儑儞屌桳偺僾儘僷僥傿偐傜
* <code>key</code>偵奩摉偡傞儊僢僙乕僕傪庢摼偟傑偡丅
* <code>locale</code>偱巜掕偝傟偨儘働乕儖傪僸儞僩偵儊僢僙乕僕傪庢摼偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @param key 儊僢僙乕僕偺僉乕
* @param locale 儘働乕儖
* @return 儊僢僙乕僕
* @throws MessagePropertyException 儊僢僙乕僕庢摼帪偵椺奜偑敪惗
*/
public String getMessage(String application, String key, Locale locale)
throws MessagePropertyException {
return ResourceBundleMessagePropertyHandlerUtil.getMessage(
getResourceBundle(application, locale),
application,
key,
locale);
}
/**
* 僾儘僷僥傿僴儞僪儔傪弶婜壔偟傑偡丅
*
* @param params 弶婜僷儔儊乕僞
* @throws PropertyHandlerException 僾儘僷僥傿僴儞僪儔偺弶婜壔帪偵椺奜偑敪惗
*/
public void init(PropertyParam[] params) throws PropertyHandlerException {
String bundleName = null;
if (params != null) {
for (int i = 0; i < params.length; i++) {
if (params[i].getName().equals(DEFAULT_BUNDLE_NAME_PARAM)) {
bundleName = params[i].getValue();
}
}
}
if (bundleName == null) {
bundleName = DEFAULT_BUNDLE_NAME;
}
setBundlePrefix(bundleName);
}
/**
* 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗傪愝掕偟傑偡丅
*
* @param bundlePrefix 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
*/
private void setBundlePrefix(String bundlePrefix) {
this.bundlePrefix = bundlePrefix;
}
/**
* 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗傪庢摼偟傑偡丅
*
* @return 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
*/
private String getBundlePrefix() {
return this.bundlePrefix;
}
/**
* 傾僾儕働乕僔儑儞偛偲偺抧堟懳墳偝傟偨儕僜乕僗僶儞僪儖偺廤崌傪愝掕偟傑偡丅
*
* @param applicationBundles 傾僾儕働乕僔儑儞偛偲偺抧堟懳墳偝傟偨儕僜乕僗僶儞僪儖偺廤崌
*/
private void setLocalizedApplicationBundles(Map applicationBundles) {
this.localizedBundles = applicationBundles;
}
/**
* 傾僾儕働乕僔儑儞偛偲偺抧堟懳墳偝傟偨儕僜乕僗僶儞僪儖偺廤崌傪庢摼偟傑偡丅
*
* @return 傾僾儕働乕僔儑儞偛偲偺抧堟懳墳偝傟偨儕僜乕僗僶儞僪儖偺廤崌
*/
private Map getLocalizedApplicationBundles() {
return this.localizedBundles;
}
/**
* 傾僾儕働乕僔儑儞ID偲儘働乕儖偱巜掕偝傟偨儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @param locale 儘働乕儖
* @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
* @throws MessagePropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
*/
private ResourceBundle getResourceBundle(String application, Locale locale)
throws MessagePropertyException {
ResourceBundle result = null;
Map keyLocale = null;
Locale realLocale = locale;
if (realLocale == null) {
realLocale = new Locale("", "");
}
synchronized (this.localizedBundles) {
keyLocale = (Map)getLocalizedApplicationBundles().get(realLocale);
if (keyLocale == null) {
keyLocale = new HashMap();
getLocalizedApplicationBundles().put(realLocale, keyLocale);
}
}
synchronized (keyLocale) {
result = (ResourceBundle)keyLocale.get(application);
if (result == null) {
result = createResourceBundle(application, realLocale);
keyLocale.put(application, result);
}
}
return result;
}
/**
* 傾僾儕働乕僔儑儞ID偲儘働乕儖偱巜掕偝傟偨儕僜乕僗僶儞僪儖傪惗惉偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @param locale 儘働乕儖
* @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
* @throws MessagePropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
*/
private ResourceBundle createResourceBundle(
String application,
Locale locale)
throws MessagePropertyException {
// 僷僢働乕僕偵懳墳
String applicationID = application;
String packageId = "";
if (application.indexOf('.') != -1) {
applicationID = application.substring(application.lastIndexOf('.') + 1);
packageId = application.substring(0, application.lastIndexOf('.')).replace('.', '/') + '/';
}
try {
if (locale == null) {
return ResourceBundle.getBundle(
packageId + getBundlePrefix() + "_" + applicationID);
} else {
return ResourceBundle.getBundle(
packageId + getBundlePrefix() + "_" + applicationID, locale);
}
} catch (MissingResourceException e) {
throw new MessagePropertyException(e.getMessage(), e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -