Skip to content

Commit 375102f

Browse files
committed
Remove use of Optional.ifPresent
1 parent 7f4f0c8 commit 375102f

File tree

4 files changed

+41
-48
lines changed

4 files changed

+41
-48
lines changed

src/main/java/org/mybatis/dynamic/sql/delete/render/DeleteStatement.java

+8-15
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import static org.mybatis.dynamic.sql.util.StringUtilities.spaceBefore;
1919

20-
import java.util.HashMap;
20+
import java.util.Collections;
2121
import java.util.Map;
2222
import java.util.Objects;
2323
import java.util.Optional;
@@ -26,45 +26,38 @@
2626

2727
public class DeleteStatement {
2828
private String tableName;
29-
private Optional<String> whereClause;
30-
private Map<String, Object> parameters;
29+
private Optional<WhereClauseAndParameters> whereClauseAndParameters;
3130

3231
private DeleteStatement(Builder builder) {
3332
tableName = Objects.requireNonNull(builder.tableName);
34-
whereClause = Objects.requireNonNull(builder.whereClause);
35-
parameters = Objects.requireNonNull(builder.parameters);
33+
whereClauseAndParameters = Objects.requireNonNull(builder.whereClauseAndParameters);
3634
}
3735

3836
public Map<String, Object> getParameters() {
39-
return parameters;
37+
return whereClauseAndParameters.map(WhereClauseAndParameters::parameters)
38+
.orElse(Collections.emptyMap());
4039
}
4140

4241
public String getDeleteStatement() {
4342
return "delete from" //$NON-NLS-1$
4443
+ spaceBefore(tableName)
45-
+ spaceBefore(whereClause);
44+
+ spaceBefore(whereClauseAndParameters.map(WhereClauseAndParameters::whereClause));
4645
}
4746

4847
public static class Builder {
4948
private String tableName;
50-
private Optional<String> whereClause = Optional.empty();
51-
private Map<String, Object> parameters = new HashMap<>();
49+
private Optional<WhereClauseAndParameters> whereClauseAndParameters = Optional.empty();
5250

5351
public Builder withTableName(String tableName) {
5452
this.tableName = tableName;
5553
return this;
5654
}
5755

5856
public Builder withWhereClause(Optional<WhereClauseAndParameters> whereClauseAndParameters) {
59-
whereClauseAndParameters.ifPresent(this::handleWhereClause);
57+
this.whereClauseAndParameters = whereClauseAndParameters;
6058
return this;
6159
}
6260

63-
private void handleWhereClause(WhereClauseAndParameters whereClauseAndParameters) {
64-
this.whereClause = Optional.of(whereClauseAndParameters.whereClause());
65-
parameters.putAll(whereClauseAndParameters.parameters());
66-
}
67-
6861
public DeleteStatement build() {
6962
return new DeleteStatement(this);
7063
}

src/main/java/org/mybatis/dynamic/sql/select/render/QueryExpression.java

+8-20
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import static org.mybatis.dynamic.sql.util.StringUtilities.spaceAfter;
1919
import static org.mybatis.dynamic.sql.util.StringUtilities.spaceBefore;
2020

21-
import java.util.HashMap;
21+
import java.util.Collections;
2222
import java.util.Map;
2323
import java.util.Objects;
2424
import java.util.Optional;
@@ -30,8 +30,7 @@ public class QueryExpression {
3030
private String tableName;
3131
private Optional<String> connector;
3232
private String columnList;
33-
private Optional<String> whereClause;
34-
private Map<String, Object> parameters;
33+
private Optional<WhereClauseAndParameters> whereClauseAndParameters;
3534
private boolean isDistinct;
3635
private Optional<String> joinClause;
3736
private Optional<String> groupByClause;
@@ -40,15 +39,15 @@ private QueryExpression(Builder builder) {
4039
tableName = Objects.requireNonNull(builder.tableName);
4140
connector = Objects.requireNonNull(builder.connector);
4241
columnList = Objects.requireNonNull(builder.columnList);
43-
whereClause = Objects.requireNonNull(builder.whereClause);
44-
parameters = Objects.requireNonNull(builder.parameters);
42+
whereClauseAndParameters = Objects.requireNonNull(builder.whereClauseAndParameters);
4543
isDistinct = builder.isDistinct;
4644
joinClause = Objects.requireNonNull(builder.joinClause);
4745
groupByClause = Objects.requireNonNull(builder.groupByClause);
4846
}
4947

5048
public Map<String, Object> parameters() {
51-
return parameters;
49+
return whereClauseAndParameters.map(WhereClauseAndParameters::parameters)
50+
.orElse(Collections.emptyMap());
5251
}
5352

5453
public String queryExpression() {
@@ -59,18 +58,17 @@ public String queryExpression() {
5958
+ " from " //$NON-NLS-1$
6059
+ tableName
6160
+ spaceBefore(joinClause)
62-
+ spaceBefore(whereClause)
61+
+ spaceBefore(whereClauseAndParameters.map(WhereClauseAndParameters::whereClause))
6362
+ spaceBefore(groupByClause);
6463
}
6564

6665
public static class Builder {
6766
private Optional<String> connector;
6867
private String tableName;
6968
private boolean isDistinct;
70-
private Map<String, Object> parameters = new HashMap<>();
7169
private String columnList;
7270
private Optional<String> joinClause = Optional.empty();
73-
private Optional<String> whereClause = Optional.empty();
71+
private Optional<WhereClauseAndParameters> whereClauseAndParameters = Optional.empty();
7472
private Optional<String> groupByClause = Optional.empty();
7573

7674
public Builder withConnector(Optional<String> connector) {
@@ -89,12 +87,7 @@ public Builder isDistinct(boolean isDistinct) {
8987
}
9088

9189
public Builder withWhereClause(Optional<WhereClauseAndParameters> whereClauseAndParameters) {
92-
whereClauseAndParameters.ifPresent(this::handleWhereClause);
93-
return this;
94-
}
95-
96-
public Builder withParameters(Map<String, Object> parameters) {
97-
this.parameters.putAll(parameters);
90+
this.whereClauseAndParameters = whereClauseAndParameters;
9891
return this;
9992
}
10093

@@ -113,11 +106,6 @@ public Builder withGroupByClause(Optional<String> groupByClause) {
113106
return this;
114107
}
115108

116-
private void handleWhereClause(WhereClauseAndParameters whereClauseAndParameters) {
117-
this.whereClause = Optional.of(whereClauseAndParameters.whereClause());
118-
parameters.putAll(whereClauseAndParameters.parameters());
119-
}
120-
121109
public QueryExpression build() {
122110
return new QueryExpression(this);
123111
}

src/main/java/org/mybatis/dynamic/sql/update/render/UpdateStatement.java

+9-10
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static org.mybatis.dynamic.sql.util.StringUtilities.spaceBefore;
1919

20+
import java.util.Collections;
2021
import java.util.HashMap;
2122
import java.util.Map;
2223
import java.util.Objects;
@@ -35,13 +36,16 @@ public class UpdateStatement {
3536
private String tableName;
3637
private String setClause;
3738
private Optional<String> whereClause;
38-
private Map<String, Object> parameters;
39+
private Map<String, Object> parameters = new HashMap<>();
3940

4041
private UpdateStatement(Builder builder) {
4142
tableName = Objects.requireNonNull(builder.tableName);
4243
setClause = Objects.requireNonNull(builder.setClause);
43-
whereClause = Objects.requireNonNull(builder.whereClause);
44-
parameters = Objects.requireNonNull(builder.parameters);
44+
whereClause = builder.whereClauseAndParameters.map(WhereClauseAndParameters::whereClause);
45+
parameters.putAll(builder.parameters);
46+
parameters.putAll(builder.whereClauseAndParameters
47+
.map(WhereClauseAndParameters::parameters)
48+
.orElse(Collections.emptyMap()));
4549
}
4650

4751
public Map<String, Object> getParameters() {
@@ -58,7 +62,7 @@ public String getUpdateStatement() {
5862
public static class Builder {
5963
private String tableName;
6064
private String setClause;
61-
private Optional<String> whereClause = Optional.empty();
65+
private Optional<WhereClauseAndParameters> whereClauseAndParameters = Optional.empty();
6266
private Map<String, Object> parameters = new HashMap<>();
6367

6468
public Builder withTableName(String tableName) {
@@ -72,7 +76,7 @@ public Builder withSetClause(String setClause) {
7276
}
7377

7478
public Builder withWhereClause(Optional<WhereClauseAndParameters> whereClauseAndParameters) {
75-
whereClauseAndParameters.ifPresent(this::handleWhereClause);
79+
this.whereClauseAndParameters = whereClauseAndParameters;
7680
return this;
7781
}
7882

@@ -81,11 +85,6 @@ public Builder withParameters(Map<String, Object> parameters) {
8185
return this;
8286
}
8387

84-
private void handleWhereClause(WhereClauseAndParameters whereClauseAndParameters) {
85-
this.whereClause = Optional.of(whereClauseAndParameters.whereClause());
86-
parameters.putAll(whereClauseAndParameters.parameters());
87-
}
88-
8988
public UpdateStatement build() {
9089
return new UpdateStatement(this);
9190
}

src/test/java/org/mybatis/dynamic/sql/select/render/QueryExpressionCollectorTest.java

+16-3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.junit.jupiter.api.Test;
2727
import org.junit.platform.runner.JUnitPlatform;
2828
import org.junit.runner.RunWith;
29+
import org.mybatis.dynamic.sql.where.render.WhereClauseAndParameters;
2930

3031
@RunWith(JUnitPlatform.class)
3132
public class QueryExpressionCollectorTest {
@@ -36,29 +37,41 @@ public void testQueryExpressionCollectorMerge() {
3637

3738
Map<String, Object> parms1 = new HashMap<>();
3839
parms1.put("p1", 1);
40+
41+
WhereClauseAndParameters wcp1 = new WhereClauseAndParameters.Builder()
42+
.withWhereClause("where fred = ?")
43+
.withParameters(parms1)
44+
.build();
45+
3946
QueryExpression qe1 = new QueryExpression.Builder()
4047
.withConnector(Optional.empty())
4148
.withColumnList("foo")
4249
.withTableName("bar")
43-
.withParameters(parms1)
50+
.withWhereClause(Optional.of(wcp1))
4451
.build();
4552
queryExpressions.add(qe1);
4653

4754
Map<String, Object> parms2 = new HashMap<>();
4855
parms2.put("p2", 2);
56+
57+
WhereClauseAndParameters wcp2 = new WhereClauseAndParameters.Builder()
58+
.withWhereClause("where betty = ?")
59+
.withParameters(parms2)
60+
.build();
61+
4962
QueryExpression qe2 = new QueryExpression.Builder()
5063
.withConnector(Optional.of("union"))
5164
.withColumnList("bar")
5265
.withTableName("foo")
53-
.withParameters(parms2)
66+
.withWhereClause(Optional.of(wcp2))
5467
.build();
5568
queryExpressions.add(qe2);
5669

5770
// parallelStream should trigger the merge
5871
QueryExpressionCollector collector = queryExpressions.parallelStream()
5972
.collect(QueryExpressionCollector.collect());
6073

61-
assertThat(collector.queryExpression()).isEqualTo("select foo from bar union select bar from foo");
74+
assertThat(collector.queryExpression()).isEqualTo("select foo from bar where fred = ? union select bar from foo where betty = ?");
6275
assertThat(collector.parameters().size()).isEqualTo(2);
6376
assertThat(collector.parameters().get("p1")).isEqualTo(1);
6477
assertThat(collector.parameters().get("p2")).isEqualTo(2);

0 commit comments

Comments
 (0)