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;
19
20 import lombok.Getter;
21 import lombok.RequiredArgsConstructor;
22 import lombok.Setter;
23 import org.apache.shardingsphere.sql.parser.sql.common.segment.SQLSegment;
24 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.column.ColumnSegment;
25
26 import java.util.Collection;
27 import java.util.HashSet;
28
29
30
31
32 @RequiredArgsConstructor
33 @Getter
34 public final class PivotSegment implements SQLSegment {
35
36 private final int startIndex;
37
38 private final int stopIndex;
39
40 private final ColumnSegment pivotForColumn;
41
42 private final Collection<ColumnSegment> pivotInColumns;
43
44 private final boolean isUnPivot;
45
46 @Setter
47 private ColumnSegment unpivotColumn;
48
49 public PivotSegment(final int startIndex, final int stopIndex, final ColumnSegment pivotForColumn, final Collection<ColumnSegment> pivotInColumns) {
50 this.startIndex = startIndex;
51 this.stopIndex = stopIndex;
52 this.pivotForColumn = pivotForColumn;
53 this.pivotInColumns = pivotInColumns;
54 isUnPivot = false;
55 }
56
57
58
59
60
61
62 public Collection<ColumnSegment> getPivotColumns() {
63 Collection<ColumnSegment> result = new HashSet<>(pivotInColumns);
64 result.add(pivotForColumn);
65 if (null != unpivotColumn) {
66 result.add(unpivotColumn);
67 }
68 return result;
69 }
70 }