2626import net .sf .jsqlparser .expression .operators .conditional .OrExpression ;
2727import net .sf .jsqlparser .expression .operators .relational .*;
2828import net .sf .jsqlparser .schema .Column ;
29+ import net .sf .jsqlparser .statement .select .AllColumns ;
30+ import net .sf .jsqlparser .statement .select .AllTableColumns ;
31+ import net .sf .jsqlparser .statement .select .ExpressionListItem ;
32+ import net .sf .jsqlparser .statement .select .FunctionItem ;
2933import net .sf .jsqlparser .statement .select .OrderByElement ;
34+ import net .sf .jsqlparser .statement .select .Pivot ;
3035import net .sf .jsqlparser .statement .select .PivotVisitor ;
36+ import net .sf .jsqlparser .statement .select .PivotXml ;
37+ import net .sf .jsqlparser .statement .select .SelectExpressionItem ;
38+ import net .sf .jsqlparser .statement .select .SelectItemVisitor ;
3139import net .sf .jsqlparser .statement .select .SelectVisitor ;
3240import net .sf .jsqlparser .statement .select .SubSelect ;
3341import net .sf .jsqlparser .statement .select .WithItem ;
3442
35- public class ExpressionVisitorAdapter implements ExpressionVisitor , ItemsListVisitor {
43+ public class ExpressionVisitorAdapter implements ExpressionVisitor , ItemsListVisitor , PivotVisitor , SelectItemVisitor {
3644
3745 private SelectVisitor selectVisitor ;
3846
@@ -44,16 +52,6 @@ public void setSelectVisitor(SelectVisitor selectVisitor) {
4452 this .selectVisitor = selectVisitor ;
4553 }
4654
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-
5755 @ Override
5856 public void visit (NullValue value ) {
5957
@@ -216,8 +214,8 @@ public void visit(SubSelect subSelect) {
216214 }
217215 }
218216 subSelect .getSelectBody ().accept (selectVisitor );
219- if (pivotVisitor != null && subSelect .getPivot () != null ) {
220- subSelect .getPivot ().accept (pivotVisitor );
217+ if (subSelect .getPivot () != null ) {
218+ subSelect .getPivot ().accept (this );
221219 }
222220 }
223221
@@ -388,4 +386,50 @@ public void visit(MySQLGroupConcat groupConcat) {
388386 }
389387 }
390388 }
389+
390+ @ Override
391+ public void visit (Pivot pivot ) {
392+ for (FunctionItem item : pivot .getFunctionItems ()) {
393+ item .getFunction ().accept (this );
394+ }
395+ for (Column col : pivot .getForColumns ()) {
396+ col .accept (this );
397+ }
398+ if (pivot .getSingleInItems ()!=null )
399+ for (SelectExpressionItem item : pivot .getSingleInItems ()) {
400+ item .accept (this );
401+ }
402+
403+ if (pivot .getMultiInItems ()!=null )
404+ for (ExpressionListItem item : pivot .getMultiInItems ()) {
405+ item .getExpressionList ().accept (this );
406+ }
407+ }
408+
409+ @ Override
410+ public void visit (PivotXml pivot ) {
411+ for (FunctionItem item : pivot .getFunctionItems ()) {
412+ item .getFunction ().accept (this );
413+ }
414+ for (Column col : pivot .getForColumns ()) {
415+ col .accept (this );
416+ }
417+ if (pivot .getInSelect ()!=null )
418+ pivot .getInSelect ().accept (selectVisitor );
419+ }
420+
421+ @ Override
422+ public void visit (AllColumns allColumns ) {
423+
424+ }
425+
426+ @ Override
427+ public void visit (AllTableColumns allTableColumns ) {
428+
429+ }
430+
431+ @ Override
432+ public void visit (SelectExpressionItem selectExpressionItem ) {
433+ selectExpressionItem .getExpression ().accept (this );
434+ }
391435}
0 commit comments