1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql;
17
18 import java.util.ArrayList;
19 import java.util.Collections;
20 import java.util.List;
21
22 public abstract class SqlCriterion {
23
24 private final List<AndOrCriteriaGroup> subCriteria = new ArrayList<>();
25
26 protected SqlCriterion() {
27 }
28
29 protected SqlCriterion(AbstractBuilder<?> builder) {
30 subCriteria.addAll(builder.subCriteria);
31 }
32
33 public List<AndOrCriteriaGroup> subCriteria() {
34 return Collections.unmodifiableList(subCriteria);
35 }
36
37 public abstract <R> R accept(SqlCriterionVisitor<R> visitor);
38
39 protected abstract static class AbstractBuilder<T extends AbstractBuilder<T>> {
40 private final List<AndOrCriteriaGroup> subCriteria = new ArrayList<>();
41
42 public T withSubCriteria(List<AndOrCriteriaGroup> subCriteria) {
43 this.subCriteria.addAll(subCriteria);
44 return getThis();
45 }
46
47 protected abstract T getThis();
48 }
49 }