Skip to content

Commit d5ea59c

Browse files
committed
More consistent use of builders and Optionals
1 parent e7a19ba commit d5ea59c

18 files changed

+284
-175
lines changed

src/main/java/org/mybatis/dynamic/sql/delete/DeleteModel.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ public Optional<WhereModel> whereModel() {
4242
}
4343

4444
public DeleteSupport render(RenderingStrategy renderingStrategy) {
45-
return DeleteRenderer.of(this).render(renderingStrategy);
45+
return new DeleteRenderer.Builder()
46+
.withDeleteModer(this)
47+
.withRenderingStrategy(renderingStrategy)
48+
.build()
49+
.render();
4650
}
4751

4852
public static class Builder {

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

+28-21
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import java.util.Objects;
1919
import java.util.concurrent.atomic.AtomicInteger;
20-
import java.util.function.Consumer;
2120

2221
import org.mybatis.dynamic.sql.delete.DeleteModel;
2322
import org.mybatis.dynamic.sql.render.RenderingStrategy;
@@ -28,38 +27,46 @@
2827

2928
public class DeleteRenderer {
3029
private DeleteModel deleteModel;
30+
private RenderingStrategy renderingStrategy;
3131

32-
private DeleteRenderer(DeleteModel deleteModel) {
33-
this.deleteModel = Objects.requireNonNull(deleteModel);
32+
private DeleteRenderer(Builder builder) {
33+
deleteModel = Objects.requireNonNull(builder.deleteModel);
34+
renderingStrategy = Objects.requireNonNull(builder.renderingStrategy);
3435
}
3536

36-
public DeleteSupport render(RenderingStrategy renderingStrategy) {
37-
DeleteSupport.Builder builder = new DeleteSupport.Builder()
38-
.withTableName(deleteModel.table().name());
39-
40-
deleteModel.whereModel().ifPresent(applyWhere(builder, renderingStrategy));
41-
42-
return builder.build();
43-
}
44-
45-
private Consumer<WhereModel> applyWhere(DeleteSupport.Builder builder, RenderingStrategy renderingStrategy) {
46-
return whereModel -> applyWhere(builder, renderingStrategy, whereModel);
37+
public DeleteSupport render() {
38+
return new DeleteSupport.Builder()
39+
.withTableName(deleteModel.table().name())
40+
.withWhereSupport(deleteModel.whereModel().map(this::renderWhereModel))
41+
.build();
4742
}
4843

49-
private void applyWhere(DeleteSupport.Builder builder, RenderingStrategy renderingStrategy, WhereModel whereModel) {
50-
WhereSupport whereSupport = new WhereRenderer.Builder()
44+
private WhereSupport renderWhereModel(WhereModel whereModel) {
45+
return new WhereRenderer.Builder()
5146
.withWhereModel(whereModel)
5247
.withRenderingStrategy(renderingStrategy)
5348
.withSequence(new AtomicInteger(1))
5449
.withTableAliasCalculator(TableAliasCalculator.empty())
5550
.build()
5651
.render();
57-
58-
builder.withWhereClause(whereSupport.getWhereClause());
59-
builder.withParameters(whereSupport.getParameters());
6052
}
6153

62-
public static DeleteRenderer of(DeleteModel deleteModel) {
63-
return new DeleteRenderer(deleteModel);
54+
public static class Builder {
55+
private DeleteModel deleteModel;
56+
private RenderingStrategy renderingStrategy;
57+
58+
public Builder withDeleteModer(DeleteModel deleteModel) {
59+
this.deleteModel = deleteModel;
60+
return this;
61+
}
62+
63+
public Builder withRenderingStrategy(RenderingStrategy renderingStrategy) {
64+
this.renderingStrategy = renderingStrategy;
65+
return this;
66+
}
67+
68+
public DeleteRenderer build() {
69+
return new DeleteRenderer(this);
70+
}
6471
}
6572
}

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

+7-10
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,22 @@
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;
2324
import java.util.Optional;
2425

2526
import org.mybatis.dynamic.sql.AbstractSqlSupport;
27+
import org.mybatis.dynamic.sql.where.render.WhereSupport;
2628

2729
public class DeleteSupport extends AbstractSqlSupport {
28-
2930
private Optional<String> whereClause;
3031
private Map<String, Object> parameters;
3132

3233
private DeleteSupport(Builder builder) {
3334
super(builder.tableName);
34-
whereClause = Optional.ofNullable(builder.whereClause);
35+
whereClause = Objects.requireNonNull(builder.whereClause);
3536
parameters = Objects.requireNonNull(builder.parameters);
3637
}
3738

@@ -47,21 +48,17 @@ public String getFullDeleteStatement() {
4748

4849
public static class Builder {
4950
private String tableName;
50-
private String whereClause;
51+
private Optional<String> whereClause = Optional.empty();
5152
private Map<String, Object> parameters = new HashMap<>();
5253

5354
public Builder withTableName(String tableName) {
5455
this.tableName = tableName;
5556
return this;
5657
}
5758

58-
public Builder withWhereClause(String whereClause) {
59-
this.whereClause = whereClause;
60-
return this;
61-
}
62-
63-
public Builder withParameters(Map<String, Object> parameters) {
64-
this.parameters.putAll(parameters);
59+
public Builder withWhereSupport(Optional<WhereSupport> whereSupport) {
60+
whereClause = whereSupport.map(WhereSupport::getWhereClause);
61+
parameters.putAll(whereSupport.map(WhereSupport::getParameters).orElse(Collections.emptyMap()));
6562
return this;
6663
}
6764

src/main/java/org/mybatis/dynamic/sql/insert/InsertBatchModel.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,11 @@ public SqlTable table() {
5252
}
5353

5454
public InsertBatchSupport<T> render(RenderingStrategy renderingStrategy) {
55-
return InsertBatchRenderer.of(this).render(renderingStrategy);
55+
return new InsertBatchRenderer.Builder<T>()
56+
.withInsertBatchModel(this)
57+
.withRenderingStrategy(renderingStrategy)
58+
.build()
59+
.render();
5660
}
5761

5862
public static class Builder<T> {

src/main/java/org/mybatis/dynamic/sql/insert/InsertModel.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ public SqlTable table() {
5151
}
5252

5353
public InsertSupport<T> render(RenderingStrategy renderingStrategy) {
54-
return InsertRenderer.of(this).render(renderingStrategy);
54+
return new InsertRenderer.Builder<T>()
55+
.withInsertModel(this)
56+
.withRenderingStrategy(renderingStrategy)
57+
.build()
58+
.render();
5559
}
5660

5761
public static class Builder<T> {

src/main/java/org/mybatis/dynamic/sql/insert/InsertSelectModel.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,11 @@ public <R> Optional<Stream<R>> mapColumns(Function<SqlColumn<?>, R> mapper) {
5252
}
5353

5454
public InsertSelectSupport render(RenderingStrategy renderingStrategy) {
55-
return InsertSelectRenderer.of(this).render(renderingStrategy);
55+
return new InsertSelectRenderer.Builder()
56+
.withInsertSelectModel(this)
57+
.withRenderingStrategy(renderingStrategy)
58+
.build()
59+
.render();
5660
}
5761

5862
public static class Builder {

src/main/java/org/mybatis/dynamic/sql/insert/render/InsertBatchRenderer.java

+23-6
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
public class InsertBatchRenderer<T> {
2626

2727
private InsertBatchModel<T> model;
28+
private RenderingStrategy renderingStrategy;
2829

29-
private InsertBatchRenderer(InsertBatchModel<T> model) {
30-
this.model = Objects.requireNonNull(model);
30+
private InsertBatchRenderer(Builder<T> builder) {
31+
model = Objects.requireNonNull(builder.model);
32+
renderingStrategy = Objects.requireNonNull(builder.renderingStrategy);
3133
}
3234

33-
public InsertBatchSupport<T> render(RenderingStrategy renderingStrategy) {
35+
public InsertBatchSupport<T> render() {
3436
ValuePhraseVisitor visitor = new ValuePhraseVisitor(renderingStrategy);
3537
FieldAndValueCollector<T> collector = model.mapColumnMappings(toFieldAndValue(visitor))
3638
.collect(FieldAndValueCollector.collect());
@@ -41,7 +43,7 @@ public InsertBatchSupport<T> render(RenderingStrategy renderingStrategy) {
4143
.withRecords(model.records())
4244
.build();
4345
}
44-
46+
4547
private Function<InsertMapping, FieldAndValue> toFieldAndValue(ValuePhraseVisitor visitor) {
4648
return insertMapping -> toFieldAndValue(visitor, insertMapping);
4749
}
@@ -50,7 +52,22 @@ private FieldAndValue toFieldAndValue(ValuePhraseVisitor visitor, InsertMapping
5052
return insertMapping.accept(visitor);
5153
}
5254

53-
public static <T> InsertBatchRenderer<T> of(InsertBatchModel<T> model) {
54-
return new InsertBatchRenderer<>(model);
55+
public static class Builder<T> {
56+
private InsertBatchModel<T> model;
57+
private RenderingStrategy renderingStrategy;
58+
59+
public Builder<T> withInsertBatchModel(InsertBatchModel<T> model) {
60+
this.model = model;
61+
return this;
62+
}
63+
64+
public Builder<T> withRenderingStrategy(RenderingStrategy renderingStrategy) {
65+
this.renderingStrategy = renderingStrategy;
66+
return this;
67+
}
68+
69+
public InsertBatchRenderer<T> build() {
70+
return new InsertBatchRenderer<>(this);
71+
}
5572
}
5673
}

src/main/java/org/mybatis/dynamic/sql/insert/render/InsertRenderer.java

+22-5
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,14 @@
2525
public class InsertRenderer<T> {
2626

2727
private InsertModel<T> model;
28+
private RenderingStrategy renderingStrategy;
2829

29-
private InsertRenderer(InsertModel<T> model) {
30-
this.model = Objects.requireNonNull(model);
30+
private InsertRenderer(Builder<T> builder) {
31+
model = Objects.requireNonNull(builder.model);
32+
renderingStrategy = Objects.requireNonNull(builder.renderingStrategy);
3133
}
3234

33-
public InsertSupport<T> render(RenderingStrategy renderingStrategy) {
35+
public InsertSupport<T> render() {
3436
ValuePhraseVisitor visitor = new ValuePhraseVisitor(renderingStrategy);
3537
FieldAndValueCollector<T> collector = model.mapColumnMappings(toFieldAndValue(visitor))
3638
.collect(FieldAndValueCollector.collect());
@@ -50,7 +52,22 @@ private FieldAndValue toFieldAndValue(ValuePhraseVisitor visitor, InsertMapping
5052
return insertMapping.accept(visitor);
5153
}
5254

53-
public static <T> InsertRenderer<T> of(InsertModel<T> model) {
54-
return new InsertRenderer<>(model);
55+
public static class Builder<T> {
56+
private InsertModel<T> model;
57+
private RenderingStrategy renderingStrategy;
58+
59+
public Builder<T> withInsertModel(InsertModel<T> model) {
60+
this.model = model;
61+
return this;
62+
}
63+
64+
public Builder<T> withRenderingStrategy(RenderingStrategy renderingStrategy) {
65+
this.renderingStrategy = renderingStrategy;
66+
return this;
67+
}
68+
69+
public InsertRenderer<T> build() {
70+
return new InsertRenderer<>(this);
71+
}
5572
}
5673
}

src/main/java/org/mybatis/dynamic/sql/insert/render/InsertSelectRenderer.java

+22-5
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@
2828
public class InsertSelectRenderer {
2929

3030
private InsertSelectModel model;
31+
private RenderingStrategy renderingStrategy;
3132

32-
private InsertSelectRenderer(InsertSelectModel model) {
33-
this.model = Objects.requireNonNull(model);
33+
private InsertSelectRenderer(Builder builder) {
34+
model = Objects.requireNonNull(builder.model);
35+
renderingStrategy = Objects.requireNonNull(builder.renderingStrategy);
3436
}
3537

36-
public InsertSelectSupport render(RenderingStrategy renderingStrategy) {
38+
public InsertSelectSupport render() {
3739
SelectSupport selectSupport = model.selectModel().render(renderingStrategy);
3840

3941
return new InsertSelectSupport.Builder()
@@ -53,7 +55,22 @@ private String calculateColumnsPhrase(Stream<String> ss) {
5355
return ss.collect(Collectors.joining(", ", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
5456
}
5557

56-
public static InsertSelectRenderer of(InsertSelectModel model) {
57-
return new InsertSelectRenderer(model);
58+
public static class Builder {
59+
private InsertSelectModel model;
60+
private RenderingStrategy renderingStrategy;
61+
62+
public Builder withInsertSelectModel(InsertSelectModel model) {
63+
this.model = model;
64+
return this;
65+
}
66+
67+
public Builder withRenderingStrategy(RenderingStrategy renderingStrategy) {
68+
this.renderingStrategy = renderingStrategy;
69+
return this;
70+
}
71+
72+
public InsertSelectRenderer build() {
73+
return new InsertSelectRenderer(this);
74+
}
5875
}
5976
}

src/main/java/org/mybatis/dynamic/sql/select/SelectModel.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ public Optional<OrderByModel> orderByModel() {
4444
}
4545

4646
public SelectSupport render(RenderingStrategy renderingStrategy) {
47-
return SelectRenderer.of(this).render(renderingStrategy);
47+
return new SelectRenderer.Builder()
48+
.withSelectModel(this)
49+
.withRenderingStrategy(renderingStrategy)
50+
.build()
51+
.render();
4852
}
4953

5054
public static class Builder {

0 commit comments

Comments
 (0)