All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.houbb.valid.jsr.util.JsrSupportClassUtil Maven / Gradle / Ivy

package com.github.houbb.valid.jsr.util;

import com.github.houbb.heaven.util.guava.Guavas;

import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;

/**
 * 支持的数据类型
 * (1)为了不让这个类被外部使用,暂时放在这里。
 *
 * @author binbin.hou
 * @since 0.0.3
 */
public final class JsrSupportClassUtil {

    private JsrSupportClassUtil(){}

    /**
     * 支持的类型列表
     * @since 0.0.3
     */
    private static final List DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST;

    /**
     * 时间过去未来支持的类型列表
     * @since 0.0.3
     */
    private static final List PAST_FUTURE_SUPPORT_CLASS_LIST;

    /**
     * 位数类型列表
     * @since 0.0.3
     */
    private static final List DIGITS_SUPPORT_CLASS_LIST;

    /**
     * SIZE 支持类型列表
     * @since 0.0.3
     */
    private static final List SIZE_SUPPORT_CLASS_LIST;

    /**
     * TRUE/FALSE 支持类型列表
     * @since 0.0.3
     */
    private static final List ASSERT_TRUE_FALSE_SUPPORT_CLASS_LIST;

    static {
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST = Guavas.newArrayList(11);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(CharSequence.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(BigDecimal.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(BigInteger.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(int.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(Integer.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(short.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(Short.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(long.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(Long.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(byte.class);
        DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST.add(Byte.class);

        PAST_FUTURE_SUPPORT_CLASS_LIST = Guavas.newArrayList(2);
        PAST_FUTURE_SUPPORT_CLASS_LIST.add(Date.class);
        PAST_FUTURE_SUPPORT_CLASS_LIST.add(Calendar.class);

        DIGITS_SUPPORT_CLASS_LIST = Guavas.newArrayList(11);
        DIGITS_SUPPORT_CLASS_LIST.add(CharSequence.class);
        DIGITS_SUPPORT_CLASS_LIST.add(BigDecimal.class);
        DIGITS_SUPPORT_CLASS_LIST.add(BigInteger.class);
        DIGITS_SUPPORT_CLASS_LIST.add(int.class);
        DIGITS_SUPPORT_CLASS_LIST.add(Integer.class);
        DIGITS_SUPPORT_CLASS_LIST.add(short.class);
        DIGITS_SUPPORT_CLASS_LIST.add(Short.class);
        DIGITS_SUPPORT_CLASS_LIST.add(long.class);
        DIGITS_SUPPORT_CLASS_LIST.add(Long.class);
        DIGITS_SUPPORT_CLASS_LIST.add(byte.class);
        DIGITS_SUPPORT_CLASS_LIST.add(Byte.class);

        SIZE_SUPPORT_CLASS_LIST = Guavas.newArrayList(4);
        SIZE_SUPPORT_CLASS_LIST.add(CharSequence.class);
        SIZE_SUPPORT_CLASS_LIST.add(Collection.class);
        SIZE_SUPPORT_CLASS_LIST.add(Map.class);
        SIZE_SUPPORT_CLASS_LIST.add(Array.class);

        ASSERT_TRUE_FALSE_SUPPORT_CLASS_LIST = Guavas.newArrayList(2);
        ASSERT_TRUE_FALSE_SUPPORT_CLASS_LIST.add(boolean.class);
        ASSERT_TRUE_FALSE_SUPPORT_CLASS_LIST.add(Boolean.class);
    }

    /**
     * 获取 {@link javax.validation.constraints.DecimalMin} 和 {@link javax.validation.constraints.DecimalMax}
     * 支持的数据类型列表
     * @return 列表信息
     * @since 0.0.3
     */
    public static List getDecimalMaxMinSupportClassList() {
        return DECIMAL_MAX_MIN_SUPPORT_CLASS_LIST;
    }

    /**
     * 获取 {@link javax.validation.constraints.Future} 和 {@link javax.validation.constraints.Past}
     * 支持的数据类型列表
     * @return 列表信息
     * @since 0.0.3
     */
    public static List getPastFutureSupportClassList() {
        return PAST_FUTURE_SUPPORT_CLASS_LIST;
    }

    /**
     * 获取 {@link javax.validation.constraints.Digits} 支持的数据类型
     * @return 列表信息
     * @since 0.0.3
     */
    public static List getDigitsSupportClassList() {
        return DIGITS_SUPPORT_CLASS_LIST;
    }

    /**
     * 获取 {@link javax.validation.constraints.Size} 支持的数据类型
     * @return 列表信息
     * @since 0.0.3
     */
    public static List getSizeSupportClassList() {
        return SIZE_SUPPORT_CLASS_LIST;
    }

    /**
     * 获取 {@link javax.validation.constraints.AssertFalse} 支持的数据类型
     * 获取 {@link javax.validation.constraints.AssertTrue} 支持的数据类型
     * @return 列表信息
     * @since 0.0.3
     */
    public static List getAssertTrueFalseSupportClassList() {
        return ASSERT_TRUE_FALSE_SUPPORT_CLASS_LIST;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy