diff --git a/src/main/java/xyz/zhouxy/plusone/validator/BaseValidator.java b/src/main/java/xyz/zhouxy/plusone/validator/BaseValidator.java index 336a1e1..7262d8c 100644 --- a/src/main/java/xyz/zhouxy/plusone/validator/BaseValidator.java +++ b/src/main/java/xyz/zhouxy/plusone/validator/BaseValidator.java @@ -57,6 +57,12 @@ public abstract class BaseValidator { return validator; } + protected final LongValidator ruleForLong(Function getter) { + LongValidator validator = new LongValidator<>(getter); + this.rules.add(validator::validate); + return validator; + } + protected final DoubleValidator ruleForDouble(Function getter) { DoubleValidator validator = new DoubleValidator<>(getter); this.rules.add(validator::validate); diff --git a/src/main/java/xyz/zhouxy/plusone/validator/LongValidator.java b/src/main/java/xyz/zhouxy/plusone/validator/LongValidator.java new file mode 100644 index 0000000..ca6ff7a --- /dev/null +++ b/src/main/java/xyz/zhouxy/plusone/validator/LongValidator.java @@ -0,0 +1,35 @@ +package xyz.zhouxy.plusone.validator; + +import java.util.function.Function; +import java.util.function.Supplier; + +public class LongValidator extends BasePropertyValidator> { + + LongValidator(Function getter) { + super(getter); + } + + public LongValidator between(long min, long max) { + return between(min, max, String.format("数值不在 %d 和 %d 之间", min, max)); + } + + public LongValidator between(long min, long max, String errMsg) { + return between(min, max, convertExceptionCreator(errMsg)); + } + + public LongValidator between(long min, long max, + Supplier exceptionCreator) { + return between(min, max, convertExceptionCreator(exceptionCreator)); + } + + public LongValidator between(long min, long max, + Function exceptionCreator) { + withRule(value -> (value >= min && value < max), exceptionCreator); + return this; + } + + @Override + protected LongValidator thisObject() { + return this; + } +} diff --git a/src/main/java/xyz/zhouxy/plusone/validator/MapValidator.java b/src/main/java/xyz/zhouxy/plusone/validator/MapValidator.java index f6161e2..f86ea7c 100644 --- a/src/main/java/xyz/zhouxy/plusone/validator/MapValidator.java +++ b/src/main/java/xyz/zhouxy/plusone/validator/MapValidator.java @@ -51,6 +51,10 @@ public abstract class MapValidator extends BaseValidator> { return ruleForInt(m -> (Integer) m.get(key)); } + protected final LongValidator> ruleForLong(K key) { + return ruleForLong(m -> (Long) m.get(key)); + } + protected final DoubleValidator> ruleForDouble(K key) { return ruleForDouble(m -> (Double) m.get(key)); }