Skip to content

Commit 79d66e5

Browse files
committed
Remove another useless custom collector
1 parent b538ca2 commit 79d66e5

File tree

3 files changed

+35
-117
lines changed

3 files changed

+35
-117
lines changed

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

Lines changed: 0 additions & 73 deletions
This file was deleted.

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

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@
1717

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

20+
import java.util.HashMap;
21+
import java.util.List;
22+
import java.util.Map;
2023
import java.util.Objects;
2124
import java.util.Optional;
2225
import java.util.function.Function;
26+
import java.util.stream.Collectors;
2327

2428
import org.mybatis.dynamic.sql.insert.GeneralInsertModel;
2529
import org.mybatis.dynamic.sql.render.RenderingStrategy;
@@ -37,19 +41,19 @@ private GeneralInsertRenderer(Builder builder) {
3741

3842
public GeneralInsertStatementProvider render() {
3943
GeneralInsertValuePhraseVisitor visitor = new GeneralInsertValuePhraseVisitor(renderingStrategy);
40-
FieldAndValueAndParametersCollector collector = model.mapColumnMappings(toFieldAndValue(visitor))
41-
.collect(FieldAndValueAndParametersCollector.collect());
44+
List<Optional<FieldAndValueAndParameters>> fieldsAndValues = model.mapColumnMappings(toFieldAndValue(visitor))
45+
.collect(Collectors.toList());
4246

43-
return DefaultGeneralInsertStatementProvider.withInsertStatement(calculateInsertStatement(collector))
44-
.withParameters(collector.parameters())
47+
return DefaultGeneralInsertStatementProvider.withInsertStatement(calculateInsertStatement(fieldsAndValues))
48+
.withParameters(calculateParameters(fieldsAndValues))
4549
.build();
4650
}
4751

48-
private String calculateInsertStatement(FieldAndValueAndParametersCollector collector) {
52+
private String calculateInsertStatement(List<Optional<FieldAndValueAndParameters>> fieldsAndValues) {
4953
return "insert into" //$NON-NLS-1$
5054
+ spaceBefore(model.table().tableNameAtRuntime())
51-
+ spaceBefore(collector.columnsPhrase())
52-
+ spaceBefore(collector.valuesPhrase());
55+
+ spaceBefore(calculateColumnsPhrase(fieldsAndValues))
56+
+ spaceBefore(calculateValuesPhrase(fieldsAndValues));
5357
}
5458

5559
private Function<AbstractColumnMapping, Optional<FieldAndValueAndParameters>> toFieldAndValue(
@@ -62,6 +66,30 @@ private Optional<FieldAndValueAndParameters> toFieldAndValue(GeneralInsertValueP
6266
return insertMapping.accept(visitor);
6367
}
6468

69+
private String calculateColumnsPhrase(List<Optional<FieldAndValueAndParameters>> fieldsAndValues) {
70+
return fieldsAndValues.stream()
71+
.filter(Optional::isPresent)
72+
.map(Optional::get)
73+
.map(FieldAndValueAndParameters::fieldName)
74+
.collect(Collectors.joining(", ", "(", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
75+
}
76+
77+
private String calculateValuesPhrase(List<Optional<FieldAndValueAndParameters>> fieldsAndValues) {
78+
return fieldsAndValues.stream()
79+
.filter(Optional::isPresent)
80+
.map(Optional::get)
81+
.map(FieldAndValueAndParameters::valuePhrase)
82+
.collect(Collectors.joining(", ", "values (", ")")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
83+
}
84+
85+
private Map<String, Object> calculateParameters(List<Optional<FieldAndValueAndParameters>> fieldsAndValues) {
86+
return fieldsAndValues.stream()
87+
.filter(Optional::isPresent)
88+
.map(Optional::get)
89+
.map(FieldAndValueAndParameters::parameters)
90+
.collect(HashMap::new, HashMap::putAll, HashMap::putAll);
91+
}
92+
6593
public static Builder withInsertModel(GeneralInsertModel model) {
6694
return new Builder().withInsertModel(model);
6795
}

src/test/java/org/mybatis/dynamic/sql/insert/InsertStatementTest.java

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,12 @@
2222
import java.sql.JDBCType;
2323
import java.util.ArrayList;
2424
import java.util.List;
25-
import java.util.Optional;
2625
import java.util.stream.Collector;
2726

2827
import org.junit.jupiter.api.Test;
2928
import org.mybatis.dynamic.sql.SqlColumn;
3029
import org.mybatis.dynamic.sql.SqlTable;
3130
import org.mybatis.dynamic.sql.insert.render.FieldAndValue;
32-
import org.mybatis.dynamic.sql.insert.render.FieldAndValueAndParameters;
33-
import org.mybatis.dynamic.sql.insert.render.FieldAndValueAndParametersCollector;
3431
import org.mybatis.dynamic.sql.insert.render.FieldAndValueCollector;
3532
import org.mybatis.dynamic.sql.insert.render.InsertStatementProvider;
3633
import org.mybatis.dynamic.sql.render.RenderingStrategies;
@@ -155,40 +152,6 @@ private FieldAndValue newFieldAndValue(String fieldName, String valuePhrase) {
155152
.build();
156153
}
157154

158-
@Test
159-
void testParallelStreamWithParameters() {
160-
161-
List<Optional<FieldAndValueAndParameters>> mappings = new ArrayList<>();
162-
163-
mappings.add(newFieldAndValueAndParameter(id.name(), "{p1}", "p1", 1));
164-
mappings.add(newFieldAndValueAndParameter(firstName.name(), "{p2}", "p2", "Fred"));
165-
mappings.add(newFieldAndValueAndParameter(lastName.name(), "{p3}", "p3", "Flintstone"));
166-
mappings.add(newFieldAndValueAndParameter(occupation.name(), "{p4}", "p4", "Driver"));
167-
168-
FieldAndValueAndParametersCollector collector =
169-
mappings.parallelStream().collect(Collector.of(
170-
FieldAndValueAndParametersCollector::new,
171-
FieldAndValueAndParametersCollector::add,
172-
FieldAndValueAndParametersCollector::merge));
173-
174-
String expectedColumnsPhrase = "(id, first_name, last_name, occupation)";
175-
String expectedValuesPhrase = "values ({p1}, {p2}, {p3}, {p4})";
176-
177-
assertAll(
178-
() -> assertThat(collector.columnsPhrase()).isEqualTo(expectedColumnsPhrase),
179-
() -> assertThat(collector.valuesPhrase()).isEqualTo(expectedValuesPhrase),
180-
() -> assertThat(collector.parameters()).hasSize(4)
181-
);
182-
}
183-
184-
private Optional<FieldAndValueAndParameters> newFieldAndValueAndParameter(String fieldName, String valuePhrase, String parameterName,
185-
Object parameterValue) {
186-
return FieldAndValueAndParameters.withFieldName(fieldName)
187-
.withValuePhrase(valuePhrase)
188-
.withParameter(parameterName, parameterValue)
189-
.buildOptional();
190-
}
191-
192155
@Test
193156
void testParallelStreamForMultiRecord() {
194157

0 commit comments

Comments
 (0)