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.mybatis.dynamic.sql.AbstractSingleValueCondition;
23 import org.mybatis.dynamic.sql.util.StringUtilities;
24
25 public class IsNotLikeCaseInsensitive<T> extends AbstractSingleValueCondition<T>
26 implements CaseInsensitiveRenderableCondition<T>, AbstractSingleValueCondition.Filterable<T>,
27 AbstractSingleValueCondition.Mappable<T> {
28 private static final IsNotLikeCaseInsensitive<?> EMPTY = new IsNotLikeCaseInsensitive<>("") {
29 @Override
30 public String 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> IsNotLikeCaseInsensitive<T> empty() {
41 @SuppressWarnings("unchecked")
42 IsNotLikeCaseInsensitive<T> t = (IsNotLikeCaseInsensitive<T>) EMPTY;
43 return t;
44 }
45
46 protected IsNotLikeCaseInsensitive(T value) {
47 super(StringUtilities.upperCaseIfPossible(value));
48 }
49
50 @Override
51 public String operator() {
52 return "not like";
53 }
54
55 @Override
56 public IsNotLikeCaseInsensitive<T> filter(Predicate<? super T> predicate) {
57 return filterSupport(predicate, IsNotLikeCaseInsensitive::empty, this);
58 }
59
60 @Override
61 public <R> IsNotLikeCaseInsensitive<R> map(Function<? super T, ? extends R> mapper) {
62 return mapSupport(mapper, IsNotLikeCaseInsensitive::new, IsNotLikeCaseInsensitive::empty);
63 }
64
65 public static <T> IsNotLikeCaseInsensitive<T> of(T value) {
66 return new IsNotLikeCaseInsensitive<>(value);
67 }
68 }