2222package net .sf .jsqlparser .util .deparser ;
2323
2424import java .util .Iterator ;
25- import net .sf .jsqlparser .statement .SetStatement ;
2625
26+ import net .sf .jsqlparser .statement .SetStatement ;
2727import net .sf .jsqlparser .statement .StatementVisitor ;
2828import net .sf .jsqlparser .statement .Statements ;
2929import net .sf .jsqlparser .statement .alter .Alter ;
4343import net .sf .jsqlparser .statement .update .Update ;
4444
4545public class StatementDeParser implements StatementVisitor {
46+ private ExpressionDeParser expressionDeParser ;
47+
48+ private SelectDeParser selectDeParser ;
4649
4750 private StringBuilder buffer ;
4851
4952 public StatementDeParser (StringBuilder buffer ) {
53+ this (new ExpressionDeParser (), new SelectDeParser (), buffer );
54+ }
55+
56+ public StatementDeParser (ExpressionDeParser expressionDeParser , SelectDeParser selectDeParser , StringBuilder buffer ) {
57+ this .expressionDeParser = expressionDeParser ;
58+ this .selectDeParser = selectDeParser ;
5059 this .buffer = buffer ;
5160 }
5261
@@ -76,9 +85,9 @@ public void visit(AlterView alterView) {
7685
7786 @ Override
7887 public void visit (Delete delete ) {
79- SelectDeParser selectDeParser = new SelectDeParser ();
8088 selectDeParser .setBuffer (buffer );
81- ExpressionDeParser expressionDeParser = new ExpressionDeParser (selectDeParser , buffer );
89+ expressionDeParser .setSelectVisitor (selectDeParser );
90+ expressionDeParser .setBuffer (buffer );
8291 selectDeParser .setExpressionVisitor (expressionDeParser );
8392 DeleteDeParser deleteDeParser = new DeleteDeParser (expressionDeParser , buffer );
8493 deleteDeParser .deParse (delete );
@@ -92,29 +101,29 @@ public void visit(Drop drop) {
92101
93102 @ Override
94103 public void visit (Insert insert ) {
95- SelectDeParser selectDeParser = new SelectDeParser ();
96104 selectDeParser .setBuffer (buffer );
97- ExpressionDeParser expressionDeParser = new ExpressionDeParser (selectDeParser , buffer );
105+ expressionDeParser .setSelectVisitor (selectDeParser );
106+ expressionDeParser .setBuffer (buffer );
98107 selectDeParser .setExpressionVisitor (expressionDeParser );
99108 InsertDeParser insertDeParser = new InsertDeParser (expressionDeParser , selectDeParser , buffer );
100109 insertDeParser .deParse (insert );
101110 }
102111
103112 @ Override
104113 public void visit (Replace replace ) {
105- SelectDeParser selectDeParser = new SelectDeParser ();
106114 selectDeParser .setBuffer (buffer );
107- ExpressionDeParser expressionDeParser = new ExpressionDeParser (selectDeParser , buffer );
115+ expressionDeParser .setSelectVisitor (selectDeParser );
116+ expressionDeParser .setBuffer (buffer );
108117 selectDeParser .setExpressionVisitor (expressionDeParser );
109118 ReplaceDeParser replaceDeParser = new ReplaceDeParser (expressionDeParser , selectDeParser , buffer );
110119 replaceDeParser .deParse (replace );
111120 }
112121
113122 @ Override
114123 public void visit (Select select ) {
115- SelectDeParser selectDeParser = new SelectDeParser ();
116124 selectDeParser .setBuffer (buffer );
117- ExpressionDeParser expressionDeParser = new ExpressionDeParser (selectDeParser , buffer );
125+ expressionDeParser .setSelectVisitor (selectDeParser );
126+ expressionDeParser .setBuffer (buffer );
118127 selectDeParser .setExpressionVisitor (expressionDeParser );
119128 if (select .getWithItemsList () != null && !select .getWithItemsList ().isEmpty ()) {
120129 buffer .append ("WITH " );
@@ -136,9 +145,9 @@ public void visit(Truncate truncate) {
136145
137146 @ Override
138147 public void visit (Update update ) {
139- SelectDeParser selectDeParser = new SelectDeParser ();
140148 selectDeParser .setBuffer (buffer );
141- ExpressionDeParser expressionDeParser = new ExpressionDeParser (selectDeParser , buffer );
149+ expressionDeParser .setSelectVisitor (selectDeParser );
150+ expressionDeParser .setBuffer (buffer );
142151 UpdateDeParser updateDeParser = new UpdateDeParser (expressionDeParser , selectDeParser , buffer );
143152 selectDeParser .setExpressionVisitor (expressionDeParser );
144153 updateDeParser .deParse (update );
@@ -166,19 +175,19 @@ public void visit(Statements stmts) {
166175
167176 @ Override
168177 public void visit (Execute execute ) {
169- SelectDeParser selectDeParser = new SelectDeParser ();
170178 selectDeParser .setBuffer (buffer );
171- ExpressionDeParser expressionDeParser = new ExpressionDeParser (selectDeParser , buffer );
179+ expressionDeParser .setSelectVisitor (selectDeParser );
180+ expressionDeParser .setBuffer (buffer );
172181 ExecuteDeParser executeDeParser = new ExecuteDeParser (expressionDeParser , buffer );
173182 selectDeParser .setExpressionVisitor (expressionDeParser );
174183 executeDeParser .deParse (execute );
175184 }
176185
177186 @ Override
178187 public void visit (SetStatement set ) {
179- SelectDeParser selectDeParser = new SelectDeParser ();
180188 selectDeParser .setBuffer (buffer );
181- ExpressionDeParser expressionDeParser = new ExpressionDeParser (selectDeParser , buffer );
189+ expressionDeParser .setSelectVisitor (selectDeParser );
190+ expressionDeParser .setBuffer (buffer );
182191 SetStatementDeParser setStatementDeparser = new SetStatementDeParser (expressionDeParser , buffer );
183192 selectDeParser .setExpressionVisitor (expressionDeParser );
184193 setStatementDeparser .deParse (set );
0 commit comments