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.RequiredArgsConstructor;
22 import lombok.Setter;
23 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.AliasSegment;
24 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerAvailable;
25 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OwnerSegment;
26 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.PivotSegment;
27 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
28
29 import java.util.Collection;
30 import java.util.LinkedList;
31 import java.util.Optional;
32
33
34
35
36 @RequiredArgsConstructor
37 @Getter
38 public final class SimpleTableSegment implements TableSegment, OwnerAvailable {
39
40 private final TableNameSegment tableName;
41
42 @Setter
43 private OwnerSegment owner;
44
45 @Setter
46 private AliasSegment alias;
47
48 private final Collection<IndexHintSegment> indexHintSegments = new LinkedList<>();
49
50 @Setter
51 private PivotSegment pivot;
52
53 @Setter
54 private IdentifierValue dbLink;
55
56 @Setter
57 private IdentifierValue at;
58
59 @Override
60 public int getStartIndex() {
61 if (null == owner) {
62 return tableName.getStartIndex();
63 }
64 return owner.getOwner().isPresent() ? owner.getOwner().get().getStartIndex() : owner.getStartIndex();
65 }
66
67 @Override
68 public int getStopIndex() {
69 return null == alias ? tableName.getStopIndex() : alias.getStopIndex();
70 }
71
72 @Override
73 public Optional<OwnerSegment> getOwner() {
74 return Optional.ofNullable(owner);
75 }
76
77 public Optional<IdentifierValue> getDbLink() {
78 return Optional.ofNullable(dbLink);
79 }
80
81 public Optional<IdentifierValue> getAt() {
82 return Optional.ofNullable(at);
83 }
84
85 @Override
86 public Optional<String> getAliasName() {
87 return null == alias ? Optional.empty() : Optional.ofNullable(alias.getIdentifier().getValue());
88 }
89
90 @Override
91 public Optional<IdentifierValue> getAlias() {
92 return Optional.ofNullable(alias).map(AliasSegment::getIdentifier);
93 }
94
95
96
97
98
99
100 public Optional<AliasSegment> getAliasSegment() {
101 return Optional.ofNullable(alias);
102 }
103
104
105
106
107
108
109 public Optional<PivotSegment> getPivot() {
110 return Optional.ofNullable(pivot);
111 }
112 }