/**
*
*/
package com.hundsun.ares.studio.usermacro.compiler.handlers;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.hundsun.ares.studio.jres.metadata.constant.IMetadataRefType;
import com.hundsun.ares.studio.jres.model.metadata.ErrorNoItem;
import com.hundsun.ares.studio.model.reference.ReferenceInfo;
import com.hundsun.ares.studio.reference.ReferenceManager;
/**
* S��ǵĴ���
* ��S��Ǵ������Ϣ��ƴ���ϲ���
*
* @author yanwj06282
*
*/
public class FlagSHelper implements IUserMacroFlagHelper {
@Override
public String genFlag(UserMacroToken token ,Map<Object, Object> context ,String content) {
//ȡ�î��������±�λ�����磺<S>%1$s������Ҫȡ������ġ�1������ʾ��ǰ�ı����ǵ�һλ
int index = Integer.parseInt(StringUtils.substring(content, StringUtils.indexOfIgnoreCase(content, "<S>")+4, StringUtils.indexOfIgnoreCase(content, "<S>")+5));
int paramsSize = token.getUmParams().length;
if (paramsSize > 1) {
String errorCons = token.getUmParams()[paramsSize - 2];
ReferenceInfo info = ReferenceManager.getInstance().getFirstReferenceInfo(token.getProject(), IMetadataRefType.ErrNo, errorCons, true);
if (info != null && info.getObject() != null) {
ErrorNoItem noItem = (ErrorNoItem) info.getObject();
if (noItem != null) {
token.getUmParams()[paramsSize - 1] = noItem.getMessage();
}
}
}
if(index<=token.getUmParams().length){
String errorName = token.getUmParams()[index-1];
if (!StringUtils.startsWith(errorName, "\"")) {
errorName = "\"" + errorName;
}
if (!StringUtils.endsWith(errorName, "\"")) {
errorName = errorName + "\"";
}
token.getUmParams()[index-1] = errorName;
}else{
throw new RuntimeException("�Զ���꣺["+token.getItem().getName()+"] ,������Ϣ��ƥ��!");
}
content = content.substring(0, StringUtils.indexOfIgnoreCase(content, "<S>")) + content.substring(StringUtils.indexOfIgnoreCase(content, "<S>")+3, content.length());
return content;
}
}