package net.northking.cctp.scriptcase.enums;

import net.northking.cctp.common.exception.PlatformError;

/**
 * 自定义异常信息
 *
 * @author chaoyi.zhang
 * @since 2021.10.14
 */
public enum ScriptCaseAppError implements PlatformError {
    // 使用方法，添加对应的枚举信息，只需要添加反馈到前台的信息即可
    FIRST(250000, "First"),
    DATA_NOT_EXIT("当前查询数据已不存在，请刷新使用"),
    DATA_NOT_EXIT1("当前业务组件已被删除"),

    //文件
    FILE_IS_NULL("文件不能为空!"),
    TABLE_HEADER_SIZE_ERROR("导入文件中的表头字段数跟前端界面显示的不一致!"),
    TABLE_HEADER_NAME_HAS_ERROR("导入文件中的表头字段名称跟前端界面显示的不一致！"),
    TABLE_HEADER_NAME_ERROR("导入文件中的表头字段第{0}列名称【{1}】跟前端界面字段【{2}】不一致!"),
    TABLE_CELL_DATA_ERROR("导入文件中测试轮次名的数据不能为空!"),
    TABLE_OVER_DATA_ERROR("导入文件中测试轮次名的数据不能重复!"),
    TABLE_DATA_LENGTH_ERROR("导入文件中测试轮次名的长度不能超过30个字符!"),
    TABLE_INPUT_SET_IS_NULL("输入项的表头为空，请添加输入项表头，再导入数据！"),
    TABLE_HEADER_HAS_VALUE("导入文件的第{0}列表头存在值【{1}】，请删除数据保存，再导入文件！"),
    FILE_UPLOAD_ERROR("文件上传失败，请检查文件服务器！"),
    FILE_GET_VARIABLES_ERROR("获取脚本中的变量异常！"),
    FILE_GET_TABLE_HEARER_ERROR("获取脚本中的表头异常！"),
    FILE_GET_TABLE_CONTENT_ERROR("获取脚本中的数据异常！"),
    READ_FILE_ERROR("读取原脚本文件失败"),

    //excel
    EXCEL_HEADER_IS_NULL("导入文件的第1列数据存在空值，请修改文件再导入！"),
    EXCEL_FILE_READ_ERROR("导入失败:当前Excel为无效文件！"),
    EXCEL_FISRT_SHEET_NULL("Excel文件中首个工作表为空！"),
    EXCEL_NAME_IS_NULL("Excel文件名称为空，导入失败！"),

    //业务组件树
    TREE_NAME_EXISTS("该节点名称已存在"),
    TREE_COM_EXISTS("该目录下存在数据，不允许删除"),
    TREE_ADD_EXISTS("该目录下存在数据，不允许新增"),
    TREE_NOT_LEAF_DELETE("非叶子节点不允许删除"),
    TREE_LEVEL_LIMIT("超过树节点层级上限10级"),
    TREE_COMPONENT_EXIT("树节点存在业务组件，不允许创建子节点"),
    TREE_NOT_EXIT("树节点不存在，请刷新重试"),

    //业务组件
    BUS_COM_NAME_EXIT("目录下已存在相同名称组件"),
    ADD_TREE_NOT_LEAF("非叶子节点无法添加业务组件"),
    BUS_COM_NAME_TOO_LONG("业务组件名称超长"),
    JSON_FILE_UPLOAD_FAILED("业务组件文件上传失败"),
    BUS_COM_FILE_UPDATE_FAILED("业务组件json文件上传覆盖失败"),
    BUS_COM_SHARED("业务组件已共享，不允许删除"),
    TICK_COM_IS_SHARE("已共享组件【{0}】无法重新共享"),
    BUS_COM_NAME_TOO_LONG_BATCH("克隆{0}条,其中{1}条克隆成功,其余组件因克隆后名称超长或者文件服务异常导致失败"),
    BUS_COM_ALL_SELF("未选择共享数据"),
    //业务组件库
    TICK_COM_NAME_REPEAT("您勾选了两个同样名称的组件【{0}】"),
    LIB_COM_NAME_EXIT("勾选的业务组件【{0}】当前目录下已存在"),
    LIB_TREE_NOT_LEAF("非叶子节点无法入库勾选业务组件，树目录重新选择"),
    LIB_COM_NAME_TOO_LONG("引用后的业务组件名称超长"),
    LIB_COM_NAME_TOO_LONG_BATCH("引用{0}条,其中{1}条引用成功,{2}等组件因引用后名称超长失败"),

    SCRIPT_NULL_ERROR("脚本id不能为空"),
    ENV_ID_NULL_ERROR("环境id不能为空"),
    SCRIPT_INPUT_SET_IS_NULL("脚本输入项为空，保存失败!"),
    PLAN_HAS_SCRIPT("该脚本在计划内存在关联，删除失败！"),
    SCRIPT_HAS_DATA_SET("脚本存在未删除的用例集，删除失败！"),
    SCRIPT_IN_SCENE("当前脚本被场景脚本引用，删除失败！"),
    SCRIPT_ENV_IS_NULL("当前系统未关联环境,新增输入项数据失败！"),
    PLAN_HAS_SCRIPT_LIST("所选的脚本在计划内存在关联，删除失败！"),
    SCRIPT_LIST_HAS_DATA_SET("所选的脚本存在未删除的用例集，删除失败！"),
    SCRIPT_LIST_IN_SCENE("所选的脚本被场景脚本引用，删除失败！"),

    DATA_SET_COLUMN_HAS_DATA("当前列在输入项内存在关联！"),

    CASE_DATA_SET_IS_NULL("用例集不存在，请重新发布脚本!"),
    CASE_DATA_SET_VERSION_IS_NULL("用例集版本为空，请重新发布脚本!"),
    CASE_DATA_SET_VERSION_UPDATE("用例集版本发生变动，保存失败!"),
    CASE_DATA_SET_HAS_PLAN("该用例集在计划内存在关联，删除失败！"),
    CASE_DATA_SET_IS_DELETE("用例集已被删除，拉取数据失败！"),

    PLAN_NULL_ERROR("计划id不能为空"),

    //编号获取
    ATU_BUSINESS_NO_GET_ERROR("获取编号失败"),

    //用例集异常
    CASE_SET_IS_NULL("用例集中的用例不能为零"),

    //导入输入项异常
    IMPORT_INPUT_SET_NULL("导入数据异常，第{0}行第{1}列数据为空!"),
    IMPORT_INPUT_SET_TOO_LONG("导入数据异常，第{0}行列【{1}】字符长度大于30位!"),

    //导入脚本输入项异常
    IMPORT_SHEET_NULL("导入文件里面的sheet页为空"),
    IMPORT_SCRIPT_INPUT_SET_NULL("导入文件中测试轮次名第{0}行为空,校验不通过!"),
    IMPORT_SCRIPT_INPUT_SET_TOO_LONG("导入文件中测试轮次名字符长度不能超过30,第{0}行测试轮次名字符长度为{1},超出限制!"),
    IMPORT_SCRIPT_INPUT_SET_SAME("导入文件中的测试轮次名存在重复数据,第{0}行的测试轮次名在文件中重复！"),

    //日志
    HIGH_RISK_SEND("高危通知失效,无法记录日志，删除回滚"),

    PARSE_DATE_ERROR("格式化日期出错，请检查参数"),

    IT_IS_INVALID_QUOTE_DATA("不是合法的引用数据格式"),
    PROJECT_ID_NOT_EXIST("系统Id不能为空"),

    SCENE_FILE_IS_NULL("场景脚本文件内容为空"),
    SCENE_DATA_CHANGE_ERROR("场景脚本对象转换失败"),

    APP_UPLOAD_NAME_ERR("上传失败，上传的包名称与当前包名称不一致!"),
    APP_UPLOAD_PLATFORM_ERR("上传失败，上传的包平台与当前包平台不一致!"),
    APP_HAS_SAME_VERSION("该应用已存在相同版本，请检查"),
    APP_DEL_ERR("APP删除失败"),

    HAP_ERR("hap解析失败"),
    APK_READ_ERR("解析apk失败"),
    APP_IS_DEL("当前app已经删除，请刷新"),

    SCRIPT_IS_DEL("当前脚本已被删除！"),
    SCRIPT_FILE_JSON_ERR("请检查脚本的json文件是否格式正确"),
    SCRIPT_PRO_HAS_EXIST("该系统下《{0}》脚本已经存在"),

    DEL_SCRIPT_ID_NULL("请选择待删除脚本"),
    SCRIPT_VERSION_NOT_EXIST("所选脚本不存在，请刷新列表确认"),

    MOVE_SCRIPT_ID_NULL("请选择待移动脚本"),
    MOVE_SCRIPT_NOT_EXIST("移动的脚本不存在，请刷新列表确认"),

    COPY_SCRIPT_ID_NULL("请选择待复制脚本"),
    COPY_SCRIPT_NOT_EXIST("复制的脚本不存在，请刷新列表确认"),
    COPY_SCRIPT_NAME_TOO_LONG("克隆后脚本名称为：{0},长度超过30,克隆失败"),

    RELOAD_VERSION_NOT_EXIST("所选回滚版本不存在！"),
    VERSION_NOT_EXIST("所选版本不存在！"),

    SCRIPT_TREE_NOT_EXIST("脚本目录不存在！"),
    SCRIPT_NODE_NOT_LEAF("脚本目录非叶子结点，请重新选择"),

    SYSTEM_NUM_IS_NULL("系统编号为空，创建脚本编号失败！"),

    DATA_REGEX_ERR("新增失败，变量名称输入不合法，只能输入字母、数字、下划线且不能以数字开头！"),
    DATA_HAS_SAME("新增失败，变量名已存在！"),

    EXPORT_ERR("导出异常"),
    TEXT_IS_NULL("Text不能为空"),

    SCENE_IS_PRESENT("场景脚本对象缺少开始节点"),
    SCENE_NEED_NEXT_LINE("场景脚本开始节点缺少连接下一节点连接线"),
    SCENE_NEED_NEXT_NODE("场景脚本开始节点缺少连接下一节点"),

    SCENE_VERSION_NULL("场景脚本[{0}]首节点的脚本[{1}]版本信息不存在"),
    SCENE_NODE_NOT_EXIST("场景脚本不存在节点({0})"),


    // 模块三
    LAST(259999, "Last");
    private static final int START_CODE = 220000;

    private final Integer code;
    private final String msg;

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

    ScriptCaseAppError(String msg) {
        this.code = ordinal() + START_CODE;
        this.msg = msg;
    }

    @Override
    public Integer getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }
}
