|
27 | 27 | import net.sf.jsqlparser.expression.operators.relational.*; |
28 | 28 | import net.sf.jsqlparser.schema.Column; |
29 | 29 | import net.sf.jsqlparser.statement.select.OrderByElement; |
| 30 | +import net.sf.jsqlparser.statement.select.PivotVisitor; |
| 31 | +import net.sf.jsqlparser.statement.select.SelectVisitor; |
30 | 32 | import net.sf.jsqlparser.statement.select.SubSelect; |
| 33 | +import net.sf.jsqlparser.statement.select.WithItem; |
31 | 34 |
|
32 | 35 | public class ExpressionVisitorAdapter implements ExpressionVisitor, ItemsListVisitor { |
33 | 36 |
|
| 37 | + private SelectVisitor selectVisitor; |
| 38 | + |
| 39 | + public SelectVisitor getSelectVisitor() { |
| 40 | + return selectVisitor; |
| 41 | + } |
| 42 | + |
| 43 | + public void setSelectVisitor(SelectVisitor selectVisitor) { |
| 44 | + this.selectVisitor = selectVisitor; |
| 45 | + } |
| 46 | + |
| 47 | + private PivotVisitor pivotVisitor; |
| 48 | + |
| 49 | + public PivotVisitor getPivotVisitor() { |
| 50 | + return pivotVisitor; |
| 51 | + } |
| 52 | + |
| 53 | + public void setPivotVisitor(PivotVisitor pivotVisitor) { |
| 54 | + this.pivotVisitor = pivotVisitor; |
| 55 | + } |
| 56 | + |
34 | 57 | @Override |
35 | 58 | public void visit(NullValue value) { |
36 | 59 |
|
37 | 60 | } |
38 | 61 |
|
39 | 62 | @Override |
40 | 63 | public void visit(Function function) { |
41 | | - |
| 64 | + if (function.getParameters() != null) { |
| 65 | + function.getParameters().accept(this); |
| 66 | + } |
| 67 | + if (function.getKeep() != null) { |
| 68 | + function.getKeep().accept(this); |
| 69 | + } |
42 | 70 | } |
43 | 71 |
|
44 | 72 | @Override |
@@ -182,7 +210,15 @@ public void visit(Column column) { |
182 | 210 |
|
183 | 211 | @Override |
184 | 212 | public void visit(SubSelect subSelect) { |
185 | | - |
| 213 | + if (selectVisitor != null) { |
| 214 | + for (WithItem item : subSelect.getWithItemsList()) { |
| 215 | + item.accept(selectVisitor); |
| 216 | + } |
| 217 | + } |
| 218 | + subSelect.getSelectBody().accept(selectVisitor); |
| 219 | + if (pivotVisitor != null && subSelect.getPivot() != null) { |
| 220 | + subSelect.getPivot().accept(pivotVisitor); |
| 221 | + } |
186 | 222 | } |
187 | 223 |
|
188 | 224 | @Override |
@@ -274,7 +310,6 @@ public void visit(ExtractExpression expr) { |
274 | 310 |
|
275 | 311 | @Override |
276 | 312 | public void visit(IntervalExpression expr) { |
277 | | - |
278 | 313 | } |
279 | 314 |
|
280 | 315 | @Override |
|
0 commit comments