All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy