package jnpf.enums.cultivate;

import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

/**
 * 鉴定项异常状态枚举
 *
 * @author system
 */
@Getter
public enum IdentifyItemExceptionEnum {
    /**
     * 正常状态
     */
    NORMAL(0, "正常"),
    /**
     * 修改异常状态
     */
    MODIFY_EXCEPTION(1, "修改异常"),
    /**
     * 删除异常状态
     */
    DELETE_EXCEPTION(2, "删除异常");

    private final Integer code;
    private final String msg;

    /**
     * 用于快速查找的Map缓存
     */
    private static final Map<Integer, IdentifyItemExceptionEnum> CODE_MAP = new HashMap<>();

    static {
        for (IdentifyItemExceptionEnum item : values()) {
            CODE_MAP.put(item.getCode(), item);
        }
    }

    IdentifyItemExceptionEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 根据code获取对应的msg
     *
     * @param code 状态码
     * @return 状态描述,未找到返回null
     */
    public static String getMsgByCode(Integer code) {
        if (code == null) {
            return null;
        }
        IdentifyItemExceptionEnum enumItem = CODE_MAP.get(code);
        return enumItem != null ? enumItem.getMsg() : null;
    }

    /**
     * 根据code获取对应的枚举对象
     *
     * @param code 状态码
     * @return 枚举对象,未找到返回null
     */
    public static IdentifyItemExceptionEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        return CODE_MAP.get(code);
    }

    /**
     * 判断code是否为有效值
     *
     * @param code 状态码
     * @return true-有效,false-无效
     */
    public static boolean isValid(Integer code) {
        return code != null && CODE_MAP.containsKey(code);
    }

    @Override
    public String toString() {
        return "IdentifyItemExceptionEnum{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                '}';
    }
}
