package com.jianshui.common.validator;

/**
 * @Description
 * @Author 巩权林
 * @Date 2022-01-10 11:58
 **/

import com.jianshui.common.annotation.validate.EnumValue;
import com.jianshui.common.utils.DictUtils;
import com.jianshui.common.utils.StringUtils;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
 * 枚举校验注解处理类
 */
public class EnumValueValidator implements ConstraintValidator<EnumValue, Object> {

    private String[] strValues;
    private int[] intValues;
    private String dictType;

    @Override
    public void initialize(EnumValue constraintAnnotation) {
        strValues = constraintAnnotation.strValues();
        intValues = constraintAnnotation.intValues();
        dictType = constraintAnnotation.dictType();
    }

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext context) {
        // 如果是string
        if (value instanceof String) {

            if (strValues.length > 0) {
                for (String s : strValues) {
                    if (s.equals(value)) {
                        return true;
                    }
                }
            }

            if (StringUtils.isNotEmpty(dictType)) {
                String dictLabel =  DictUtils.getDictLabel(dictType, (String) value);
                if(StringUtils.isNotEmpty(dictLabel)){
                    return true;
                }
            }
        }

        // 如果是数字
        if (value instanceof Integer) {
            for (int s : intValues) {
                if (s == ((Integer) value).intValue()) {
                    return true;
                }
            }

            // if (StringUtils.isNotEmpty(dictType)) {
            //     String dictLabel =  DictUtils.getDictLabel(dictType, (String) value);
            //     if(StringUtils.isNotEmpty(dictLabel)){
            //         return true;
            //     }
            // }
        }
        return false;
    }
}