package com.hypixel.hytale.codec.validation; import com.hypixel.hytale.codec.validation.validator.ArraySizeRangeValidator; import com.hypixel.hytale.codec.validation.validator.ArraySizeValidator; import com.hypixel.hytale.codec.validation.validator.ArrayValidator; import com.hypixel.hytale.codec.validation.validator.DeprecatedValidator; import com.hypixel.hytale.codec.validation.validator.DoubleArraySizeValidator; import com.hypixel.hytale.codec.validation.validator.EqualValidator; import com.hypixel.hytale.codec.validation.validator.IntArraySizeValidator; import com.hypixel.hytale.codec.validation.validator.ListValidator; import com.hypixel.hytale.codec.validation.validator.NonEmptyArrayValidator; import com.hypixel.hytale.codec.validation.validator.NonEmptyDoubleArrayValidator; import com.hypixel.hytale.codec.validation.validator.NonEmptyFloatArrayValidator; import com.hypixel.hytale.codec.validation.validator.NonEmptyMapValidator; import com.hypixel.hytale.codec.validation.validator.NonEmptyStringValidator; import com.hypixel.hytale.codec.validation.validator.NonNullValidator; import com.hypixel.hytale.codec.validation.validator.NotEqualValidator; import com.hypixel.hytale.codec.validation.validator.OrValidator; import com.hypixel.hytale.codec.validation.validator.RangeValidator; import com.hypixel.hytale.codec.validation.validator.RequiredMapKeysValidator; import com.hypixel.hytale.codec.validation.validator.SequentialDoubleArrayValidator; import com.hypixel.hytale.codec.validation.validator.UniqueInArrayValidator; import java.util.List; import java.util.Map; import javax.annotation.Nonnull; public class Validators { @Nonnull public static DeprecatedValidator deprecated() { return (DeprecatedValidator)DeprecatedValidator.INSTANCE; } @Nonnull public static Validator nonNull() { return (Validator)NonNullValidator.INSTANCE; } @Nonnull public static ArrayValidator nonNullArrayElements() { return new ArrayValidator<>(nonNull()); } @Nonnull public static Validator nonEmptyString() { return NonEmptyStringValidator.INSTANCE; } @Nonnull public static Validator nonEmptyArray() { return (Validator)NonEmptyArrayValidator.INSTANCE; } @Nonnull public static Validator> nonEmptyMap() { return NonEmptyMapValidator.INSTANCE; } @Nonnull public static Validator uniqueInArray() { return (Validator)UniqueInArrayValidator.INSTANCE; } @Nonnull public static Validator> requiredMapKeysValidator(T[] array) { return new RequiredMapKeysValidator<>(array); } @Nonnull public static > Validator greaterThan(T greaterThan) { return new RangeValidator<>(greaterThan, null, false); } @Nonnull public static > Validator greaterThanOrEqual(T greaterThan) { return new RangeValidator<>(greaterThan, null, true); } @Nonnull public static > Validator lessThan(T lessThan) { return new RangeValidator<>(null, lessThan, false); } @Nonnull public static > Validator insideRange(T greaterthan, T lessThan) { return new RangeValidator<>(greaterthan, lessThan, false); } @Nonnull public static > Validator min(T min) { return new RangeValidator<>(min, null, true); } @Nonnull public static > Validator max(T max) { return new RangeValidator<>(null, max, true); } @Nonnull public static > Validator range(T min, T max) { return new RangeValidator<>(min, max, true); } @Nonnull public static Validator arraySizeRange(int min, int max) { return new ArraySizeRangeValidator<>(min, max); } @Nonnull public static Validator arraySize(int size) { return new ArraySizeValidator<>(size); } @Nonnull public static Validator intArraySize(int size) { return new IntArraySizeValidator(size); } @Nonnull public static Validator doubleArraySize(int size) { return new DoubleArraySizeValidator(size); } @Nonnull public static > Validator equal(@Nonnull T value) { return new EqualValidator<>(value); } @Nonnull public static > Validator notEqual(@Nonnull T value) { return new NotEqualValidator<>(value); } @Nonnull public static Validator nonEmptyDoubleArray() { return NonEmptyDoubleArrayValidator.INSTANCE; } @Nonnull public static Validator nonEmptyFloatArray() { return NonEmptyFloatArrayValidator.INSTANCE; } @Nonnull public static Validator monotonicSequentialDoubleArrayValidator() { return SequentialDoubleArrayValidator.NEQ_INSTANCE; } @Nonnull public static Validator weaklyMonotonicSequentialDoubleArrayValidator() { return SequentialDoubleArrayValidator.ALLOW_EQ_INSTANCE; } @Nonnull public static Validator or(Validator... validators) { return new OrValidator<>(validators); } @Nonnull public static Validator> listItem(Validator validator) { return new ListValidator<>(validator); } }