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

📄 xmleventpropertyhandler.java

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

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

import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import javax.xml.parsers.ParserConfigurationException;

import org.xml.sax.SAXException;

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

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

/**
 * XML偺EventPropertyHandler偱偡丅
 * <BR>僾儘僷僥傿僼傽僀儖偼傾僾儕働乕僔儑儞枅偵暘妱偝傟傑偡丅偙偺応崌偺僼傽僀儖柤偼乽<I>僾儗僼傿僢僋僗</I>_<I>傾僾儕働乕僔儑儞ID</I>.xml乿偱偡丅
 * <BR>僾儘僷僥傿僼傽僀儖偺僾儗僼傿僢僋僗偼{@link jp.co.intra_mart.framework.system.property.PropertyManager#getPropertyHandlerParams(String)}偱僉乕偵{@link EventManager#EVENT_PROPERTY_HANDLER_KEY}傪巜掕偟偨偲偒偵庢摼偝傟傞僷儔儊乕僞偺偆偪{@link #DEFAULT_BUNDLE_NAME}偱庢摼偝傟傞傕偺偲側傝傑偡丅
 * 巜掕偟側偐偭偨応崌偺僾儘僷僥傿僼傽僀儖偺僾儗僼傿僢僋僗偼{@link #DEFAULT_BUNDLE_NAME_PARAM}偱帵偝傟傞傕偺偱偡丅
 * <BR>僾儘僷僥傿偺愝掕撪梕偼埲壓偺偲偍傝偱偡丅
 * @author INTRAMART
 * @version 1.0
 */
public class XmlEventPropertyHandler implements EventPropertyHandler {

	/**
	 * 僨僼僅儖僩偺xml僼傽僀儖偺僾儗僼傿僢僋僗
	 */
	public static final String DEFAULT_BUNDLE_NAME = "event-config";

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

	/**
	 * 僀儀儞僩儕僜乕僗忣曬偑愝掕偝傟偰偄傞XML僼傽僀儖偺僾儗僼傿僢僋僗
	 */
	private String xmlPrefix;

    /**
     * 嵞愝掕壜擻僼儔僌
     */
    private boolean dynamic;

    /**
	 * 傾僾儕働乕僔儑儞偛偲偺儌僨儖孮偺儅僢僾
	 */
	private Map applicationModels;

	/**
	 * DefaultEventPropertyHandler傪怴婯偵惗惉偟傑偡丅
	 */
	public XmlEventPropertyHandler() {
		setXMLPrefix(null);
		applicationModels = new HashMap();
	}

	/**
	 * XML僼傽僀儖偺僾儗僼傿僢僋僗傪愝掕偟傑偡丅
	 *
	 * @param xmlPrefix丂XML僼傽僀儖偺僾儗僼傿僢僋僗
	 * @since 3.2
	 */
	private void setXMLPrefix(String xmlPrefix) {
		this.xmlPrefix = xmlPrefix;
	}

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

	/**
	 * 傾僾儕働乕僔儑儞ID偲僉乕偵懳墳偡傞僀儀儞僩儌僨儖傪庢摼偟傑偡丅
	 * 僴僢僔儏儅僢僾偵傾僋僙僗偡傞偺偱丄偙偺儊僜僢僪偼攔懠惂屼傪峴偄傑偡丅
	 * @param application 傾僾儕働乕僔儑儞ID
	 * @param key 僉乕
	 * @return 傾僾儕働乕僔儑儞ID偵奩摉偡傞儕僜乕僗僶儞僪儖
	 * @throws EventPropertyException 儕僜乕僗僶儞僪儖偺庢摼帪偵椺奜偑敪惗
	 * @since 3.2
	 */
	private synchronized EventGroupModel getEventModel(String application, String key) throws EventPropertyException {
		EventGroupModel eventModel = null;
		synchronized(this.applicationModels) {
			
			// 僉乕偺堦棗傪庢摼
			Map keyModels = null;
			if (!isDynamic()) {
				keyModels = (Map) applicationModels.get(application);
			}
			if(keyModels == null) {
				keyModels = new HashMap();
				applicationModels.put(application,keyModels);
			}

			// 僀儀儞僩偺堦棗傪庢摼
			if (!isDynamic()) {
				eventModel = (EventGroupModel)keyModels.get(key);
			}
			if (eventModel == null) {
				eventModel = createEventModel(application, key);
				keyModels.put(key,eventModel);
			}
		}
		return eventModel;
	}

	/**
	 * 傾僾儕働乕僔儑儞ID偲僉乕偵懳墳偟偨僀儀儞僩儌僨儖傪惗惉偟傑偡丅
	 *
	 * @param application 傾僾儕働乕僔儑儞ID
	 * @return 傾僾儕働乕僔儑儞ID偲僉乕偵懳墳偡傞僀儀儞僩儌僨儖
	 * @throws EventPropertyException丂儌僨儖惗惉帪偺庢摼帪偵椺奜偑敪惗
	 */
	private EventGroupModel createEventModel(String application,String key) throws EventPropertyException {
		try{
			EventModelProducer producer = new EventModelProducer();
			EventGroupModel eventModel = producer.createEventModel(application, key, getXMLPrefix());
			return eventModel;
		}catch (ParserConfigurationException e){
			throw new EventPropertyException(e.getMessage() + ": application = " + application + ", key = " + key,e);
		}catch (SAXException e) {
			throw new EventPropertyException(e.getMessage() + ": application = " + application + ", key = " + key,e);
		}catch (IOException e) {
			throw new EventPropertyException(e.getMessage() + ": application = " + application + ", key = " + key,e );
		}catch (IllegalArgumentException e) {
			throw new EventPropertyException(e.getMessage() + ": application = " + application + ", key = " + key,e );			
		}
	}


	/**
	 * 僾儘僷僥傿僴儞僪儔傪弶婜壔偟傑偡丅
	 *
	 * @param params 弶婜僷儔儊乕僞
	 * @throws PropertyHandlerException 僾儘僷僥傿僴儞僪儔偺弶婜壔帪偵椺奜偑敪惗
	 */
	public void init(PropertyParam[] params) throws PropertyHandlerException {
		String bundleName = null;
		String dynamic = 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();
                } else if (params[i].getName().equals(PARAM_DYNAMIC)) {
                    // 嵞愝掕壜擻僼儔僌偺応崌
                    dynamic = params[i].getValue();
				}
			}
		}
		if (bundleName == null) {
			bundleName = DEFAULT_BUNDLE_NAME;
		}

		// 僾儗僼傿僢僋僗偺愝掕
		setXMLPrefix(bundleName);
		
        // 嵞愝掕壜擻僼儔僌偺愝掕
        Boolean dummyDynamic = new Boolean(dynamic);
        setDynamic(dummyDynamic.booleanValue());

	}

	/**
	 * 嵞愝掕壜擻乛晄壜擻傪愝掕偟傑偡丅
	 * 
	 * @param dynamic true 嵞愝掕壜擻丄false 嵞愝掕晄壜
	 * 
	 * @uml.property name="dynamic"
	 */
	private void setDynamic(boolean dynamic) {
		this.dynamic = dynamic;
	}

	/**
	 * 僾儘僷僥傿偺摦揑撉傒崬傒偑壜擻偐偳偆偐挷傋傑偡丅
	 * 偙偺僋儔僗偱偼偙偺儊僜僢僪偼忢偵false傪曉偟傑偡丅
	 *
	 * @return 忢偵false
	 * @throws EventPropertyException 僠僃僢僋帪偵椺奜偑敪惗
	 */
	public boolean isDynamic() throws EventPropertyException {
		return this.dynamic;
	}

	/**
	 * 傾僾儕働乕僔儑儞ID偲僉乕偵奩摉偡傞僀儀儞僩偺僋儔僗柤傪庢摼偟傑偡丅
	 * 奩摉偡傞僀儀儞僩偑懚嵼偟側偄応崌丄null傪曉偟傑偡丅
	 *
	 * @param application 傾僾儕働乕僔儑儞ID
	 * @param key 僀儀儞僩偺僉乕
	 * @return 僀儀儞僩偺僋儔僗柤
	 * @throws EventPropertyException 僀儀儞僩偺僋儔僗柤偺庢摼偵幐攕
	 */
	public String getEventName(String application, String key) throws EventPropertyException {
		EventGroupModel eventModel = getEventModel(application,key);
		return eventModel.getEventName();	
	}

	/**
	 * 傾僾儕働乕僔儑儞ID偲僉乕偵奩摉偡傞僀儀儞僩儕僗僫僼傽僋僩儕偺僋儔僗柤傪庢摼偟傑偡丅
	 *
	 * @param application 傾僾儕働乕僔儑儞ID
	 * @param key 僀儀儞僩儕僗僫僼傽僋僩儕偺僉乕
	 * @return 僀儀儞僩儕僗僫僼傽僋僩儕偺僋儔僗柤
	 * @throws EventPropertyException 僀儀儞僩儕僗僫僼傽僋僩儕偺僋儔僗柤偺庢摼偵幐攕
	 */
	public String getEventListenerFactoryName(String application, String key) throws EventPropertyException {
		EventGroupModel eventModel = getEventModel(application,key);
		return eventModel.getEventFactory().getFactoryName();

	}

	/**
	 * 傾僾儕働乕僔儑儞ID偲僉乕偵奩摉偡傞僀儀儞僩儕僗僫僼傽僋僩儕偺弶婜僷儔儊乕僞傪庢摼偟傑偡丅
	 *
	 * @param application 傾僾儕働乕僔儑儞ID
	 * @param key 僀儀儞僩偺僉乕
	 * @return 僀儀儞僩儕僗僫僼傽僋僩儕偺弶婜僷儔儊乕僞
	 * @throws EventPropertyException 僀儀儞僩儕僗僫僼傽僋僩儕偺弶婜僷儔儊乕僞偺庢摼偵幐攕
	 */
	public EventListenerFactoryParam[] getEventListenerFactoryParams(String application,String key) throws EventPropertyException {
		EventGroupModel eventModel = getEventModel(application,key);
		return eventModel.getEventFactory().getFactoryParams();
	}

	/**
	 * 傾僾儕働乕僔儑儞ID偲僉乕偵奩摉偡傞僀儀儞僩偺僀儀儞僩僩儕僈忣曬傪偡傋偰庢摼偟傑偡丅
	 * <CODE>application</CODE>偲<CODE>key</CODE>偱掕媊偝傟傞{@link EventTrigger}傪掕媊偝傟偨弴斣偱僜乕僩偟偨Collection偲偟偰庢摼偟傑偡丅
	 *
	 * @param application 傾僾儕働乕僔儑儞ID
	 * @param key 僀儀儞僩偺僉乕
	 * @return 僀儀儞僩僩儕僈忣曬偺僐儗僋僔儑儞
	 * @throws EventPropertyException 僀儀儞僩僩儕僈忣曬偺庢摼偵幐攕
	 * @see EventListener
	 */
	public Collection getEventTriggerInfos(String application, String key) throws EventPropertyException {
		EventGroupModel eventModel = getEventModel(application,key);
		return eventModel.getPreTriggerInfos();
	}

    /**
     * 僉乕偵奩摉偡傞僀儀儞僩偺僀儀儞僩僩儕僈忣曬傪偡傋偰庢摼偟傑偡丅
     * 偙偙偱庢摼偝傟傞僀儀儞僩僩儕僈偼僀儀儞僩偺張棟屻偵幚峴偝傟傑偡丅
     * <CODE>application</CODE>偲<CODE>key</CODE>偱掕媊偝傟傞{@link EventTrigger}傪掕媊偝傟偨弴斣偱僜乕僩偟偨Collection偲偟偰庢摼偟傑偡丅
     *
     * @param application 傾僾儕働乕僔儑儞
     * @param key 僀儀儞僩偺僉乕
     * @return 僀儀儞僩僩儕僈忣曬偺僐儗僋僔儑儞
     * @throws EventPropertyException 僀儀儞僩僩儕僈忣曬偺庢摼偵幐攕
     * @see EventListener
     */
	public Collection getPostEventTriggerInfos(String application, String key)
            throws EventPropertyException {
		EventGroupModel eventModel = getEventModel(application,key);
		return eventModel.getPostTriggerInfos();
    }
    

}

⌨️ 快捷键说明

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