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

📄 propertymanager.java

📁 intra_mart是日本NDD公司开发的著名企业应用解决方案中间件。集成了J2ee服务器
💻 JAVA
字号:
/*
 * PropertyManager.java
 *
 * Created on 2001/11/08, 10:53
 */

package jp.co.intra_mart.framework.system.property;

import java.util.HashMap;
import java.util.Map;
import java.util.ResourceBundle;

import java.util.MissingResourceException;

/**
 * 僔僗僥儉愝掕偺忣曬傪娗棟偟傑偡丅
 *
 * @author INTRAMART
 * @version 1.0
 */
public abstract class PropertyManager {

    /**
     * 僾儘僷僥傿儅僱乕僕儍傪巜掕偡傞僉乕
     */
    public static final String KEY = "jp.co.intra_mart.framework.system.property.PropertyManager";

    /**
     * 僨僼僅儖僩偺僾儘僷僥傿儅僱乕僕儍僋儔僗
     */
    public static final String DEFAULT_SYSTEM_MANAGER = "jp.co.intra_mart.framework.system.property.XmlPropertyManager";

    /**
     * 僾儘僷僥傿儅僱乕僕儍
     */
    private static PropertyManager manager;

    /**
     * 僾儘僷僥傿僴儞僪儔偺廤崌
     */
    private Map propertyHandlers;

    /**
     * 僾儘僷僥傿儅僱乕僕儍偺僐儞僗僩儔僋僞偱偡丅
     * 僐儞僗僩儔僋僞偺柧帵揑側巊梡偼偱偒傑偣傫丅
     */
    protected PropertyManager() {
        this.propertyHandlers = new HashMap();
    }

    /**
     * 僾儘僷僥傿儅僱乕僕儍傪庢摼偟傑偡丅
     * 僾儘僷僥傿儅僱乕僕儍偼忢偵侾偮偩偗懚嵼偟傑偡丅
     * 僾儘僷僥傿儅僱乕僕儍偑枹愝掕偺忬懺偱偙偺儊僜僢僪偑屇偽傟偨応崌丄埲壓偺弴斣偱僾儘僷僥傿儅僱乕僕儍傪庢摼偟傑偡丅
     * <PRE>
     * 1.僔僗僥儉僾儘僷僥傿{@link #KEY KEY}偱愝掕偝傟偰偄傞僾儘僷僥傿儅僱乕僕儍
     * 2.僨僼僅儖僩偺僾儘僷僥傿儅僱乕僕儍
     * </PRE>
     *
     * @return 僾儘僷僥傿儅僱乕僕儍
     * @throws PropertyManagerException 僾儘僷僥傿儅僱乕僕儍偺愝掕帪偵敪惗偡傞椺奜
     */
    public static synchronized PropertyManager getPropertyManager() throws PropertyManagerException {
        String className = null;

        // 僾儘僷僥傿儅僱乕僕儍偑枹嶌惉偺応崌丄怴婯偵嶌惉偡傞丅
        if (manager == null) {

            // 僔僗僥儉僾儘僷僥傿偐傜僾儘僷僥傿儅僱乕僕儍偺僋儔僗柤傪庢摼
            try {
                className = System.getProperty(KEY);
            } catch (Exception e) {
                String message = null;
                try {
                    message = ResourceBundle.getBundle("jp.co.intra_mart.framework.system.property.i18n").getString("PropertyManager.FailedToGetClass");
                } catch (MissingResourceException ex) {
                }
                throw new PropertyManagerException(message + " : System property = " + KEY, e);
            }

            // 僔僗僥儉僾儘僷僥傿偑枹愝掕偺応崌僨僼僅儖僩偺僾儘僷僥傿儅僱乕僕儍偺僋儔僗柤傪巊梡
            if (className == null) {
                className = DEFAULT_SYSTEM_MANAGER;
            }

            // 僾儘僷僥傿儅僱乕僕儍偺惗惉
            try {
                manager = (PropertyManager)Class.forName(className).newInstance();
            } catch (Exception e) {
                String message = null;
                try {
                    message = ResourceBundle.getBundle("jp.co.intra_mart.framework.system.property.i18n").getString("PropertyManager.FailedToCreateManager");
                } catch (MissingResourceException ex) {
                }
                e.printStackTrace();
                throw new PropertyManagerException(message + " : class name = " + className, e);
            }
        }

        return manager;
    }

    /**
     * 僉乕偱巜掕偝傟偨僾儘僷僥傿僴儞僪儔偺僋儔僗柤傪庢摼偟傑偡丅
     *
     * @param key 僾儘僷僥傿僴儞僪儔偺僉乕
     * @return 僾儘僷僥傿僴儞僪儔偺僋儔僗柤
     * @throws PropertyHandlerException 僾儘僷僥傿僴儞僪儔偺僋儔僗柤傪庢摼偱偒側偐偭偨応崌偵敪惗偡傞椺奜
     */
    protected abstract String getPropertyHandlerName(String key) throws PropertyHandlerException;

    /**
     * 僉乕偱巜掕偝傟偨僾儘僷僥傿僴儞僪儔偺弶婜壔僨乕僞傪庢摼偟傑偡丅
     * 弶婜壔僨乕僞偑懚嵼偟側偄応崌丄null偑曉傝傑偡丅
     *
     * @param key 僾儘僷僥傿僴儞僪儔偺僉乕
     * @return 僾儘僷僥傿僴儞僪儔偺弶婜壔僨乕僞
     */
    protected abstract PropertyHandlerParam[] getPropertyHandlerParams(String key);

    /**
     * 僉乕偱巜掕偝傟偨僾儘僷僥傿僴儞僪儔傪庢摼偟傑偡丅
     *
     * @return 僾儘僷僥傿僴儞僪儔
     * @param key 僾儘僷僥傿僴儞僪儔偺僉乕
     * @throws PropertyHandlerException 僾儘僷僥傿僴儞僪儔偺庢摼偵幐攕
     */
    public PropertyHandler getPropertyHandler(String key) throws PropertyHandlerException {
        PropertyHandler result;
        PropertyHandlerParam[] params;
        String className;
        String option;

        // 僉乕偵堦抳偡傞僾儘僷僥傿僴儞僪儔傪専嶕偡傞丅
        result = (PropertyHandler)this.propertyHandlers.get(key);

        // 僾儘僷僥傿僴儞僪儔偑枹搊榐偺応崌丄僉乕偵堦抳偡傞僾儘僷僥傿僴儞僪儔偺僋儔僗傪怴婯搊榐偡傞丅
        if (result == null) {
            className = getPropertyHandlerName(key);
            try {
                result = (PropertyHandler)Class.forName(className).newInstance();
            } catch (Exception e) {
                String message = null;
                try {
                    message = ResourceBundle.getBundle("jp.co.intra_mart.framework.system.property.i18n").getString("PropertyManager.FailedToGetPropertyHandler");
                } catch (MissingResourceException ex) {
                }
                throw new PropertyHandlerException(message + " : " + className, e);
            }

            params = getPropertyHandlerParams(key);
            result.init(params);
            propertyHandlers.put(key, result);
        }

        return result;
    }
}

⌨️ 快捷键说明

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