1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table;
19
20 import lombok.Getter;
21 import lombok.Setter;
22 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
23 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
24 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ProjectionSegment;
25 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.AliasSegment;
26 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
27
28 import java.util.Collection;
29 import java.util.Collections;
30 import java.util.LinkedList;
31 import java.util.List;
32 import java.util.Optional;
33
34 @Getter
35 @Setter
36 public final class JoinTableSegment implements TableSegment {
37
38 private int startIndex;
39
40 private int stopIndex;
41
42 private AliasSegment alias;
43
44 private TableSegment left;
45
46 private boolean natural;
47
48 private String joinType;
49
50 private TableSegment right;
51
52 private ExpressionSegment condition;
53
54 private List<ColumnSegment> using = Collections.emptyList();
55
56 private List<ColumnSegment> derivedUsing = Collections.emptyList();
57
58 private Collection<ProjectionSegment> derivedJoinTableProjectionSegments = new LinkedList<>();
59
60 @Override
61 public Optional<String> getAliasName() {
62 return null == alias ? Optional.empty() : Optional.ofNullable(alias.getIdentifier().getValue());
63 }
64
65 @Override
66 public Optional<IdentifierValue> getAlias() {
67 return Optional.ofNullable(alias).map(AliasSegment::getIdentifier);
68 }
69
70
71
72
73
74
75 public Optional<AliasSegment> getAliasSegment() {
76 return Optional.ofNullable(alias);
77 }
78 }