|
9 | 9 | */ |
10 | 10 | package net.sf.jsqlparser.statement.select; |
11 | 11 |
|
| 12 | +import java.util.ArrayList; |
| 13 | +import java.util.List; |
| 14 | +import net.sf.jsqlparser.expression.ColumnsTransformer; |
12 | 15 | import net.sf.jsqlparser.expression.Expression; |
13 | 16 | import net.sf.jsqlparser.expression.ExpressionVisitor; |
14 | | -import net.sf.jsqlparser.expression.operators.relational.ExpressionList; |
15 | 17 | import net.sf.jsqlparser.parser.ASTNodeAccessImpl; |
16 | | -import net.sf.jsqlparser.schema.Column; |
17 | | - |
18 | | -import java.util.ArrayList; |
19 | | -import java.util.List; |
20 | 18 |
|
21 | 19 | public class AllColumns extends ASTNodeAccessImpl implements Expression { |
22 | | - protected ExpressionList<Column> exceptColumns; |
23 | | - protected List<SelectItem<?>> replaceExpressions; |
24 | | - private String exceptKeyword; |
25 | | - |
26 | | - public AllColumns(ExpressionList<Column> exceptColumns, |
27 | | - List<SelectItem<?>> replaceExpressions) { |
28 | | - this.exceptColumns = exceptColumns; |
29 | | - this.replaceExpressions = replaceExpressions; |
30 | | - this.exceptKeyword = exceptColumns != null ? "Except" : null; |
31 | | - } |
32 | | - |
33 | | - public AllColumns(ExpressionList<Column> exceptColumns, |
34 | | - List<SelectItem<?>> replaceExpressions, String exceptKeyword) { |
35 | | - this.exceptColumns = exceptColumns; |
36 | | - this.replaceExpressions = replaceExpressions; |
37 | | - this.exceptKeyword = exceptKeyword; |
38 | | - } |
| 20 | + private List<ColumnsTransformer> transformers; |
39 | 21 |
|
40 | 22 | public AllColumns() { |
41 | | - this(null, null); |
42 | | - } |
43 | | - |
44 | | - public ExpressionList<Column> getExceptColumns() { |
45 | | - return exceptColumns; |
| 23 | + this(null); |
46 | 24 | } |
47 | 25 |
|
48 | | - public AllColumns setExceptColumns(ExpressionList<Column> exceptColumns) { |
49 | | - this.exceptColumns = exceptColumns; |
50 | | - return this; |
| 26 | + public AllColumns(List<ColumnsTransformer> transformers) { |
| 27 | + this.transformers = transformers; |
51 | 28 | } |
52 | 29 |
|
53 | | - public ExpressionList<Column> addExceptColumn(Column column) { |
54 | | - if (exceptColumns == null) { |
55 | | - exceptColumns = new ExpressionList<>(); |
| 30 | + public List<ColumnsTransformer> getTransformers() { |
| 31 | + if (transformers == null) { |
| 32 | + transformers = new ArrayList<>(); |
56 | 33 | } |
57 | | - exceptColumns.add(column); |
58 | | - return exceptColumns; |
| 34 | + return transformers; |
59 | 35 | } |
60 | 36 |
|
61 | | - public List<SelectItem<?>> getReplaceExpressions() { |
62 | | - return replaceExpressions; |
63 | | - } |
64 | | - |
65 | | - public AllColumns setReplaceExpressions(List<SelectItem<?>> replaceExpressions) { |
66 | | - this.replaceExpressions = replaceExpressions; |
| 37 | + public AllColumns setTransformers(List<ColumnsTransformer> transformers) { |
| 38 | + this.transformers = transformers; |
67 | 39 | return this; |
68 | 40 | } |
69 | 41 |
|
70 | | - public List<SelectItem<?>> addReplaceExpression(SelectItem<?> selectItem) { |
71 | | - if (replaceExpressions == null) { |
72 | | - replaceExpressions = new ArrayList<>(); |
73 | | - } |
74 | | - replaceExpressions.add(selectItem); |
75 | | - return replaceExpressions; |
76 | | - } |
77 | | - |
78 | | - public String getExceptKeyword() { |
79 | | - return exceptKeyword; |
80 | | - } |
81 | | - |
82 | | - public AllColumns setExceptKeyword(String exceptKeyword) { |
83 | | - this.exceptKeyword = exceptKeyword; |
| 42 | + public AllColumns addTransformer(ColumnsTransformer transformer) { |
| 43 | + getTransformers().add(transformer); |
84 | 44 | return this; |
85 | 45 | } |
86 | 46 |
|
87 | 47 | public StringBuilder appendTo(StringBuilder builder) { |
88 | 48 | builder.append("*"); |
89 | | - if (exceptColumns != null && !exceptColumns.isEmpty()) { |
90 | | - builder.append(" ").append(exceptKeyword).append("( "); |
91 | | - exceptColumns.appendTo(builder); |
92 | | - builder.append(" )"); |
93 | | - } |
94 | | - if (replaceExpressions != null && !replaceExpressions.isEmpty()) { |
95 | | - builder.append(" REPLACE( "); |
96 | | - builder.append(Select.getStringList(replaceExpressions)); |
97 | | - builder.append(" )"); |
| 49 | + for (ColumnsTransformer transformer : getTransformers()) { |
| 50 | + builder.append(" ").append(transformer); |
98 | 51 | } |
99 | 52 | return builder; |
100 | 53 | } |
|
0 commit comments