package com.aicheck.model;

/**
 * 目标模型类后缀类型，决定通知模版中展示哪些影响段落。
 */
public enum ClassType {
    DTO("Dto"),
    VO("Vo"),
    ENTITY("Entity"),
    MODEL("Model");

    private final String label;

    ClassType(String label) {
        this.label = label;
    }

    /** 通知中展示的类型标签 */
    public String getLabel() {
        return label;
    }

    /** 根据简单类名后缀识别类型，不匹配则 null */
    public static ClassType fromClassName(String className) {
        if (className.endsWith("Dto")) {
            return DTO;
        }
        if (className.endsWith("VO")) {
            return VO;
        }
        if (className.endsWith("Vo")) {
            return VO;
        }
        if (className.endsWith("Entity")) {
            return ENTITY;
        }
        if (className.endsWith("Model")) {
            return MODEL;
        }
        return null;
    }

    /** 判断类名是否属于当前类型 */
    public boolean isTargetSuffix(String className) {
        return fromClassName(className) == this;
    }
}
