
com.github.dakusui.valid8j_pcond.forms.Predicates Maven / Gradle / Ivy
The newest version!
package com.github.dakusui.valid8j_pcond.forms;
import com.github.dakusui.valid8j_pcond.core.printable.PrintablePredicateFactory;
import com.github.dakusui.valid8j_pcond.core.printable.PrintablePredicateFactory.Leaf;
import com.github.dakusui.valid8j_pcond.core.printable.PrintablePredicateFactory.ParameterizedLeafFactory;
import com.github.dakusui.valid8j_pcond.core.refl.MethodQuery;
import com.github.dakusui.valid8j_pcond.core.refl.Parameter;
import com.github.dakusui.valid8j_pcond.internals.InternalChecks;
import java.util.Collection;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Stream;
import static com.github.dakusui.valid8j_pcond.core.refl.ReflUtils.invokeMethod;
import static com.github.dakusui.valid8j_pcond.forms.Printables.function;
import static com.github.dakusui.valid8j_pcond.forms.Printables.predicate;
import static com.github.dakusui.valid8j_pcond.internals.InternalUtils.formatObject;
import static java.lang.String.format;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static java.util.Objects.requireNonNull;
/**
* An entry point for acquiring predicate objects.
* Predicates retrieved by methods in this class are all "printable".
*/
public class Predicates {
private Predicates() {
}
public static Predicate alwaysTrue() {
return Leaf.ALWAYS_TRUE.instance();
}
public static Predicate isTrue() {
return Leaf.IS_TRUE.instance();
}
public static Predicate isFalse() {
return Leaf.IS_FALSE.instance();
}
public static Predicate isNull() {
return Leaf.IS_NULL.instance();
}
public static Predicate isNotNull() {
return Leaf.IS_NOT_NULL.instance();
}
public static Predicate isEqualTo(T value) {
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.IS_EQUAL_TO, singletonList(value));
}
public static Predicate isSameReferenceAs(T value) {
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.OBJECT_IS_SAME_AS, singletonList(value));
}
@SuppressWarnings({"unchecked", "RedundantClassCall"})
public static Function, Predicate> isInstanceOf() {
return Function.class.cast(Def.IS_INSTANCE_OF$2);
}
public static Predicate super T> isInstanceOf(Class> value) {
return applyOnceExpectingPredicate(requireNonNull(value), isInstanceOf());
}
private static Predicate applyOnceExpectingPredicate(T value, Function> p) {
return predicate(() -> format("%s[%s]", p, formatObject(value)), p.apply(value));
}
public static > Predicate gt(T value) {
return greaterThan(value);
}
public static > Predicate greaterThan(T value) {
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.GREATER_THAN, singletonList(value));
}
public static > Predicate ge(T value) {
return greaterThanOrEqualTo(value);
}
public static > Predicate greaterThanOrEqualTo(T value) {
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.GREATER_THAN_OR_EQUAL_TO, singletonList(value));
}
public static > Predicate lt(T value) {
return lessThan(value);
}
public static > Predicate lessThan(T value) {
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.LESS_THAN, singletonList(value));
}
public static > Predicate le(T value) {
return lessThanOrEqualTo(value);
}
public static > Predicate lessThanOrEqualTo(T value) {
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.LESS_THAN_OR_EQUAL_TO, singletonList(value));
}
public static > Predicate eq(T value) {
return equalTo(value);
}
public static > Predicate equalTo(T value) {
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.EQUAL_TO, singletonList(value));
}
public static Predicate matchesRegex(String regex) {
requireNonNull(regex);
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.MATCHES_REGEX, singletonList(regex));
}
public static Predicate containsString(String string) {
requireNonNull(string);
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.CONTAINS_STRING, singletonList(string));
}
public static Predicate startsWith(String string) {
requireNonNull(string);
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.STARTS_WITH, singletonList(string));
}
public static Predicate endsWith(String string) {
requireNonNull(string);
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.ENDS_WITH, singletonList(string));
}
public static Predicate equalsIgnoreCase(String string) {
requireNonNull(string);
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.EQUALS_IGNORE_CASE, singletonList(string));
}
public static Predicate isEmptyString() {
return Leaf.IS_EMPTY_STRING.instance();
}
public static Predicate isNullOrEmptyString() {
return Leaf.IS_NULL_OR_EMPTY_STRING.instance();
}
public static Predicate> contains(Object entry) {
return ParameterizedLeafFactory.create(ParameterizedLeafFactory.CONTAINS, singletonList(entry));
}
public static Predicate
© 2015 - 2025 Weber Informatics LLC | Privacy Policy