/** * <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.AtomFunction; import com.hundsun.ares.studio.atom.compiler.mysql.constant.IAtomEngineContextConstantMySQL; import com.hundsun.ares.studio.atom.compiler.mysql.macro.MacroConstant; import com.hundsun.ares.studio.atom.compiler.mysql.token.PackAddFieldBodyToken; import com.hundsun.ares.studio.engin.constant.IEngineContextConstant; import com.hundsun.ares.studio.engin.macrohandler.IMacroTokenHandler; import com.hundsun.ares.studio.engin.skeleton.ISkeletonAttributeHelper; 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.macro.IMacroToken; /** * @author zhuyf * */ public class PackAddValueByHandworkMacroHandler implements IMacroTokenHandler { /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.macrohandler.IMacroTokenHandler#getKey() */ @Override public String getKey() { return MacroConstant.PACK_ADDVALUE_HANDWORK_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 { /*���������� [�ֹ������] �������̣� 1.����Ƿ���[�ֹ����ͷ]�ɶ�ƥ�� 2.�ӳɶԵ�[�ֹ����ͷ]�л�ȡ�ֶ��б��������ֶΣ���ÿһ�ֶ����ɣ� lpOutPacker->Add[�ֶ�����]([�ֶ���]); //[�ֶ�ע��] 3.[�ֹ������][client_id][@unpack_sett]����ָ�������������������䣺 v_unpack_sett->Add[�ֶ�����]([�ֶ���]); //[�ֶ�ע��] v_unpack_sett->EndPack(); 4.[�ֹ������][client_id][@unpack_sett][N]��������v_unpack_sett->EndPack(); * */ List<ICodeToken> tokens = new ArrayList<ICodeToken>(); ISkeletonAttributeHelper helper = (ISkeletonAttributeHelper)context.get(IAtomEngineContextConstantMySQL.SKELETON_ATTRIBUTE_HELPER); helper.addAttribute(IAtomEngineContextConstantMySQL.IS_ALREADY_RETURN_RESULTSET, "true"); IDomainHandler handler = (IDomainHandler) context.get(IEngineContextConstant.DOMAIN_HANDLER); ITokenDomain packAddFieldHead =handler.getDomain(MacroConstant.PACK_ADDFIELD_HANDWORK_MACRONAME); AtomFunction atomFunction = (AtomFunction) context.get(IAtomEngineContextConstantMySQL.ResourceModel); helper.addAttribute(IAtomEngineContextConstantMySQL.ATTR_ACK_ADDVALUE_HANDWORK_LIST,atomFunction.getObjectId());//�ֹ�������б� if (packAddFieldHead == null) { //throw new RuntimeException(getKey() + " �����ڴ��ͷ"); //������������֧�У����ͷ������δ�سɶԳ��֣���ȥ���ü�顣 } String param_0 = ""; String param_1 = ""; String param_2 = ""; if (token.getParameters().length > 1) { param_0 = StringUtils.trim(token.getParameters()[1]); if(!StringUtils.endsWith(param_0, "ResultSet")){ param_0+="ResultSet"; } } if (token.getParameters().length > 2) { param_2 = StringUtils.trim(token.getParameters()[2]); } if (token.getParameters().length > 0) { param_1 = StringUtils.trim(token.getParameters()[0]); } String headFeilds = ""; if (packAddFieldHead != null && packAddFieldHead.getArgs()!=null) { headFeilds = (String) packAddFieldHead.getArgs()[0]; } tokens.add(new PackAddFieldBodyToken(param_0, param_1,param_2,headFeilds)); //ɾ���� handler.removeDomain(MacroConstant.PACK_ADDFIELD_HANDWORK_MACRONAME); return tokens.iterator(); } }