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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy