Skip to content

Commit e6f6a35

Browse files
committed
Move all delete rendering into the delete renderer
1 parent e29ce8f commit e6f6a35

File tree

2 files changed

+33
-28
lines changed

2 files changed

+33
-28
lines changed

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

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright 2016-2018 the original author or authors.
2+
* Copyright 2016-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -15,23 +15,16 @@
1515
*/
1616
package org.mybatis.dynamic.sql.delete.render;
1717

18-
import static org.mybatis.dynamic.sql.util.StringUtilities.spaceBefore;
19-
2018
import java.util.HashMap;
2119
import java.util.Map;
2220
import java.util.Objects;
23-
import java.util.Optional;
24-
25-
import org.mybatis.dynamic.sql.where.render.WhereClauseProvider;
2621

2722
public class DefaultDeleteStatementProvider implements DeleteStatementProvider {
28-
private String tableName;
29-
private Optional<String> whereClause;
23+
private String deleteStatement;
3024
private Map<String, Object> parameters;
3125

3226
private DefaultDeleteStatementProvider(Builder builder) {
33-
tableName = Objects.requireNonNull(builder.tableName);
34-
whereClause = Optional.ofNullable(builder.whereClause);
27+
deleteStatement = Objects.requireNonNull(builder.deleteStatement);
3528
parameters = Objects.requireNonNull(builder.parameters);
3629
}
3730

@@ -42,30 +35,24 @@ public Map<String, Object> getParameters() {
4235

4336
@Override
4437
public String getDeleteStatement() {
45-
return "delete from" //$NON-NLS-1$
46-
+ spaceBefore(tableName)
47-
+ spaceBefore(whereClause);
38+
return deleteStatement;
4839
}
4940

50-
public static Builder withTableName(String tableName) {
51-
return new Builder().withTableName(tableName);
41+
public static Builder withDeleteStatement(String deleteStatement) {
42+
return new Builder().withDeleteStatement(deleteStatement);
5243
}
5344

5445
public static class Builder {
55-
private String tableName;
56-
private String whereClause;
46+
private String deleteStatement;
5747
private Map<String, Object> parameters = new HashMap<>();
5848

59-
public Builder withTableName(String tableName) {
60-
this.tableName = tableName;
49+
public Builder withDeleteStatement(String deleteStatement) {
50+
this.deleteStatement = deleteStatement;
6151
return this;
6252
}
6353

64-
public Builder withWhereClause(Optional<WhereClauseProvider> whereClauseProvider) {
65-
whereClauseProvider.ifPresent(wcp -> {
66-
whereClause = wcp.getWhereClause();
67-
parameters.putAll(wcp.getParameters());
68-
});
54+
public Builder withParameters(Map<String, Object> parameters) {
55+
this.parameters.putAll(parameters);
6956
return this;
7057
}
7158

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

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* Copyright 2016-2018 the original author or authors.
2+
* Copyright 2016-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -15,6 +15,10 @@
1515
*/
1616
package org.mybatis.dynamic.sql.delete.render;
1717

18+
import static org.mybatis.dynamic.sql.util.StringUtilities.spaceBefore;
19+
20+
import java.util.Collections;
21+
import java.util.Map;
1822
import java.util.Objects;
1923
import java.util.Optional;
2024
import java.util.concurrent.atomic.AtomicInteger;
@@ -36,11 +40,13 @@ private DeleteRenderer(Builder builder) {
3640
}
3741

3842
public DeleteStatementProvider render() {
39-
return DefaultDeleteStatementProvider.withTableName(deleteModel.table().name())
40-
.withWhereClause(deleteModel.whereModel().flatMap(this::renderWhereClause))
43+
Optional<WhereClauseProvider> whereClause = deleteModel.whereModel().flatMap(this::renderWhereClause);
44+
45+
return DefaultDeleteStatementProvider.withDeleteStatement(calculateDeleteStatement(whereClause))
46+
.withParameters(calculateParameters(whereClause))
4147
.build();
4248
}
43-
49+
4450
private Optional<WhereClauseProvider> renderWhereClause(WhereModel whereModel) {
4551
return WhereRenderer.withWhereModel(whereModel)
4652
.withRenderingStrategy(renderingStrategy)
@@ -50,6 +56,18 @@ private Optional<WhereClauseProvider> renderWhereClause(WhereModel whereModel) {
5056
.render();
5157
}
5258

59+
private String calculateDeleteStatement(Optional<WhereClauseProvider> whereClause) {
60+
return "delete from" //$NON-NLS-1$
61+
+ spaceBefore(deleteModel.table().name())
62+
+ spaceBefore(whereClause.map(WhereClauseProvider::getWhereClause));
63+
}
64+
65+
private Map<String, Object> calculateParameters(Optional<WhereClauseProvider> whereClause) {
66+
return whereClause
67+
.map(WhereClauseProvider::getParameters)
68+
.orElse(Collections.emptyMap());
69+
}
70+
5371
public static Builder withDeleteModel(DeleteModel deleteModel) {
5472
return new Builder().withDeleteModel(deleteModel);
5573
}

0 commit comments

Comments
 (0)