com.dahua.eco.base.spring.errorcode.ErrorI18nHelper Maven / Gradle / Ivy
package com.dahua.eco.base.spring.errorcode;
import com.dahua.eco.base.core.code.IErrorCode;
import com.dahua.eco.base.core.exception.ExceptionFactory;
import com.dahua.eco.base.spring.AppContextHelper;
import com.dahua.eco.base.spring.context.BusinessContext;
import com.dahua.eco.base.spring.i18n.DahuaResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
public class ErrorI18nHelper {
private static Logger logger = LoggerFactory.getLogger(ErrorI18nHelper.class);
private static final String RESOURCE_ERROR_KEY_PREFIX = "error_";
/**
* 根据错误码获取相应的国际化错误描述信息
*
* @param errorCode 错误码(6位格式,不包含2位子系统编码)
* @param args 用于国际化转换时的占位符参数
* @return
*/
public static String getErrorI18nMessage(String errorCode, Object... args) {
if (StringUtils.isEmpty(errorCode)) {
return ExceptionFactory.DEFAULT_ERROR_MESSAGE;
}
String errorCodeKey = getErrorCodeI18nKey(errorCode);
String errorMessage = "";
try {
DahuaResource dahuaResource = AppContextHelper.getBean(DahuaResource.class);
if (dahuaResource != null) {
errorMessage = dahuaResource.getLocalMessage(errorCodeKey, args);
} else {
return ExceptionFactory.DEFAULT_ERROR_MESSAGE;
}
} catch (Exception e) {
logger.error("failed to get i18n resource of error-code: key = " + errorCodeKey, e);
}
return errorMessage;
}
/**
* 根据错误码枚举对象获取相应的国际化错误描述信息
*
* @param errorCodeEnum 错误码枚举对象
* @param args 用于国际化转换时的占位符参数
* @return
*/
public static String getErrorI18nMessage(IErrorCode errorCodeEnum, Object... args) {
if (errorCodeEnum == null || StringUtils.isEmpty(errorCodeEnum.getSubCode())) {
return ExceptionFactory.DEFAULT_ERROR_MESSAGE;
}
String errorCodeKey = getErrorCodeI18nKey(errorCodeEnum);
String errorMessage = "";
try {
DahuaResource dahuaResource = AppContextHelper.getBean(DahuaResource.class);
if (dahuaResource != null) {
errorMessage = dahuaResource.getLocalMessage(errorCodeKey, args);
} else {
return ExceptionFactory.DEFAULT_ERROR_MESSAGE;
}
} catch (Exception e) {
logger.error("failed to get i18n resource of error-code: key = " + errorCodeKey, e);
}
return errorMessage;
}
/**
* 根据平台内错误码,生成完整的国际化资源key
*
* @param errorCode
* @return
*/
public static String getErrorCodeI18nKey(String errorCode) {
return RESOURCE_ERROR_KEY_PREFIX + BusinessContext.getInstance().getSystemCode() + errorCode;
}
/**
* 根据平台内错误码,生成完整的国际化资源key
*
* @param errorCodeEnum
* @return
*/
public static String getErrorCodeI18nKey(IErrorCode errorCodeEnum) {
return RESOURCE_ERROR_KEY_PREFIX + errorCodeEnum.getCode();
}
}