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.dml.item;
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.generic.AliasAvailable;
24 import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.AliasSegment;
25 import org.apache.shardingsphere.sql.parser.sql.common.value.identifier.IdentifierValue;
26
27 import java.util.Optional;
28
29
30
31
32 @Setter
33 @Getter
34 public final class ColumnProjectionSegment implements ProjectionSegment, AliasAvailable {
35
36 private final ColumnSegment column;
37
38 private AliasSegment alias;
39
40 private boolean visible = true;
41
42 public ColumnProjectionSegment(final ColumnSegment columnSegment) {
43 column = columnSegment;
44 }
45
46 @Override
47 public String getColumnLabel() {
48 return getAliasName().orElse(column.getIdentifier().getValue());
49 }
50
51 @Override
52 public Optional<String> getAliasName() {
53 return null == alias ? Optional.empty() : Optional.ofNullable(alias.getIdentifier().getValue());
54 }
55
56 @Override
57 public Optional<IdentifierValue> getAlias() {
58 return Optional.ofNullable(alias).map(AliasSegment::getIdentifier);
59 }
60
61 @Override
62 public int getStartIndex() {
63 return null != alias && alias.getStartIndex() < column.getStartIndex() ? alias.getStartIndex() : column.getStartIndex();
64 }
65
66 @Override
67 public int getStopIndex() {
68 return null != alias && alias.getStopIndex() > column.getStopIndex() ? alias.getStopIndex() : column.getStopIndex();
69 }
70
71
72
73
74
75 public Optional<AliasSegment> getAliasSegment() {
76 return Optional.ofNullable(alias);
77 }
78 }