/**
* <p>Copyright: Copyright (c) 2013</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.atom.compiler.mysql.token.service;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import com.hundsun.ares.studio.atom.AtomService;
import com.hundsun.ares.studio.atom.compiler.mysql.constant.IAtomEngineContextConstantMySQL;
import com.hundsun.ares.studio.atom.compiler.mysql.skeleton.util.AtomFunctionCompilerUtil;
import com.hundsun.ares.studio.atom.constants.IAtomRefType;
import com.hundsun.ares.studio.atom.constants.IAtomResType;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.engin.constant.IEngineContextConstant;
import com.hundsun.ares.studio.engin.constant.ITokenConstant;
import com.hundsun.ares.studio.engin.constant.MarkConfig;
import com.hundsun.ares.studio.engin.skeleton.ISkeletonAttributeHelper;
import com.hundsun.ares.studio.engin.token.DefaultTokenEvent;
import com.hundsun.ares.studio.engin.token.ICodeToken;
import com.hundsun.ares.studio.engin.token.ITokenListenerManager;
/**
* @author zhuyf
*
*/
public class ServiceDatabaseConnectionEndToken implements ICodeToken {
/* (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 {
/*
* }
else
{
iReturnCode = ERR_SYS_BUSI_GET_CONTEXT_FAIL;
@error_no = ERR_SYS_BUSI_GET_CONTEXT_FAIL;
hs_strcpy(@error_info, "ϵͳæ(�����Ļ�ȡʧ��)");
@error_id = lpConn->getErrNo();
sprintf(@error_sysinfo,"%s", lpConn->getErrInfo());
goto svr_end;
}
}
else
{
iReturnCode = ERR_SYS_BUSI_GET_DBCONN_FAIL;
@error_no = ERR_SYS_BUSI_GET_DBCONN_FAIL;
sprintf(@error_info, "ϵͳæ(���ݿ�����[%s]����ȡ).", [���ݿ�������]);
@error_id = ERR_SYS_BUSI_GET_DBCONN_FAIL;
goto svr_end;
}
*/
StringBuffer sb = new StringBuffer();
ISkeletonAttributeHelper helper = (ISkeletonAttributeHelper)context.get(IAtomEngineContextConstantMySQL.SKELETON_ATTRIBUTE_HELPER);
Set<String> databaseMacroList = helper.getAttribute(IAtomEngineContextConstantMySQL.ATTR_DATABASE_MACRO);
Set<String> procMacroList = helper.getAttribute(IAtomEngineContextConstantMySQL.ATTR_PROC_MACRO);
Set<String> funcCallList = helper.getAttribute(IAtomEngineContextConstantMySQL.ATTR_FUNC_CALL);
Set<String> rsprocedureCallList = helper.getAttribute(IAtomEngineContextConstantMySQL.ATTR_PROCEDURE_CALL_RSRETURN);
Set<String> nrsprocedureCallList = helper.getAttribute(IAtomEngineContextConstantMySQL.ATTR_PROCEDURE_CALL_RSRETURN);
//���ݿ�꣬proc�꣬AF���ã�AP���ö�Ҫʹ�����ݿ�����
if ((databaseMacroList.size() > 0) || (procMacroList.size() > 0) || (funcCallList.size() > 0) || (rsprocedureCallList.size() > 0) || (nrsprocedureCallList.size() > 0)) {
Object obj = context.get(IAtomEngineContextConstantMySQL.ResourceModel);
String database = "";
AtomService as = null;
boolean flagR = false;
if (obj != null) {
try{
as = (AtomService) obj;
IARESProject project = (IARESProject)context.get(IAtomEngineContextConstantMySQL.Aresproject);
database = AtomFunctionCompilerUtil.getAtomDatabase(project, as.getDatabase(), as.getName(), IAtomRefType.ATOM_SERVICE ,as.getInterfaceFlag());
if (StringUtils.equalsIgnoreCase(as.getInterfaceFlag(), MarkConfig.MARK_IFLAG_R)) {
flagR = true;
}}
catch(Exception e){
e.printStackTrace();
}
}
if(StringUtils.isNotBlank(database)){//�������û��,���ô������ݿ�����
if (!flagR) {
/*if (procMacroList.size() > 0 || nrsprocedureCallList.size() > 0) {
sb.append("\r\n");
sb.append(" }\r\n"
+ " else\r\n"
+ " {\r\n"
+ " iReturnCode = ERR_SYS_BUSI_GET_CONTEXT_FAIL;\r\n"
+ " @error_no = ERR_SYS_BUSI_GET_CONTEXT_FAIL;\r\n"
+ " hs_strcpy(@error_info, \"ϵͳæ(�����Ļ�ȡʧ��)\");\r\n"
+ " @error_id = lpConn->getErrNo();\r\n"
+ " sprintf(@error_sysinfo,\"%s\", lpConn->getErrInfo());\r\n"
+ " goto svr_end;\r\n"
+ " }\r\n");
}*/
sb.append("\r\n");
sb.append("}\r\n"
+ "else\r\n"
+ "{\r\n"
+ " iReturnCode = ERR_SYS_BUSI_GET_DBCONN_FAIL;\r\n"
+ " @error_no = ERR_SYS_BUSI_GET_DBCONN_FAIL;\r\n"
+" sprintf(@error_info, \"ϵͳæ(���ݿ�����[%s]����ȡ).\", "+database+");\r\n"
+" @error_id = ERR_SYS_BUSI_GET_DBCONN_FAIL;\r\n"
+" goto svr_end;\r\n"
+"}\r\n");
}
}else if(!flagR && procMacroList.size() > 0){
ITokenListenerManager manager = (ITokenListenerManager)context.get(IEngineContextConstant.TOKEN_LISTENER_MANAGER);
String message = ": �����������ݿ�";
if (as != null) {
message = as.getFullyQualifiedName()+"."+IAtomResType.ATOM_SERVICE + message;
}
manager.fireEvent(new DefaultTokenEvent(ITokenConstant.EVENT_ENGINE_WARNNING,message));
}
}
return sb.toString();
}
}