com.dahua.eco.base.spring.errorcode.ErrorCodeHelper Maven / Gradle / Ivy
package com.dahua.eco.base.spring.errorcode;
import com.dahua.eco.base.core.code.IErrorCode;
import com.dahua.eco.base.spring.context.BusinessContext;
import org.springframework.util.StringUtils;
public class ErrorCodeHelper {
/**
* 获取完整错误码(8位)
*
* @param errorCode 错误码枚举对象
* @return
*/
public static String getCompleteCode(IErrorCode errorCode) {
if (errorCode == null) {
return "";
}
// 如果传入的错误码的位数不是 6位(不合规错误码),则默认不做任何处理,直接返回
if (errorCode.getSubCode().length() != IErrorCode.ERROR_CODE_SUB_LENGTH) {
return errorCode.getSubCode();
}
if (errorCode.isInnerError()) {
return BusinessContext.SYSTEMCODE_COMMON + errorCode.getSubCode();
} else {
return BusinessContext.getInstance().getSystemCode() + errorCode.getSubCode();
}
}
/**
* 获取完整错误码(8位),针业务系统错误码,框架内部错误码该方法不适用
*
* @param errorCode 错误码
* @return
*/
public static String getCompleteCode(String errorCode) {
if (errorCode == null) {
return "";
}
// 如果传入的错误码的位数不是 6位(不合规错误码),则默认不做任何处理,直接返回
if (errorCode.length() != IErrorCode.ERROR_CODE_SUB_LENGTH) {
return errorCode;
}
return BusinessContext.getInstance().getSystemCode() + errorCode;
}
/**
* 根据错误编码获取错误码枚举对象
*
* @param code 6位错误码
* @return
*/
@SuppressWarnings("unchecked")
public static T getByCode(String code, Class clazz) {
if (StringUtils.isEmpty(code)) {
return null;
}
IErrorCode[] errorCodes = clazz.getEnumConstants();
for (IErrorCode errorCode : errorCodes) {
if (errorCode.getSubCode().equals(code)) {
return (T)errorCode;
}
}
return null;
}
}