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 import java.util.Objects;
22
23 import org.jspecify.annotations.Nullable;
24
25
26
27
28
29
30
31
32
33
34 public class AndOrCriteriaGroup {
35 private final String connector;
36 private final SqlCriterion initialCriterion;
37 private final List<AndOrCriteriaGroup> subCriteria;
38
39 private AndOrCriteriaGroup(Builder builder) {
40 connector = Objects.requireNonNull(builder.connector);
41 initialCriterion = Objects.requireNonNull(builder.initialCriterion);
42 subCriteria = builder.subCriteria;
43 }
44
45 public String connector() {
46 return connector;
47 }
48
49 public SqlCriterion initialCriterion() {
50 return initialCriterion;
51 }
52
53 public List<AndOrCriteriaGroup> subCriteria() {
54 return Collections.unmodifiableList(subCriteria);
55 }
56
57 public static class Builder {
58 private @Nullable String connector;
59 private @Nullable SqlCriterion initialCriterion;
60 private final List<AndOrCriteriaGroup> subCriteria = new ArrayList<>();
61
62 public Builder withConnector(String connector) {
63 this.connector = connector;
64 return this;
65 }
66
67 public Builder withInitialCriterion(SqlCriterion initialCriterion) {
68 this.initialCriterion = initialCriterion;
69 return this;
70 }
71
72 public Builder withSubCriteria(List<AndOrCriteriaGroup> subCriteria) {
73 this.subCriteria.addAll(subCriteria);
74 return this;
75 }
76
77 public AndOrCriteriaGroup build() {
78 return new AndOrCriteriaGroup(this);
79 }
80 }
81 }