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.BiPredicate;
20 import java.util.function.Function;
21 import java.util.function.Predicate;
22
23 import org.mybatis.dynamic.sql.AbstractTwoValueCondition;
24
25 public class IsNotBetween<T> extends AbstractTwoValueCondition<T>
26 implements AbstractTwoValueCondition.Filterable<T>, AbstractTwoValueCondition.Mappable<T> {
27 private static final IsNotBetween<?> EMPTY = new IsNotBetween<Object>(-1, -1) {
28 @Override
29 public Object value1() {
30 throw new NoSuchElementException("No value present");
31 }
32
33 @Override
34 public Object value2() {
35 throw new NoSuchElementException("No value present");
36 }
37
38 @Override
39 public boolean isEmpty() {
40 return true;
41 }
42 };
43
44 public static <T> IsNotBetween<T> empty() {
45 @SuppressWarnings("unchecked")
46 IsNotBetween<T> t = (IsNotBetween<T>) EMPTY;
47 return t;
48 }
49
50 protected IsNotBetween(T value1, T value2) {
51 super(value1, value2);
52 }
53
54 @Override
55 public String operator1() {
56 return "not between";
57 }
58
59 @Override
60 public String operator2() {
61 return "and";
62 }
63
64 @Override
65 public IsNotBetween<T> filter(BiPredicate<? super T, ? super T> predicate) {
66 return filterSupport(predicate, IsNotBetween::empty, this);
67 }
68
69 @Override
70 public IsNotBetween<T> filter(Predicate<? super T> predicate) {
71 return filterSupport(predicate, IsNotBetween::empty, this);
72 }
73
74 @Override
75 public <R> IsNotBetween<R> map(Function<? super T, ? extends R> mapper1,
76 Function<? super T, ? extends R> mapper2) {
77 return mapSupport(mapper1, mapper2, IsNotBetween::new, IsNotBetween::empty);
78 }
79
80 @Override
81 public <R> IsNotBetween<R> map(Function<? super T, ? extends R> mapper) {
82 return map(mapper, mapper);
83 }
84
85 public static <T> Builder<T> isNotBetween(T value1) {
86 return new Builder<>(value1);
87 }
88
89 public static class Builder<T> extends AndGatherer<T, IsNotBetween<T>> {
90
91 private Builder(T value1) {
92 super(value1);
93 }
94
95 @Override
96 protected IsNotBetween<T> build(T value2) {
97 return new IsNotBetween<>(value1, value2);
98 }
99 }
100 }