package com.miya.print;

/**
 * 打印枚举类
 *
 * @author pupu
 */
public enum PrinterStatusEnum {

    /**
     * 操作成功
     */
    CODE_SUCCESS(0, "操作成功"),

    /**
     * 未知状态
     */
    CODE_UNKOWN(-2, "未知状态"),

    /**
     * 操作失败
     */
    CODE_FAILED(-1, "操作失败"),

    /**
     * 打印机未连接或未上电
     */
    CODE_NOT_CONNECTED(1, "打印机未连接或未上电"),

    /**
     * 打印机和调用库不匹配
     */
    CODE_NOT_MATCHED(2, "打印机和调用库不匹配"),

    /**
     * 打印头打开
     */
    CODE_PRINT_HEAD_OPENED(3, "打印头打开"),

    /**
     * 切刀未复位
     */
    CODE_KNIFE_ERROR(4, "切刀未复位"),

    /**
     * 打印头过热
     */
    CODE_PRINT_HEAD_HOT(5, "打印头过热"),

    /**
     * 黑标错误
     */
    CODE_BLACK_ERROR(6, "黑标错误"),

    /**
     * 纸尽
     */
    CODE_NO_PAPER(7, "纸尽"),

    /**
     * 纸将尽
     */
    CODE_FEW_PAPER(8, "纸将尽");

    /**
     * 状态码
     */
    int status;

    /**
     * 描述
     */
    String desc;

    public int getStatus() {
        return status;
    }

    public String getDesc() {
        return desc;
    }

    PrinterStatusEnum(int status, String desc) {
        this.status = status;
        this.desc = desc;
    }

    /**
     * 根据状态码查找对应的枚举
     *
     * @param status 状态码
     * @return 找到了就返回对应的枚举，没找到就返回CODE_FAILED(-1, "操作失败")
     */
    public static PrinterStatusEnum find(int status) {
        for (PrinterStatusEnum statusEnum : PrinterStatusEnum.values()) {
            if (statusEnum.status == status) {
                return statusEnum;
            }
        }
        return CODE_FAILED;
    }
}
