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

📄 distributesdatapropertyhandler.java

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

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

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.Map;
import java.util.ResourceBundle;

import jp.co.intra_mart.framework.system.property.PropertyParam;

import java.util.MissingResourceException;

import jp.co.intra_mart.framework.system.property.PropertyHandlerException;

/**
 * 傾僾儕働乕僔儑儞枅偺僾儘僷僥傿僴儞僪儔傪屇傃弌偟傑偡丅
 * <BR>僾儘僷僥傿僼傽僀儖偼傾僾儕働乕僔儑儞枅偵暘妱偝傟傑偡丅
 * <BR>偙偺応崌偺僼傽僀儖柤偼乽<I>僾儗僼傿僢僋僗</I>_<I>傾僾儕働乕僔儑儞ID</I>.properties乿丄乽<I>僾儗僼傿僢僋僗</I>_<I>傾僾儕働乕僔儑儞ID</I>.xml乿偱偡丅
 * <BR>傑偨丄傾僾儕働乕僔儑儞偵埶懚偟側偄乽<I>僾儗僼傿僢僋僗</I>.properties乿偑偁傝傑偡丅
 * <BR>僾儘僷僥傿僼傽僀儖偺僾儗僼傿僢僋僗偼{@link jp.co.intra_mart.framework.system.property.PropertyManager#getPropertyHandlerParams(String)}偱僉乕偵{@link DataManager#DATA_PROPERTY_HANDLER_KEY}傪巜掕偟偨偲偒偵庢摼偝傟傞僷儔儊乕僞偺偆偪{@link #DEFAULT_BUNDLE_NAME}偱庢摼偝傟傞傕偺偲側傝傑偡丅
 * 巜掕偟側偐偭偨応崌偺僾儘僷僥傿僼傽僀儖偺僾儗僼傿僢僋僗偼{@link #DEFAULT_BUNDLE_NAME_PARAM}偱帵偝傟傞傕偺偱偡丅
 *  
 * @author INTRAMART
 * @version 1.0
 */
public class DistributesDataPropertyHandler implements DataPropertyHandler {

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

    /**
     * 儕僜乕僗僶儞僪儖柤偺僷儔儊乕僞柤
     */
    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;


    /**
     * 嫟捠偺僨乕僞儕僜乕僗忣曬偑愝掕偝傟偰偄傞儕僜乕僗僶儞僪儖
     */
    private ResourceBundle commonBundle;

    /**
     * DefaultDataPropertyHandler傪怴婯偵惗惉偟傑偡丅
     */
    public DistributesDataPropertyHandler() {
        setBundlePrefix(null);
        setApplicationBundles(new HashMap());
        setCommonBundle(null);
    }

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

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


    /**
     * 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌傪愝掕偟傑偡丅
     *
     * @param applicationBundles 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
     * @since 3.2
     */
    private void setApplicationBundles(Map applicationBundles) {
        this.bundles = applicationBundles;
    }

    /**
     * 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌傪庢摼偟傑偡丅
     *
     * @return 傾僾儕働乕僔儑儞偛偲偺儕僜乕僗僶儞僪儖偺廤崌
     * @since 3.2
     */
    private Map getApplicationBundles() {
        return this.bundles;
    }

	/**
	 * 嫟捠偺儕僜乕僗僶儞僪儖傪愝掕偟傑偡丅
	 * 
	 * @param commonBundle 嫟捠偺儕僜乕僗僶儞僪儖
	 * @since 3.2
	 * 
	 * @uml.property name="commonBundle"
	 */
	private void setCommonBundle(ResourceBundle commonBundle) {
		this.commonBundle = commonBundle;
	}

	/**
	 * 嫟捠偺儕僜乕僗僶儞僪儖傪庢摼偟傑偡丅
	 * 
	 * @return 嫟捠偺儕僜乕僗僶儞僪儖
	 * @throws DataPropertyException 嫟捠偺儕僜乕僗僶儞僪儖庢摼帪偵椺奜偑敪惗
	 * @since 3.2
	 * 
	 * @uml.property name="commonBundle"
	 */
	private ResourceBundle getCommonBundle() throws DataPropertyException {
		return this.commonBundle;
	}

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

        synchronized (this.bundles) {
            result = (ResourceBundle)getApplicationBundles().get(application);
            if (result == null) {
                result = createResourceBundle(application);
                getApplicationBundles().put(application, result);
            }
        }

        return result;
    }

    /**
     * 傾僾儕働乕僔儑儞ID偱巜掕偝傟偨儕僜乕僗僶儞僪儖傪惗惉偟傑偡丅
     *
     * @param application 傾僾儕働乕僔儑儞ID
     * @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
     * @throws DataPropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
     * @since 3.2
     */
    private ResourceBundle createResourceBundle(String application)
        throws DataPropertyException {
        try {
            return ResourceBundle.getBundle(
                getPropertyPackage( application ) + getBundlePrefix() + "_" + this.getApplicationID( application ));
        } catch (MissingResourceException e) {
            throw new DataPropertyException(e.getMessage(), e);
        }
    }

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

    /**
	 * properties僼傽僀儖偑懚嵼偡傞僷僢働乕僕傪庢摼偟傑偡丅
	 * 僷僢働乕僕壔偝傟偰偄側偄応崌偼嬻暥帤傪曉媝偟傑偡丅
	 *  
	 * @param application
	 * @return 僷僢働乕僕
     * @since 2004.09.13
	 */
    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
     * @since 2004.09.13
	 */
    private String getApplicationID( String application ) {
        
        String[] paramAry = application.split("[.]");
	    String id = paramAry[paramAry.length - 1];

		return id;
	}
    
    /**
     * 僾儘僷僥傿僴儞僪儔傪弶婜壔偟傑偡丅
     *
     * @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();
                }
            }
            // 僨僼僅儖僩偺Handler僋儔僗傪庢摼偟傑偡丅
            getDefaultHandler(params);

            // 傾僾儕働乕僔儑儞枅偺Handler僋儔僗傪庢摼偟傑偡丅
			getApplicationHandler(params);
        }
        if (bundleName == null) {
            bundleName = DEFAULT_BUNDLE_NAME;
        }

        setBundlePrefix(bundleName);

        try {
            setCommonBundle(ResourceBundle.getBundle(bundleName));
        } catch (MissingResourceException e) {
            throw new PropertyHandlerException(e.getMessage(), e);
        }
    }

    /**
     * Default偺Handler忣曬傪庢摼偟傑偡丅 
     *
     * @param params 弶婜僷儔儊乕僞
     */
    private void getDefaultHandler(PropertyParam[] params) throws PropertyHandlerException{

		List keys = new ArrayList();
		HashMap values = new HashMap();

		try {
			// "default"偱峣傝崬傒傑偡丅
			for ( int i = 0; i < params.length; i++ ) {
				if ( params[i].getName().indexOf(PARAM_DEFAULT) != -1 ) {
				    keys.add(params[i].getName());
					values.put(params[i].getName(), params[i].getValue());
				}
			}

			setApplicationBundles( PARAM_DEFAULT, keys, values );

		} catch (Exception e) {
			throw new PropertyHandlerException();		    
		}
	}

    /**
     * Application枅偺Handler忣曬傪庢摼偟傑偡丅 
     *
     * @param params 弶婜僷儔儊乕僞
     */
    private void getApplicationHandler(PropertyParam[] params) throws PropertyHandlerException{

		List keys = new ArrayList();
		Map values = new HashMap();

		// "application"偱峣傝崬傒傑偡丅
		for ( int i = 0; i < params.length; i++ ) {
			if ( params[i].getName().indexOf(PARAM_APPLICATION) != -1 ) {

⌨️ 快捷键说明

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