Skip to content

Commit 9d680a6

Browse files
chrychengwumpz
authored andcommitted
Fix issue #442 (#451)
* Fix issue #442 for delete statements * Fix issue #442 for insert statements * Mock only when necessary E.g., interfaces, behavior needs to be verified, etc. * Prefer the first style of testing As discussed in issue #442 * Fix issue #442 for replace statements * Improve readability of issue #442 tests * Inject SelectDeParser as well As discussed in issue #442. * Fix issue #442 for select statements * Fix issue #442 for update statements * Fix issue #442 for execute statements * Fix issue #442 for set statements * Fix PR code review issue https://www.codacy.com/app/wumpz/JSqlParser/file/6682733346/issues/source?bid=4162857&fileBranchId=4580866#l48 * Skip PMD check for asserts in tests using Mockito As agreed upon in the discussion in PR #451. * Use correct PMD check name
1 parent 275fbbe commit 9d680a6

File tree

3 files changed

+344
-15
lines changed

3 files changed

+344
-15
lines changed

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@
3737
<version>4.12</version>
3838
<scope>test</scope>
3939
</dependency>
40+
<dependency>
41+
<groupId>org.hamcrest</groupId>
42+
<artifactId>hamcrest-library</artifactId>
43+
<version>1.3</version>
44+
<scope>test</scope>
45+
</dependency>
4046
<dependency>
4147
<groupId>org.mockito</groupId>
4248
<artifactId>mockito-core</artifactId>

src/main/java/net/sf/jsqlparser/util/deparser/StatementDeParser.java

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
package net.sf.jsqlparser.util.deparser;
2323

2424
import java.util.Iterator;
25-
import net.sf.jsqlparser.statement.SetStatement;
2625

26+
import net.sf.jsqlparser.statement.SetStatement;
2727
import net.sf.jsqlparser.statement.StatementVisitor;
2828
import net.sf.jsqlparser.statement.Statements;
2929
import net.sf.jsqlparser.statement.alter.Alter;
@@ -43,10 +43,19 @@
4343
import net.sf.jsqlparser.statement.update.Update;
4444

4545
public 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

Comments
 (0)