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 IsNotLikeWhenPresent<T> extends AbstractSingleValueCondition<T>
27 implements AbstractSingleValueCondition.Filterable<T>, AbstractSingleValueCondition.Mappable<T> {
28 private static final IsNotLikeWhenPresent<?> EMPTY = new IsNotLikeWhenPresent<Object>(-1) {
29 @Override
30 public Object value() {
31 throw new NoSuchElementException("No value present");
32 }
33
34 @Override
35 public boolean isEmpty() {
36 return true;
37 }
38 };
39
40 public static <T> IsNotLikeWhenPresent<T> empty() {
41 @SuppressWarnings("unchecked")
42 IsNotLikeWhenPresent<T> t = (IsNotLikeWhenPresent<T>) EMPTY;
43 return t;
44 }
45
46 protected IsNotLikeWhenPresent(T value) {
47 super(value);
48 }
49
50 @Override
51 public String operator() {
52 return "not like";
53 }
54
55 public static <T> IsNotLikeWhenPresent<T> of(@Nullable T value) {
56 if (value == null) {
57 return empty();
58 } else {
59 return new IsNotLikeWhenPresent<>(value);
60 }
61 }
62
63 @Override
64 public IsNotLikeWhenPresent<T> filter(Predicate<? super @NonNull T> predicate) {
65 return filterSupport(predicate, IsNotLikeWhenPresent::empty, this);
66 }
67
68 @Override
69 public <R> IsNotLikeWhenPresent<R> map(Function<? super @NonNull T, ? extends @Nullable R> mapper) {
70 return mapSupport(mapper, IsNotLikeWhenPresent::of, IsNotLikeWhenPresent::empty);
71 }
72 }