/** * <p>Copyright: Copyright (c) 2013</p> * <p>Company: �������ӹɷ����޹�˾</p> */ package com.hundsun.ares.studio.atom.compiler.token; import java.util.Map; import com.hundsun.ares.studio.engin.constant.ITokenConstant; import com.hundsun.ares.studio.engin.token.ICodeToken; import com.hundsun.ares.studio.engin.util.TypeRule; import com.hundsun.ares.studio.jres.model.metadata.util.MetadataServiceProvider; /** * @author zhuyf * */ public class FunctionResultSetGetValueToken implements ICodeToken { String params; String packName; public FunctionResultSetGetValueToken(String params,String packName){ this.params = params; this.packName = packName; } /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.token.ICodeToken#getContent() */ @Override public String getContent() { // TODO Auto-generated method stub return null; } /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.token.ICodeToken#getType() */ @Override public int getType() { // TODO Auto-generated method stub return 0; } /* (non-Javadoc) * @see com.hundsun.ares.studio.engin.token.ICodeToken#genCode(java.util.Map) */ @Override public String genCode(Map<Object, Object> context) throws Exception { StringBuffer sb = new StringBuffer(); String[] pArray = params.split(","); //���� for(String keyvalue : pArray){ keyvalue = keyvalue.trim(); String[] kArray = keyvalue.split("="); String key = kArray[0].trim(); String value = kArray[1].trim(); sb.append(getValueCodeStr(PackAddFieldHeadToken.getDataType(context, value.replace("@", ""),MetadataServiceProvider.C_TYPE),key,value,packName)); } return sb.toString(); } /** * ������Ӧ�����Ͳ�������ȡ��Ӧ�ķ��� * * @param type * @return */ private String getValueCodeStr (String type,String param_name,String param_value,String packName){ if (TypeRule.typeRuleCharArray(type)) { return String.format(PARAM_INIT_STR,param_name,param_value,TypeRule.getCharLength(type),packName); }else if (TypeRule.typeRuleChar(type)) { return String.format(PARAM_INIT_CHAR, param_name,param_value,packName); } else if (TypeRule.typeRuleInt(type)) { return String.format(PARAM_INIT, "Int", param_name,param_value,packName); } else if (TypeRule.typeRuleDouble(type)) { return String.format(PARAM_INIT, "Double", param_name,param_value,packName); } return ""; } private final static String PARAM_INIT = "%3$s = %4$s->Get%1$s(\"%2$s\");" + ITokenConstant.NL; private final static String PARAM_INIT_CHAR = "%2$s = conversion(%3$s->GetChar(\"%1$s\"));" + ITokenConstant.NL; private final static String PARAM_INIT_STR = "hs_strncpy(%2$s,conversion((char *)%4$s->GetStr(\"%1$s\")),%3$s);" + ITokenConstant.NL; }