/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.atom.compiler.mysql.macro.handlers; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import com.hundsun.ares.studio.atom.compiler.mysql.constant.DomainConstantMySQL; import com.hundsun.ares.studio.atom.compiler.mysql.macro.MacroConstant; import com.hundsun.ares.studio.atom.compiler.mysql.token.FuncResultObjectReturnToken; import com.hundsun.ares.studio.engin.constant.IEngineContextConstant; import com.hundsun.ares.studio.engin.constant.ITokenConstant; import com.hundsun.ares.studio.engin.macrohandler.IMacroTokenHandler; import com.hundsun.ares.studio.engin.token.DefaultTokenEvent; import com.hundsun.ares.studio.engin.token.ICodeToken; import com.hundsun.ares.studio.engin.token.IDomainHandler; import com.hundsun.ares.studio.engin.token.ITokenDomain; import com.hundsun.ares.studio.engin.token.ITokenListenerManager; import com.hundsun.ares.studio.engin.token.macro.IMacroToken; /** * @author liaogc * ������������󷵻� */ public class FuncResultObjectReturnMacroHandler implements IMacroTokenHandler{ /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.macrohandler.IMacroTokenHandler#getKey() */ @Override public String getKey() { return MacroConstant.FUNC_RESULT_OBJECT_RETURN_MACRONAME; } /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.macrohandler.IMacroTokenHandler#handle(com.hundsun.ares.studio.engin.token.macro.IMacroToken, java.util.Map) */ @Override public Iterator<ICodeToken> handle(IMacroToken token, Map<Object, Object> context) throws Exception { List<ICodeToken> codeTokens= new ArrayList<ICodeToken>(); if (token.getParameters().length !=1) { ITokenListenerManager manager =(ITokenListenerManager) context.get(IEngineContextConstant.TOKEN_LISTENER_MANAGER); String message = String.format("��[%s]ȱ�ٲ�����", MacroConstant.FUNC_RESULT_OBJECT_RETURN_MACRONAME); manager.fireEvent(new DefaultTokenEvent(ITokenConstant.EVENT_ENGINE_WARNNING,message)); }else{ ITokenDomain domain = getDomain(context); if(domain!=null){ String objectId = (String)domain.getArgs()[0];//��Դ����� String objectParamName = StringUtils.trim(token.getParameters()[0]);//������(��������) codeTokens.add(new FuncResultObjectReturnToken(objectId,objectParamName));//���token removeDomain(context);//ɾ���� }else{ ITokenListenerManager manager =(ITokenListenerManager) context.get(IEngineContextConstant.TOKEN_LISTENER_MANAGER); String message = MacroConstant.FUNC_RESULT_OBJECT_RETURN_MACRONAME+"��:ǰ��ĺ������������õĺ��������Ƿ��ؽ����"; manager.fireEvent(new DefaultTokenEvent(ITokenConstant.EVENT_ENGINE_WARNNING,message)); } } return codeTokens.iterator(); } /** * ������ */ private ITokenDomain getDomain(Map<Object, Object> context){ IDomainHandler handler = (IDomainHandler) context.get(IEngineContextConstant.DOMAIN_HANDLER); return handler.getDomain(DomainConstantMySQL.FUNC_RESULT_OBJECT_RETURN_DOMAIN); } /** * ɾ���� */ private void removeDomain(Map<Object, Object> context){ IDomainHandler handler = (IDomainHandler) context.get(IEngineContextConstant.DOMAIN_HANDLER); handler.removeDomain(DomainConstantMySQL.FUNC_RESULT_OBJECT_RETURN_DOMAIN); } }