⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distributesservicepropertyhandler.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
/*
 * DistributesServicePropertyHandler.java
 *
 * Created on 2004/09/15, 14:15
 */

package jp.co.intra_mart.framework.base.service;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
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>
 * 
 * 捠忢帪偵巊梡偝傟傞僒乕價僗僾儘僷僥傿僴儞僪儔偼 <code>default.class</code> 偱帵偝傟傞僷儔儊乕僞柤偱巜掕偟傑偡丅
 * 偙偙偱巜掕偝傟傞僒乕價僗僾儘僷僥傿僴儞僪儔偵搉偡弶婜抣偼丄 <code>default.param.<i>僷儔儊乕僞柤</i></code>
 * 偱帵偝傟傞僷儔儊乕僞柤偱巜掕偟傑偡丅
 * 
 * 偁傞摿掕偺傾僾儕働乕僔儑儞偵懳偟偰摿掕偺僒乕價僗僾儘僷僥傿僴儞僪儔傪妱傝摉偰偨偄応崌丄
 * <code>application.class.<I>傾僾儕働乕僔儑儞ID</I></code> 偱帵偝傟傞僷儔儊乕僞柤偱巜掕偟傑偡丅
 * 偙偙偱巜掕偝傟傞僒乕價僗僾儘僷僥傿僴儞僪儔偵搉偡弶婜抣偼丄
 * <code>application.param.<I>傾僾儕働乕僔儑儞ID</I>.<i>僷儔儊乕僞柤</i></code>
 * 偱帵偝傟傞僷儔儊乕僞柤偱巜掕偟傑偡丅
 * 
 * 僼傽僀儖偑懚嵼偡傞僨傿儗僋僩儕柤偼 {@link #PARAM_FILE_DIR}偱帵偝傟傞僷儔儊乕僞柤偱巜掕偟傑偡丅 <BR>
 * {@link #PARAM_DYNAMIC}偱帵偝傟傞僷儔儊乕僞偵true傪巜掕偟偨応崌
 * 傾僾儕働乕僔儑儞幚峴帪偵傕僾儘僷僥傿偺曄峏傪摦揑偵斀塮偝偣傞偙偲偑壜擻偲側傝傑偡偑丄
 * 僷儔儊乕僞偺庢摼帪偵枅夞僼傽僀儖憖嶌傪峴偆偨傔僷僼僅乕儅儞僗偵埆塭嬁傪梌偊傞壜擻惈偑偁傝傑偡丅
 * 偙偺僆僾僔儑儞偼丄奐敪帪傗僨僶僢僌帪偺傛偆偵僷儔儊乕僞傪昿斏偵曄峏偡傞昁梫偑偁傞応崌偺傒true偲偟丄 捠忢偼false偵愝掕偟偰偍偄偰偔偩偝偄丅
 * 
 * @author INTRAMART
 * @since 5.0
 */
public class DistributesServicePropertyHandler implements
        ServicePropertyHandler {

    /**
     * 僨僼僅儖僩偺儕僜乕僗僶儞僪儖柤偺僾儗僼傿僢僋僗
     */
    public static final String DEFAULT_BUNDLE_NAME = "ServiceConfig";

    /**
     * 儕僜乕僗僶儞僪儖柤偺僷儔儊乕僞柤
     */
    public static final String DEFAULT_BUNDLE_NAME_PARAM = "bundle";

    /**
     * 僨僼僅儖僩
     */
    public static final String PARAM_DEFAULT = "default";

    /**
     * 傾僾儕働乕僔儑儞
     */
    public static final String PARAM_APPLICATION = "application";

    /**
     * 僷儔儊乕僞
     */
    public static final String PARAM_APPLICATION_PARAM = "param";

    /**
     * 僋儔僗
     */
    public static final String PARAM_APPLICATION_CLASS = "class";

    /**
     * 僾儘僷僥傿僼傽僀儖偺僼傽僀儖僷僗偺僷儔儊乕僞柤
     */
    public static final String PARAM_FILE_DIR = "file_dir";

    /**
     * 僾儘僷僥傿僼傽僀儖偺嵞撉傒崬傒壜擻偺僷儔儊乕僞柤
     */
    public static final String PARAM_DYNAMIC = "dynamic";

    /**
     * 僾儘僷僥傿僼傽僀儖偺僶儞僪儖偺僷儔儊乕僞柤
     */
    public static final String PARAM_BUNDLE = "bundle";

    /**
     * 僨乕僞儕僜乕僗忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
     */
    private String bundlePrefix;

    /**
     * 傾僾儕働乕僔儑儞偛偲偺僴儞僪儔忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖
     */
    private Map bundles = new HashMap();

    /**
     * 嫟捠偺僒乕價僗儕僜乕僗忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖
     */
    private Map commonBundle = new HashMap();

    /**
     * DefaultServicePropertyHandler傪怴婯偵惗惉偟傑偡丅
     */
    public DistributesServicePropertyHandler() {
        setBundlePrefix(null);
    }

    /**
     * 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗傪愝掕偟傑偡丅
     * 
     * @param bundlePrefix 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
     */
    private void setBundlePrefix(String bundlePrefix) {
        this.bundlePrefix = bundlePrefix;
    }

    /**
     * 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗傪庢摼偟傑偡丅
     * 
     * @return 儕僜乕僗僶儞僪儖偺僾儗僼傿僢僋僗
     */
    private String getBundlePrefix() {
        return this.bundlePrefix;
    }

    /**
     * 傾僾儕働乕僔儑儞僶儞僪儖偐傜僴儞僪儔偺儕僜乕僗忣曬傪庢摼偟傑偡丅
     * 
     * @return 僴儞僪儔偺儕僜乕僗忣曬
     */
    private Object getApplicationBundle(String application) {
        Object obj = this.bundles.get(application);
        if (obj == null) {
            obj = this.bundles.get(PARAM_DEFAULT);
        }
        return obj;
    }

    /**
     * 嫟捠偺儕僜乕僗僶儞僪儖傪愝掕偟傑偡丅
     * 
     * @param commonBundle 嫟捠偺儕僜乕僗僶儞僪儖
     */
    private void setCommonBundle(ResourceBundle commonBundle) {
        setCommonBundle(commonBundle, (Locale) null);
    }

    /**
     * 嫟捠偺儕僜乕僗僶儞僪儖傪愝掕偟傑偡丅
     * 
     * @param locale 儘働乕儖
     * @param commonBundle 嫟捠偺儕僜乕僗僶儞僪儖
     */
    private void setCommonBundle(ResourceBundle commonBundle, Locale locale) {
        this.commonBundle.put(locale, commonBundle);
    }

    /**
     * 嫟捠偺儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
     * 
     * @return 嫟捠偺儕僜乕僗僶儞僪儖
     * @throws ServicePropertyException 嫟捠偺儕僜乕僗僶儞僪儖庢摼帪偵椺奜偑敪惗
     */
    private ResourceBundle getCommonBundle() throws ServicePropertyException {
        return getCommonBundle(null);
    }

    /**
     * 嫟捠偺儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
     * 
     * @return 嫟捠偺儕僜乕僗僶儞僪儖
     * @throws ServicePropertyException 嫟捠偺儕僜乕僗僶儞僪儖庢摼帪偵椺奜偑敪惗
     */
    private ResourceBundle getCommonBundle(Locale locale)
            throws ServicePropertyException {

        ResourceBundle result;
        Locale realLocale = locale;
        if (realLocale == null) {
            realLocale = Locale.getDefault();
        }

        synchronized (this.commonBundle) {
            result = (ResourceBundle) commonBundle.get(realLocale);
            if (result == null) {
                result = createCommonBundle(realLocale);
                setCommonBundle(result, realLocale);
            }
        }

        return result;
    }

    /**
     * 傾僾儕働乕僔儑儞ID偱巜掕偝傟偨儕僜乕僗僶儞僪儖傪惗惉偟傑偡丅
     * 
     * @param application 傾僾儕働乕僔儑儞ID
     * @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
     * @throws ServicePropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
     */
    private ResourceBundle createCommonBundle(Locale locale)
            throws ServicePropertyException {

        try {
            return ResourceBundle.getBundle(getBundlePrefix(), locale);
        } catch (MissingResourceException e) {
            throw new ServicePropertyException(e.getMessage(), e);
        }
    }

    /**
     * 傾僾儕働乕僔儑儞ID偱巜掕偝傟偨儕僜乕僗僶儞僪儖傪惗惉偟傑偡丅
     * 
     * @param application 傾僾儕働乕僔儑儞ID
     * @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
     * @throws ServicePropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
     */
    private ResourceBundle createResourceBundle(String application)
            throws ServicePropertyException {

        try {
            return ResourceBundle.getBundle(getPropertyPackage(application)
                    + getBundlePrefix() + "_" + getApplicationID(application));

        } catch (MissingResourceException e) {
            throw new ServicePropertyException(e.getMessage(), e);
        }
    }

    /**
     * 傾僾儕働乕僔儑儞ID偱巜掕偝傟偨儕僜乕僗僶儞僪儖傪惗惉偟傑偡丅
     * 
     * @param application 傾僾儕働乕僔儑儞ID
     * @param locale 儘働乕儖
     * @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
     * @throws ServicePropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
     */
    private ResourceBundle createResourceBundle(String application,
            Locale locale) throws ServicePropertyException {

        ResourceBundle bundle = null;
        try {
            if (locale == null) {
                bundle = ResourceBundle
                        .getBundle(getPropertyPackage(application)
                                + getBundlePrefix() + "_"
                                + getApplicationID(application));

            } else {
                bundle = ResourceBundle.getBundle(
                        getPropertyPackage(application) + getBundlePrefix()
                                + "_" + getApplicationID(application), locale);

            }
        } catch (MissingResourceException e) {
            throw new ServicePropertyException(e.getMessage(), e);
        }
        return bundle;
    }

    /**
     * properties僼傽僀儖偑懚嵼偡傞僷僢働乕僕傪庢摼偟傑偡丅 僷僢働乕僕壔偝傟偰偄側偄応崌偼嬻暥帤傪曉媝偟傑偡丅
     * 
     * @param application
     * @return 僷僢働乕僕
     */
    private String getPropertyPackage(String application) {

        String[] paramAry = application.split("[.]");
        StringBuffer buf = new StringBuffer();
        if (paramAry.length > 1) {
            for (int i = 0; i < paramAry.length - 1; i++) {
                buf.append(paramAry[i]);
                buf.append(File.separator);
            }
        }

        return buf.toString();
    }

    /**
     * 傾僾儕働乕僔儑儞ID傪庢摼偟傑偡丅
     * 
     * @param application
     * @return 傾僾儕働乕僔儑儞ID
     */
    private String getApplicationID(String application) {

        String[] paramAry = application.split("[.]");
        String id = paramAry[paramAry.length - 1];

        return id;
    }

    /**
     * 僾儘僷僥傿僴儞僪儔傪弶婜壔偟傑偡丅
     * 
     * @param params 弶婜僷儔儊乕僞
     * @throws PropertyHandlerException 僾儘僷僥傿僴儞僪儔偺弶婜壔帪偵椺奜偑敪惗
     */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -