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.Arrays;
19 import java.util.Collection;
20 import java.util.Collections;
21 import java.util.function.Function;
22 import java.util.function.Predicate;
23
24 import org.mybatis.dynamic.sql.AbstractListValueCondition;
25 import org.mybatis.dynamic.sql.render.RenderingContext;
26 import org.mybatis.dynamic.sql.util.Validator;
27
28 public class IsNotIn<T> extends AbstractListValueCondition<T>
29 implements AbstractListValueCondition.Filterable<T>, AbstractListValueCondition.Mappable<T> {
30 private static final IsNotIn<?> EMPTY = new IsNotIn<>(Collections.emptyList());
31
32 public static <T> IsNotIn<T> empty() {
33 @SuppressWarnings("unchecked")
34 IsNotIn<T> t = (IsNotIn<T>) EMPTY;
35 return t;
36 }
37
38 protected IsNotIn(Collection<T> values) {
39 super(values);
40 }
41
42 @Override
43 public boolean shouldRender(RenderingContext renderingContext) {
44 Validator.assertNotEmpty(values, "ERROR.44", "IsNotIn");
45 return true;
46 }
47
48 @Override
49 public String operator() {
50 return "not in";
51 }
52
53 @Override
54 public IsNotIn<T> filter(Predicate<? super T> predicate) {
55 return filterSupport(predicate, IsNotIn::new, this, IsNotIn::empty);
56 }
57
58 @Override
59 public <R> IsNotIn<R> map(Function<? super T, ? extends R> mapper) {
60 return mapSupport(mapper, IsNotIn::new, IsNotIn::empty);
61 }
62
63 @SafeVarargs
64 public static <T> IsNotIn<T> of(T... values) {
65 return of(Arrays.asList(values));
66 }
67
68 public static <T> IsNotIn<T> of(Collection<T> values) {
69 return new IsNotIn<>(values);
70 }
71 }