1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mybatis.dynamic.sql.select.join;
17
18 import java.util.ArrayList;
19 import java.util.List;
20 import java.util.Objects;
21 import java.util.stream.Stream;
22
23 import org.jspecify.annotations.Nullable;
24 import org.mybatis.dynamic.sql.TableExpression;
25 import org.mybatis.dynamic.sql.util.Validator;
26
27 public class JoinModel {
28 private final List<JoinSpecification> joinSpecifications = new ArrayList<>();
29
30 private JoinModel(@Nullable List<JoinSpecification> joinSpecifications) {
31 Objects.requireNonNull(joinSpecifications);
32 Validator.assertNotEmpty(joinSpecifications, "ERROR.15");
33 this.joinSpecifications.addAll(joinSpecifications);
34 }
35
36 public Stream<JoinSpecification> joinSpecifications() {
37 return joinSpecifications.stream();
38 }
39
40 public static JoinModel of(@Nullable List<JoinSpecification> joinSpecifications) {
41 return new JoinModel(joinSpecifications);
42 }
43
44 public boolean containsSubQueries() {
45 return joinSpecifications.stream()
46 .map(JoinSpecification::table)
47 .anyMatch(TableExpression::isSubQuery);
48 }
49 }