3636
3737import java .util .ArrayList ;
3838import java .util .List ;
39+ import net .sf .jsqlparser .statement .SetStatement ;
40+ import net .sf .jsqlparser .statement .StatementVisitor ;
41+ import net .sf .jsqlparser .statement .Statements ;
42+ import net .sf .jsqlparser .statement .alter .Alter ;
43+ import net .sf .jsqlparser .statement .create .index .CreateIndex ;
3944import net .sf .jsqlparser .statement .create .table .CreateTable ;
45+ import net .sf .jsqlparser .statement .create .view .CreateView ;
46+ import net .sf .jsqlparser .statement .drop .Drop ;
47+ import net .sf .jsqlparser .statement .execute .Execute ;
48+ import net .sf .jsqlparser .statement .truncate .Truncate ;
4049
4150/**
4251 * Find all used tables within an select statement.
4352 */
44- public class TablesNamesFinder implements SelectVisitor , FromItemVisitor , ExpressionVisitor , ItemsListVisitor , SelectItemVisitor {
53+ public class TablesNamesFinder implements SelectVisitor , FromItemVisitor , ExpressionVisitor , ItemsListVisitor , SelectItemVisitor , StatementVisitor {
4554
4655 private List <String > tables ;
4756 /**
@@ -59,11 +68,7 @@ public class TablesNamesFinder implements SelectVisitor, FromItemVisitor, Expres
5968 */
6069 public List <String > getTableList (Delete delete ) {
6170 init ();
62- tables .add (delete .getTable ().getName ());
63- if (delete .getWhere () != null ) {
64- delete .getWhere ().accept (this );
65- }
66-
71+ delete .accept (this );
6772 return tables ;
6873 }
6974
@@ -75,14 +80,7 @@ public List<String> getTableList(Delete delete) {
7580 */
7681 public List <String > getTableList (Insert insert ) {
7782 init ();
78- tables .add (insert .getTable ().getName ());
79- if (insert .getItemsList () != null ) {
80- insert .getItemsList ().accept (this );
81- }
82- if (insert .getSelect () != null ) {
83- visit (insert .getSelect ());
84- }
85-
83+ insert .accept (this );
8684 return tables ;
8785 }
8886
@@ -94,16 +92,7 @@ public List<String> getTableList(Insert insert) {
9492 */
9593 public List <String > getTableList (Replace replace ) {
9694 init ();
97- tables .add (replace .getTable ().getName ());
98- if (replace .getExpressions () != null ) {
99- for (Expression expression : replace .getExpressions ()) {
100- expression .accept (this );
101- }
102- }
103- if (replace .getItemsList () != null ) {
104- replace .getItemsList ().accept (this );
105- }
106-
95+ replace .accept (this );
10796 return tables ;
10897 }
10998
@@ -115,11 +104,11 @@ public List<String> getTableList(Replace replace) {
115104 */
116105 public List <String > getTableList (Select select ) {
117106 init ();
118- visit (select );
119-
107+ select .accept (this );
120108 return tables ;
121109 }
122110
111+ @ Override
123112 public void visit (Select select ) {
124113 if (select .getWithItemsList () != null ) {
125114 for (WithItem withItem : select .getWithItemsList ()) {
@@ -137,46 +126,19 @@ public void visit(Select select) {
137126 */
138127 public List <String > getTableList (Update update ) {
139128 init ();
140- for (Table table : update .getTables ()) {
141- tables .add (table .getName ());
142- }
143- if (update .getExpressions () != null ) {
144- for (Expression expression : update .getExpressions ()) {
145- expression .accept (this );
146- }
147- }
148-
149- if (update .getFromItem () != null ) {
150- update .getFromItem ().accept (this );
151- }
152-
153- if (update .getJoins () != null ) {
154- for (Join join : update .getJoins ()) {
155- join .getRightItem ().accept (this );
156- }
157- }
158-
159- if (update .getWhere () != null ) {
160- update .getWhere ().accept (this );
161- }
162-
129+ update .accept (this );
163130 return tables ;
164131 }
165132
166133 public List <String > getTableList (CreateTable create ) {
167134 init ();
168- tables .add (create .getTable ().getFullyQualifiedName ());
169- if (create .getSelect () != null ) {
170- visit (create .getSelect ());
171- }
172-
135+ create .accept (this );
173136 return tables ;
174137 }
175138
176139 public List <String > getTableList (Expression expr ) {
177140 init ();
178141 expr .accept (this );
179-
180142 return tables ;
181143 }
182144
@@ -547,4 +509,110 @@ public void visit(KeepExpression aexpr) {
547509 @ Override
548510 public void visit (MySQLGroupConcat groupConcat ) {
549511 }
512+
513+ @ Override
514+ public void visit (Delete delete ) {
515+ tables .add (delete .getTable ().getName ());
516+ if (delete .getWhere () != null ) {
517+ delete .getWhere ().accept (this );
518+ }
519+ }
520+
521+ @ Override
522+ public void visit (Update update ) {
523+ for (Table table : update .getTables ()) {
524+ tables .add (table .getName ());
525+ }
526+ if (update .getExpressions () != null ) {
527+ for (Expression expression : update .getExpressions ()) {
528+ expression .accept (this );
529+ }
530+ }
531+
532+ if (update .getFromItem () != null ) {
533+ update .getFromItem ().accept (this );
534+ }
535+
536+ if (update .getJoins () != null ) {
537+ for (Join join : update .getJoins ()) {
538+ join .getRightItem ().accept (this );
539+ }
540+ }
541+
542+ if (update .getWhere () != null ) {
543+ update .getWhere ().accept (this );
544+ }
545+ }
546+
547+ @ Override
548+ public void visit (Insert insert ) {
549+ tables .add (insert .getTable ().getName ());
550+ if (insert .getItemsList () != null ) {
551+ insert .getItemsList ().accept (this );
552+ }
553+ if (insert .getSelect () != null ) {
554+ visit (insert .getSelect ());
555+ }
556+ }
557+
558+ @ Override
559+ public void visit (Replace replace ) {
560+ tables .add (replace .getTable ().getName ());
561+ if (replace .getExpressions () != null ) {
562+ for (Expression expression : replace .getExpressions ()) {
563+ expression .accept (this );
564+ }
565+ }
566+ if (replace .getItemsList () != null ) {
567+ replace .getItemsList ().accept (this );
568+ }
569+ }
570+
571+ @ Override
572+ public void visit (Drop drop ) {
573+ throw new UnsupportedOperationException ("Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
574+ }
575+
576+ @ Override
577+ public void visit (Truncate truncate ) {
578+ throw new UnsupportedOperationException ("Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
579+ }
580+
581+ @ Override
582+ public void visit (CreateIndex createIndex ) {
583+ throw new UnsupportedOperationException ("Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
584+ }
585+
586+ @ Override
587+ public void visit (CreateTable create ) {
588+ tables .add (create .getTable ().getFullyQualifiedName ());
589+ if (create .getSelect () != null ) {
590+ create .getSelect ().accept (this );
591+ }
592+ }
593+
594+ @ Override
595+ public void visit (CreateView createView ) {
596+ throw new UnsupportedOperationException ("Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
597+ }
598+
599+ @ Override
600+ public void visit (Alter alter ) {
601+ throw new UnsupportedOperationException ("Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
602+ }
603+
604+ @ Override
605+ public void visit (Statements stmts ) {
606+ throw new UnsupportedOperationException ("Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
607+ }
608+
609+ @ Override
610+ public void visit (Execute execute ) {
611+ throw new UnsupportedOperationException ("Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
612+ }
613+
614+ @ Override
615+ public void visit (SetStatement set ) {
616+ throw new UnsupportedOperationException ("Not supported yet." ); //To change body of generated methods, choose Tools | Templates.
617+ }
550618}
0 commit comments