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(AbstractBuilder<?> builder) {
27 subCriteria.addAll(builder.subCriteria);
28 }
29
30 public List<AndOrCriteriaGroup> subCriteria() {
31 return Collections.unmodifiableList(subCriteria);
32 }
33
34 public abstract <R> R accept(SqlCriterionVisitor<R> visitor);
35
36 protected abstract static class AbstractBuilder<T extends AbstractBuilder<T>> {
37 private final List<AndOrCriteriaGroup> subCriteria = new ArrayList<>();
38
39 public T withSubCriteria(List<AndOrCriteriaGroup> subCriteria) {
40 this.subCriteria.addAll(subCriteria);
41 return getThis();
42 }
43
44 protected abstract T getThis();
45 }
46 }