1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.binder.context.segment.select.projection.impl;
19
20 import lombok.EqualsAndHashCode;
21 import lombok.Getter;
22 import lombok.RequiredArgsConstructor;
23 import lombok.ToString;
24 import org.apache.shardingsphere.infra.binder.context.segment.select.projection.Projection;
25 import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
26
27 import java.util.Collection;
28 import java.util.LinkedList;
29 import java.util.Optional;
30
31
32
33
34 @RequiredArgsConstructor
35 @Getter
36 @EqualsAndHashCode
37 @ToString
38 public final class ShorthandProjection implements Projection {
39
40 private final IdentifierValue owner;
41
42 private final Collection<Projection> actualColumns;
43
44
45
46
47
48
49 public Optional<IdentifierValue> getOwner() {
50 return Optional.ofNullable(owner);
51 }
52
53
54
55
56
57
58 public Collection<ColumnProjection> getColumnProjections() {
59 Collection<ColumnProjection> result = new LinkedList<>();
60 for (Projection each : actualColumns) {
61 if (each instanceof ColumnProjection) {
62 result.add((ColumnProjection) each);
63 }
64 }
65 return result;
66 }
67
68 @Override
69 public String getColumnName() {
70 return null == owner ? "*" : owner.getValue() + ".*";
71 }
72
73 @Override
74 public String getColumnLabel() {
75 return "*";
76 }
77
78 @Override
79 public String getExpression() {
80 return null == owner ? "*" : owner.getValue() + ".*";
81 }
82
83 @Override
84 public Optional<IdentifierValue> getAlias() {
85 return Optional.empty();
86 }
87 }