1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql.where.condition;
17
18 import java.util.NoSuchElementException;
19 import java.util.function.Function;
20 import java.util.function.Predicate;
21
22 import org.jspecify.annotations.NonNull;
23 import org.jspecify.annotations.Nullable;
24 import org.mybatis.dynamic.sql.AbstractSingleValueCondition;
25
26 public class IsGreaterThanOrEqualToWhenPresent<T> extends AbstractSingleValueCondition<T>
27 implements AbstractSingleValueCondition.Filterable<T>, AbstractSingleValueCondition.Mappable<T> {
28 private static final IsGreaterThanOrEqualToWhenPresent<?> EMPTY =
29 new IsGreaterThanOrEqualToWhenPresent<Object>(-1) {
30 @Override
31 public Object value() {
32 throw new NoSuchElementException("No value present");
33 }
34
35 @Override
36 public boolean isEmpty() {
37 return true;
38 }
39 };
40
41 public static <T> IsGreaterThanOrEqualToWhenPresent<T> empty() {
42 @SuppressWarnings("unchecked")
43 IsGreaterThanOrEqualToWhenPresent<T> t = (IsGreaterThanOrEqualToWhenPresent<T>) EMPTY;
44 return t;
45 }
46
47 protected IsGreaterThanOrEqualToWhenPresent(T value) {
48 super(value);
49 }
50
51 @Override
52 public String operator() {
53 return ">=";
54 }
55
56 public static <T> IsGreaterThanOrEqualToWhenPresent<T> of(@Nullable T value) {
57 if (value == null) {
58 return empty();
59 } else {
60 return new IsGreaterThanOrEqualToWhenPresent<>(value);
61 }
62 }
63
64 @Override
65 public IsGreaterThanOrEqualToWhenPresent<T> filter(Predicate<? super @NonNull T> predicate) {
66 return filterSupport(predicate, IsGreaterThanOrEqualToWhenPresent::empty, this);
67 }
68
69 @Override
70 public <R> IsGreaterThanOrEqualToWhenPresent<R> map(Function<? super @NonNull T, ? extends @Nullable R> mapper) {
71 return mapSupport(mapper, IsGreaterThanOrEqualToWhenPresent::of, IsGreaterThanOrEqualToWhenPresent::empty);
72 }
73 }