📄 textfileservicepropertyhandler.java
字号:
/*
* TextFileServicePropertyHandler.java
*
* Created on 2002/07/05, 17:48
*/
package jp.co.intra_mart.framework.base.service;
import java.io.File;
import java.io.IOException;
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;
import jp.co.intra_mart.framework.util.*;
/**
* 巜掕偝傟偨僼傽僀儖偐傜僾儘僷僥傿忣曬傪庢摼偡傞僒乕價僗僾儘僷僥傿僴儞僪儔偱偡丅
* 僼傽僀儖偺彂幃偼{@link DefaultServicePropertyHandler}偱帵偝傟傞傕偺偲摨偠偱偡丅<BR>
* 僼傽僀儖偑懚嵼偡傞僨傿儗僋僩儕柤偼{@link #PARAM_FILE_DIR}偱帵偝傟傞僷儔儊乕僞柤偱巜掕偟傑偡丅<BR>
* {@link #PARAM_DYNAMIC}偱帵偝傟傞僷儔儊乕僞偵true傪巜掕偟偨応崌
* 傾僾儕働乕僔儑儞幚峴帪偵傕僾儘僷僥傿偺曄峏傪摦揑偵斀塮偝偣傞偙偲偑壜擻偲側傝傑偡偑丄
* 僷儔儊乕僞偺庢摼帪偵枅夞僼傽僀儖憖嶌傪峴偆偨傔僷僼僅乕儅儞僗偵埆塭嬁傪梌偊傞壜擻惈偑偁傝傑偡丅
* 偙偺僆僾僔儑儞偼丄奐敪帪傗僨僶僢僌帪偺傛偆偵僷儔儊乕僞傪昿斏偵曄峏偡傞昁梫偑偁傞応崌偺傒true偲偟丄
* 捠忢偼false偵愝掕偟偰偍偄偰偔偩偝偄丅
*
* @author INTRAMART
* @since 3.2
*/
public class TextFileServicePropertyHandler implements ServicePropertyHandler {
/**
* 僾儘僷僥傿僼傽僀儖偺僼傽僀儖僷僗偺僷儔儊乕僞柤
*/
public static final String PARAM_FILE_DIR = "file_dir";
/**
* 僾儘僷僥傿僼傽僀儖偺嵞撉傒崬傒壜擻偺僷儔儊乕僞柤
*/
public static final String PARAM_DYNAMIC = "dynamic";
/**
* 僨乕僞儕僜乕僗忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
*/
private String bundlePrefix;
/**
* 傾僾儕働乕僔儑儞偛偲偺僒乕價僗儕僜乕僗忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖
*
* @uml.property name="bundles"
* @uml.associationEnd
* @uml.property name="bundles" multiplicity="(0 1)" qualifier="locale:java.util.Locale
* bundle:java.util.ResourceBundle"
*/
private Map bundles = new HashMap();
/**
* 嫟捠偺僒乕價僗儕僜乕僗忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖
*
* @uml.property name="commonBundles"
* @uml.associationEnd
* @uml.property name="commonBundles" multiplicity="(0 1)" qualifier="locale:java.util.Locale
* commonBundle:java.util.ResourceBundle"
*/
private Map commonBundles = new AnythingHashMap();
/**
* 僒乕價僗僾儘僷僥傿偺僼傽僀儖偑偁傞僨傿儗僋僩儕
*/
private String propertyFileDir;
/**
* 嵞愝掕壜擻僼儔僌
*/
private boolean dynamic;
/**
* TextFileServicePropertyHandler傪怴婯偵惗惉偟傑偡丅
*/
public TextFileServicePropertyHandler() {
setPropertyFileDir(null);
setDynamic(false);
}
/**
* 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗傪愝掕偟傑偡丅
*
* @param bundlePrefix 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
*
* @uml.property name="bundlePrefix"
*/
private void setBundlePrefix(String bundlePrefix) {
this.bundlePrefix = bundlePrefix;
}
/**
* 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗傪庢摼偟傑偡丅
*
* @return 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
*
* @uml.property name="bundlePrefix"
*/
private String getBundlePrefix() {
return this.bundlePrefix;
}
/**
* 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌傪愝掕偟傑偡丅
*
* @param applicationBundles 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
* @since 3.2
*/
private void setApplicationBundles(Map applicationBundles) {
this.bundles = applicationBundles;
}
/**
* 傾僾儕働乕僔儑儞ID偲儘働乕儖偵堦抳偡傞儕僜乕僗僶儞僪儖傪搊榐偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @return 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
* @since 4.2
*/
private void putApplicationBundle(
String application,
ResourceBundle bundle) {
putApplicationBundle(application, bundle, (Locale) null);
}
/**
* 傾僾儕働乕僔儑儞ID偲儘働乕儖偵堦抳偡傞儕僜乕僗僶儞僪儖傪搊榐偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @param 儕僜乕僗僶儞僪儖
* @param locale 儘働乕儖
* @return 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
* @since 4.2
*/
private void putApplicationBundle(
String application,
ResourceBundle bundle,
Locale locale) {
Map appMap = (Map)this.bundles.get(application);
if (appMap == null) {
appMap = new AnythingHashMap();
this.bundles.put(application, appMap);
}
appMap.put(locale, bundle);
}
/**
* 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌傪庢摼偟傑偡丅
*
* @return 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
* @since 3.2
*/
private Map getApplicationBundles() {
return this.bundles;
}
/**
* 傾僾儕働乕僔儑儞ID偲儘働乕儖偐傜儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @return 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
* @since 4.2
*/
private ResourceBundle getApplicationBundle(String application) {
return getApplicationBundle(application, (Locale) null);
}
/**
* 傾僾儕働乕僔儑儞ID偲儘働乕儖偐傜儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @param locale 儘働乕儖
* @return 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
* @since 4.2
*/
private ResourceBundle getApplicationBundle(
String application,
Locale locale) {
Map appMap = (Map)this.bundles.get(application);
if (appMap == null) {
return null;
}
return (ResourceBundle)appMap.get(locale);
}
/**
* 嫟捠偺儕僜乕僗僶儞僪儖傪愝掕偟傑偡丅
*
* @param commonBundles 嫟捠偺儕僜乕僗僶儞僪儖
* @since 3.2
*/
private void putCommonBundle(ResourceBundle commonBundle) {
putCommonBundle(commonBundle, (Locale) null);
}
/**
* 嫟捠偺儕僜乕僗僶儞僪儖傪愝掕偟傑偡丅
*
* @param commonBundles 嫟捠偺儕僜乕僗僶儞僪儖
* @param locale 儘働乕儖
* @since 4.2
*/
private void putCommonBundle(ResourceBundle commonBundle, Locale locale) {
this.commonBundles.put(locale, commonBundle);
}
/**
* 嫟捠偺儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
*
* @return 嫟捠偺儕僜乕僗僶儞僪儖
* @throws ServicePropertyException 嫟捠偺儕僜乕僗僶儞僪儖庢摼帪偵椺奜偑敪惗
* @since 3.2
*/
private ResourceBundle getCommonBundle() throws ServicePropertyException {
return getCommonBundle((Locale) null);
}
/**
* 嫟捠偺儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
*
* @param locale 儘働乕儖
* @return 嫟捠偺儕僜乕僗僶儞僪儖
* @throws ServicePropertyException 嫟捠偺儕僜乕僗僶儞僪儖庢摼帪偵椺奜偑敪惗
* @since 4.2
*/
private ResourceBundle getCommonBundle(Locale locale)
throws ServicePropertyException {
if (isDynamic()) {
try {
return createCommonBundle(locale);
} catch (Exception e) {
throw new ServicePropertyException(e.getMessage(), e);
}
} else {
ResourceBundle result = null;
synchronized (this.commonBundles) {
result = (ResourceBundle)this.commonBundles.get(locale);
if (result == null) {
try {
result = createCommonBundle(locale);
} catch (Exception e) {
throw new ServicePropertyException(e.getMessage(), e);
}
putCommonBundle(result, locale);
}
}
return result;
}
}
/**
* 嫟捠偺儕僜乕僗僶儞僪儖傪惗惉偟傑偡丅
*
* @return 嫟捠偺儕僜乕僗僶儞僪儖
* @throws 嫟捠偺儕僜乕僗僶儞僪儖偺惗惉偵幐攕
*/
private ResourceBundle createCommonBundle()
throws PropertyHandlerException {
return createCommonBundle((Locale) null);
}
/**
* 嫟捠偺儕僜乕僗僶儞僪儖傪惗惉偟傑偡丅
*
* @param locale 儘働乕儖
* @return 嫟捠偺儕僜乕僗僶儞僪儖
* @throws 嫟捠偺儕僜乕僗僶儞僪儖偺惗惉偵幐攕
*/
private ResourceBundle createCommonBundle(Locale locale)
throws PropertyHandlerException {
try {
return createPropertyResourceBundle(
getPropertyFileDir() + File.separator + getBundlePrefix(),
locale);
} catch (PropertyHandlerException e) {
throw e;
} catch (Exception e) {
throw new PropertyHandlerException(e.getMessage(), e);
}
}
/**
* 傾僾儕働乕僔儑儞ID偱巜掕偝傟偨儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
* @throws ServicePropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
* @since 3.2
*/
private ResourceBundle getResourceBundle(String application)
throws ServicePropertyException {
return getResourceBundle(application, (Locale) null);
}
/**
* 傾僾儕働乕僔儑儞ID偱巜掕偝傟偨儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
*
* @param application 傾僾儕働乕僔儑儞ID
* @param locale 儘働乕儖
* @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
* @throws ServicePropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
* @since 4.2
*/
private ResourceBundle getResourceBundle(String application, Locale locale)
throws ServicePropertyException {
if (isDynamic()) {
return createResourceBundle(application, locale);
} else {
ResourceBundle result;
synchronized (this.bundles) {
result = getApplicationBundle(application, locale);
if (result == null) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -