/**
* <p>Copyright: Copyright (c) 2013</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.procedure.compiler.oracle.token;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.engin.token.ICodeToken;
import com.hundsun.ares.studio.jres.model.database.oracle.TableSpace;
import com.hundsun.ares.studio.jres.model.database.oracle.util.OracleDataBaseUtil;
import com.hundsun.ares.studio.procdure.Procedure;
import com.hundsun.ares.studio.procedure.compiler.oracle.constant.IProcedureEngineContextConstantOracle;
/**
* @author qinyuan
*
*/
public class ProcedureCreateToken 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() {
return CODE_TEXT;
}
/* (non-Javadoc)
* @see com.hundsun.ares.studio.engin.token.ICodeToken#genCode(java.util.Map)
*/
@Override
public String genCode(Map<Object, Object> context) throws Exception {
Procedure procedure = (Procedure)context.get(IProcedureEngineContextConstantOracle.ResourceModel);
IARESProject project = (IARESProject)context.get(IProcedureEngineContextConstantOracle.Aresproject);
//�������������Ӧ���ݿ��û�����Ϊ�գ���Ҫ�����û���
StringBuffer functionNameBuffer = new StringBuffer();
String dbName = procedure.getDatabase();
// �������ݿ�����ȡ���ݿ��û���
TableSpace tableSpace = OracleDataBaseUtil.getTableSpaceByName(project, dbName);
if(null != tableSpace) {
String user = tableSpace.getUser();
if(StringUtils.isNotBlank(user)){//�û���Ϊ��
functionNameBuffer.append(user.trim());
functionNameBuffer.append(".");
}
}
//2014��5��13��13:47:37 ֤ȯ������Ҫʹ�ù������ƣ���ԭ�����������߱���һ�£����Թ�������ֻ��֤ȯ������չ����չʾ
if(StringUtils.isNotBlank(procedure.getProcName())){
functionNameBuffer.append(procedure.getProcName().trim());
}else {//��������£���������Ϊ��
functionNameBuffer.append(procedure.getName().trim());
}
//����������������ڣ�����Ҫ����
int inputParamNum = procedure.getInputParameters().size();//�����������
int outputParamNum = procedure.getOutputParameters().size();//�����������
if(inputParamNum <= 0 && outputParamNum <= 0 && !procedure.isOutputCollection()){//���������Ҫ�����α�
if(StringUtils.equalsIgnoreCase(procedure.getBizType(), IProcedureEngineContextConstantOracle.procedure)){
return String.format(procedure_create_info, functionNameBuffer.toString());
}else {
return String.format(function_create_info, functionNameBuffer.toString());
}
}else {
if(StringUtils.equalsIgnoreCase(procedure.getBizType(), IProcedureEngineContextConstantOracle.procedure)){
return String.format(procedure_create_info, functionNameBuffer.toString())+ "(" + NEWLINE;
}else {
return String.format(function_create_info, functionNameBuffer.toString())+ "(" + NEWLINE;
}
}
}
private static final String function_create_info =
//"�����Oracle�洢�������档" + NEWLINE +
"prompt create function '%1$s' ..." + NEWLINE +
"create or replace function %1$s" + NEWLINE ;
//�������ͣ�֤ȯ������չʹ��
private static final String procedure_create_info =
"prompt create procedure '%1$s' ..." + NEWLINE +
"create or replace procedure %1$s" + NEWLINE ;
}