Skip to content

Commit 131a988

Browse files
feat: Visitors return Objects
BREAKING CHANGE: New signatures for all Visitor interfaces Signed-off-by: Andreas Reichel <[email protected]>
1 parent c232812 commit 131a988

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+412
-374
lines changed

src/main/java/net/sf/jsqlparser/statement/Block.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ public void setSemicolonAfterEnd(boolean hasSemicolonAfterEnd) {
3131
}
3232

3333
@Override
34-
public void accept(StatementVisitor statementVisitor) {
35-
statementVisitor.visit(this);
34+
public <T> T accept(StatementVisitor<T> statementVisitor) {
35+
return statementVisitor.visit(this);
3636
}
3737

3838
public StringBuilder appendTo(StringBuilder builder) {

src/main/java/net/sf/jsqlparser/statement/Commit.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111

1212
public class Commit implements Statement {
1313
@Override
14-
public void accept(StatementVisitor statementVisitor) {
15-
statementVisitor.visit(this);
14+
public <T> T accept(StatementVisitor<T> statementVisitor) {
15+
return statementVisitor.visit(this);
1616
}
17-
17+
1818
@Override
1919
public String toString() {
2020
return "COMMIT";

src/main/java/net/sf/jsqlparser/statement/CreateFunctionalStatement.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ protected CreateFunctionalStatement(String kind) {
3232
protected CreateFunctionalStatement(String kind, List<String> functionDeclarationParts) {
3333
this(false, kind, functionDeclarationParts);
3434
}
35-
36-
protected CreateFunctionalStatement(boolean orReplace, String kind, List<String> functionDeclarationParts) {
35+
36+
protected CreateFunctionalStatement(boolean orReplace, String kind,
37+
List<String> functionDeclarationParts) {
3738
this.orReplace = orReplace;
3839
this.kind = kind;
3940
this.functionDeclarationParts = functionDeclarationParts;
@@ -56,14 +57,13 @@ public List<String> getFunctionDeclarationParts() {
5657
public String getKind() {
5758
return kind;
5859
}
59-
60+
6061
public void setOrReplace(boolean orReplace) {
6162
this.orReplace = orReplace;
6263
}
6364

6465
/**
65-
* @return a whitespace appended String with the declaration parts with some
66-
* minimal formatting.
66+
* @return a whitespace appended String with the declaration parts with some minimal formatting.
6767
*/
6868
public String formatDeclaration() {
6969
StringBuilder declaration = new StringBuilder();
@@ -85,30 +85,35 @@ public String formatDeclaration() {
8585
}
8686

8787
@Override
88-
public void accept(StatementVisitor statementVisitor) {
89-
statementVisitor.visit(this);
88+
public <T> T accept(StatementVisitor<T> statementVisitor) {
89+
return statementVisitor.visit(this);
9090
}
9191

9292
@Override
9393
public String toString() {
94-
return "CREATE "
95-
+ (orReplace?"OR REPLACE ":"")
94+
return "CREATE "
95+
+ (orReplace ? "OR REPLACE " : "")
9696
+ kind + " " + formatDeclaration();
9797
}
9898

99-
public CreateFunctionalStatement withFunctionDeclarationParts(List<String> functionDeclarationParts) {
99+
public CreateFunctionalStatement withFunctionDeclarationParts(
100+
List<String> functionDeclarationParts) {
100101
this.setFunctionDeclarationParts(functionDeclarationParts);
101102
return this;
102103
}
103104

104-
public CreateFunctionalStatement addFunctionDeclarationParts(String... functionDeclarationParts) {
105-
List<String> collection = Optional.ofNullable(getFunctionDeclarationParts()).orElseGet(ArrayList::new);
105+
public CreateFunctionalStatement addFunctionDeclarationParts(
106+
String... functionDeclarationParts) {
107+
List<String> collection =
108+
Optional.ofNullable(getFunctionDeclarationParts()).orElseGet(ArrayList::new);
106109
Collections.addAll(collection, functionDeclarationParts);
107110
return this.withFunctionDeclarationParts(collection);
108111
}
109112

110-
public CreateFunctionalStatement addFunctionDeclarationParts(Collection<String> functionDeclarationParts) {
111-
List<String> collection = Optional.ofNullable(getFunctionDeclarationParts()).orElseGet(ArrayList::new);
113+
public CreateFunctionalStatement addFunctionDeclarationParts(
114+
Collection<String> functionDeclarationParts) {
115+
List<String> collection =
116+
Optional.ofNullable(getFunctionDeclarationParts()).orElseGet(ArrayList::new);
112117
collection.addAll(functionDeclarationParts);
113118
return this.withFunctionDeclarationParts(collection);
114119
}

src/main/java/net/sf/jsqlparser/statement/DeclareStatement.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ public final class DeclareStatement implements Statement {
2828
private List<TypeDefExpr> typeDefExprList = new ArrayList<>();
2929
private List<ColumnDefinition> columnDefinitions = new ArrayList<>();
3030

31-
public DeclareStatement() {
32-
}
31+
public DeclareStatement() {}
3332

3433
public void setUserVariable(UserVariable userVariable) {
3534
this.userVariable = userVariable;
@@ -67,18 +66,22 @@ public void addType(ColDataType colDataType, Expression defaultExpr) {
6766
addTypeDefExprList(new TypeDefExpr(colDataType, defaultExpr));
6867
}
6968

70-
public void addType(UserVariable userVariable, ColDataType colDataType, Expression defaultExpr) {
69+
public void addType(UserVariable userVariable, ColDataType colDataType,
70+
Expression defaultExpr) {
7171
addTypeDefExprList(new TypeDefExpr(userVariable, colDataType, defaultExpr));
7272
}
7373

7474
public DeclareStatement addTypeDefExprList(TypeDefExpr... typeDefExpressions) {
75-
List<TypeDefExpr> collection = Optional.ofNullable(getTypeDefExprList()).orElseGet(ArrayList::new);
75+
List<TypeDefExpr> collection =
76+
Optional.ofNullable(getTypeDefExprList()).orElseGet(ArrayList::new);
7677
Collections.addAll(collection, typeDefExpressions);
7778
return this.withTypeDefExprList(collection);
7879
}
7980

80-
public DeclareStatement addTypeDefExprList(Collection<? extends TypeDefExpr> typeDefExpressions) {
81-
List<TypeDefExpr> collection = Optional.ofNullable(getTypeDefExprList()).orElseGet(ArrayList::new);
81+
public DeclareStatement addTypeDefExprList(
82+
Collection<? extends TypeDefExpr> typeDefExpressions) {
83+
List<TypeDefExpr> collection =
84+
Optional.ofNullable(getTypeDefExprList()).orElseGet(ArrayList::new);
8285
collection.addAll(typeDefExpressions);
8386
return this.withTypeDefExprList(collection);
8487
}
@@ -93,7 +96,7 @@ public void setTypeDefExprList(List<TypeDefExpr> expr) {
9396
}
9497

9598
public List<TypeDefExpr> getTypeDefExprList() {
96-
return this.typeDefExprList ;
99+
return this.typeDefExprList;
97100
}
98101

99102
public void addColumnDefinition(ColumnDefinition colDef) {
@@ -153,8 +156,8 @@ public String toString() {
153156
}
154157

155158
@Override
156-
public void accept(StatementVisitor statementVisitor) {
157-
statementVisitor.visit(this);
159+
public <T> T accept(StatementVisitor<T> statementVisitor) {
160+
return statementVisitor.visit(this);
158161
}
159162

160163
public DeclareStatement withUserVariable(UserVariable userVariable) {
@@ -178,14 +181,17 @@ public DeclareStatement withColumnDefinitions(List<ColumnDefinition> columnDefin
178181
}
179182

180183
public DeclareStatement addColumnDefinitions(ColumnDefinition... statements) {
181-
List<ColumnDefinition> collection = Optional.ofNullable(getColumnDefinitions()).orElseGet(ArrayList::new);
184+
List<ColumnDefinition> collection =
185+
Optional.ofNullable(getColumnDefinitions()).orElseGet(ArrayList::new);
182186
Collections.addAll(collection, statements);
183187
return this.withColumnDefinitions(collection);
184188
}
185189

186190

187-
public DeclareStatement addColumnDefinitions(Collection<? extends ColumnDefinition> columnDefinitions) {
188-
List<ColumnDefinition> collection = Optional.ofNullable(getColumnDefinitions()).orElseGet(ArrayList::new);
191+
public DeclareStatement addColumnDefinitions(
192+
Collection<? extends ColumnDefinition> columnDefinitions) {
193+
List<ColumnDefinition> collection =
194+
Optional.ofNullable(getColumnDefinitions()).orElseGet(ArrayList::new);
189195
collection.addAll(columnDefinitions);
190196
return this.withColumnDefinitions(collection);
191197
}
@@ -200,7 +206,8 @@ public TypeDefExpr(ColDataType colDataType, Expression defaultExpr) {
200206
this(null, colDataType, defaultExpr);
201207
}
202208

203-
public TypeDefExpr(UserVariable userVariable, ColDataType colDataType, Expression defaultExpr) {
209+
public TypeDefExpr(UserVariable userVariable, ColDataType colDataType,
210+
Expression defaultExpr) {
204211
this.userVariable = userVariable;
205212
this.colDataType = colDataType;
206213
this.defaultExpr = defaultExpr;

src/main/java/net/sf/jsqlparser/statement/DescribeStatement.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ public String toString() {
3838
}
3939

4040
@Override
41-
public void accept(StatementVisitor statementVisitor) {
42-
statementVisitor.visit(this);
41+
public <T> T accept(StatementVisitor<T> statementVisitor) {
42+
return statementVisitor.visit(this);
4343
}
4444

4545
public DescribeStatement withTable(Table table) {

src/main/java/net/sf/jsqlparser/statement/ExplainStatement.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ public String toString() {
9797
}
9898

9999
@Override
100-
public void accept(StatementVisitor statementVisitor) {
101-
statementVisitor.visit(this);
100+
public <T> T accept(StatementVisitor<T> statementVisitor) {
101+
return statementVisitor.visit(this);
102102
}
103103

104104
public enum OptionType {

src/main/java/net/sf/jsqlparser/statement/IfElseStatement.java

Lines changed: 65 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -18,70 +18,71 @@
1818
* @author <a href="mailto:[email protected]">Andreas Reichel</a>
1919
*/
2020
public class IfElseStatement implements Statement {
21-
private final Expression condition;
22-
private final Statement ifStatement;
23-
private Statement elseStatement;
24-
private boolean usingSemicolonForIfStatement = false;
25-
private boolean usingSemicolonForElseStatement = false;
26-
27-
public IfElseStatement(Expression condition, Statement ifStatement) {
28-
this.condition =
29-
Objects.requireNonNull(condition, "The CONDITION of the IfElseStatement must not be null.");
30-
this.ifStatement = Objects.requireNonNull(ifStatement,
31-
"The IF Statement of the IfElseStatement must not be null.");
32-
}
33-
34-
public Expression getCondition() {
35-
return condition;
36-
}
37-
38-
public Statement getIfStatement() {
39-
return ifStatement;
40-
}
41-
42-
public void setElseStatement(Statement elseStatement) {
43-
this.elseStatement = elseStatement;
44-
}
45-
46-
public Statement getElseStatement() {
47-
return elseStatement;
48-
}
49-
50-
public void setUsingSemicolonForElseStatement(boolean usingSemicolonForElseStatement) {
51-
this.usingSemicolonForElseStatement = usingSemicolonForElseStatement;
52-
}
53-
54-
public boolean isUsingSemicolonForElseStatement() {
55-
return usingSemicolonForElseStatement;
56-
}
57-
58-
public void setUsingSemicolonForIfStatement(boolean usingSemicolonForIfStatement) {
59-
this.usingSemicolonForIfStatement = usingSemicolonForIfStatement;
60-
}
61-
62-
public boolean isUsingSemicolonForIfStatement() {
63-
return usingSemicolonForIfStatement;
64-
}
65-
66-
public StringBuilder appendTo(StringBuilder builder) {
67-
builder.append("IF ").append(condition).append(" ").append(ifStatement)
68-
.append(usingSemicolonForIfStatement ? ";" : "");
69-
70-
if (elseStatement != null) {
71-
builder.append(" ELSE ").append(elseStatement)
72-
.append(usingSemicolonForElseStatement ? ";" : "");
21+
private final Expression condition;
22+
private final Statement ifStatement;
23+
private Statement elseStatement;
24+
private boolean usingSemicolonForIfStatement = false;
25+
private boolean usingSemicolonForElseStatement = false;
26+
27+
public IfElseStatement(Expression condition, Statement ifStatement) {
28+
this.condition =
29+
Objects.requireNonNull(condition,
30+
"The CONDITION of the IfElseStatement must not be null.");
31+
this.ifStatement = Objects.requireNonNull(ifStatement,
32+
"The IF Statement of the IfElseStatement must not be null.");
33+
}
34+
35+
public Expression getCondition() {
36+
return condition;
37+
}
38+
39+
public Statement getIfStatement() {
40+
return ifStatement;
41+
}
42+
43+
public void setElseStatement(Statement elseStatement) {
44+
this.elseStatement = elseStatement;
45+
}
46+
47+
public Statement getElseStatement() {
48+
return elseStatement;
49+
}
50+
51+
public void setUsingSemicolonForElseStatement(boolean usingSemicolonForElseStatement) {
52+
this.usingSemicolonForElseStatement = usingSemicolonForElseStatement;
53+
}
54+
55+
public boolean isUsingSemicolonForElseStatement() {
56+
return usingSemicolonForElseStatement;
57+
}
58+
59+
public void setUsingSemicolonForIfStatement(boolean usingSemicolonForIfStatement) {
60+
this.usingSemicolonForIfStatement = usingSemicolonForIfStatement;
61+
}
62+
63+
public boolean isUsingSemicolonForIfStatement() {
64+
return usingSemicolonForIfStatement;
65+
}
66+
67+
public StringBuilder appendTo(StringBuilder builder) {
68+
builder.append("IF ").append(condition).append(" ").append(ifStatement)
69+
.append(usingSemicolonForIfStatement ? ";" : "");
70+
71+
if (elseStatement != null) {
72+
builder.append(" ELSE ").append(elseStatement)
73+
.append(usingSemicolonForElseStatement ? ";" : "");
74+
}
75+
return builder;
76+
}
77+
78+
@Override
79+
public String toString() {
80+
return appendTo(new StringBuilder()).toString();
81+
}
82+
83+
@Override
84+
public <T> T accept(StatementVisitor<T> statementVisitor) {
85+
return statementVisitor.visit(this);
7386
}
74-
return builder;
75-
}
76-
77-
@Override
78-
public String toString() {
79-
return appendTo(new StringBuilder()).toString();
80-
}
81-
82-
@Override
83-
public void accept(StatementVisitor statementVisitor) {
84-
statementVisitor.visit(this);
85-
}
8687

8788
}

0 commit comments

Comments
 (0)