Skip to content

Commit 59599cf

Browse files
committed
Simplify column and condition renderer
1 parent aecb63a commit 59599cf

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

src/main/java/org/mybatis/dynamic/sql/where/render/ColumnAndConditionRenderer.java

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,43 @@
1515
*/
1616
package org.mybatis.dynamic.sql.where.render;
1717

18-
import static org.mybatis.dynamic.sql.util.StringUtilities.spaceBefore;
19-
2018
import java.util.Objects;
19+
import java.util.stream.Collectors;
2120

2221
import org.jspecify.annotations.Nullable;
2322
import org.mybatis.dynamic.sql.BindableColumn;
2423
import org.mybatis.dynamic.sql.VisitableCondition;
2524
import org.mybatis.dynamic.sql.render.RenderingContext;
2625
import org.mybatis.dynamic.sql.util.FragmentAndParameters;
26+
import org.mybatis.dynamic.sql.util.FragmentCollector;
2727

2828
public class ColumnAndConditionRenderer<T> {
2929
private final BindableColumn<T> column;
3030
private final VisitableCondition<T> condition;
3131
private final RenderingContext renderingContext;
32+
private final DefaultConditionVisitor<T> visitor;
3233

3334
private ColumnAndConditionRenderer(Builder<T> builder) {
3435
column = Objects.requireNonNull(builder.column);
3536
condition = Objects.requireNonNull(builder.condition);
3637
renderingContext = Objects.requireNonNull(builder.renderingContext);
37-
}
38-
39-
public FragmentAndParameters render() {
40-
FragmentAndParameters renderedLeftColumn = column.alias()
41-
.map(FragmentAndParameters::fromFragment)
42-
.orElseGet(() -> column.render(renderingContext));
43-
44-
DefaultConditionVisitor<T> visitor = DefaultConditionVisitor.withColumn(column)
38+
visitor = DefaultConditionVisitor.withColumn(column)
4539
.withRenderingContext(renderingContext)
4640
.build();
41+
}
4742

48-
FragmentAndParameters renderedCondition = condition.accept(visitor);
49-
50-
String finalFragment = condition.overrideRenderedLeftColumn(renderedLeftColumn.fragment())
51-
+ spaceBefore(renderedCondition.fragment());
43+
public FragmentAndParameters render() {
44+
FragmentCollector fc = new FragmentCollector();
45+
fc.add(renderLeftColumn());
46+
fc.add(condition.accept(visitor));
47+
return fc.toFragmentAndParameters(Collectors.joining(" ")); //$NON-NLS-1$
48+
}
5249

53-
return FragmentAndParameters.withFragment(finalFragment)
54-
.withParameters(renderedLeftColumn.parameters())
55-
.withParameters(renderedCondition.parameters())
56-
.build();
50+
private FragmentAndParameters renderLeftColumn() {
51+
return column.alias()
52+
.map(FragmentAndParameters::fromFragment)
53+
.orElseGet(() -> column.render(renderingContext))
54+
.mapFragment(condition::overrideRenderedLeftColumn);
5755
}
5856

5957
public static class Builder<T> {

0 commit comments

Comments
 (0)