Skip to content

Commit 565b114

Browse files
committed
Sometimes small objects can replace if statements
1 parent 2a60865 commit 565b114

File tree

1 file changed

+22
-24
lines changed
  • src/main/java/org/mybatis/dynamic/sql/select/aggregate

1 file changed

+22
-24
lines changed

src/main/java/org/mybatis/dynamic/sql/select/aggregate/Sum.java

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package org.mybatis.dynamic.sql.select.aggregate;
1717

18+
import java.util.function.Function;
19+
1820
import org.mybatis.dynamic.sql.BindableColumn;
1921
import org.mybatis.dynamic.sql.VisitableCondition;
2022
import org.mybatis.dynamic.sql.render.RenderingContext;
@@ -24,48 +26,44 @@
2426
import org.mybatis.dynamic.sql.where.render.DefaultConditionVisitor;
2527

2628
public class Sum<T> extends AbstractUniTypeFunction<T, Sum<T>> {
27-
private final VisitableCondition<T> condition;
29+
private final Function<RenderingContext, FragmentAndParameters> renderer;
2830

2931
private Sum(BindableColumn<T> column) {
30-
this(column, null);
32+
super(column);
33+
renderer = rc -> column.render(rc).mapFragment(Sum::applyAggregate);
3134
}
3235

3336
private Sum(BindableColumn<T> column, VisitableCondition<T> condition) {
3437
super(column);
35-
this.condition = condition;
36-
}
38+
renderer = rc -> {
39+
Validator.assertTrue(condition.shouldRender(), "ERROR.37", "sum"); //$NON-NLS-1$ //$NON-NLS-2$
3740

38-
@Override
39-
public FragmentAndParameters render(RenderingContext renderingContext) {
40-
if (condition == null) {
41-
return renderWithoutCondition(renderingContext);
42-
} else {
43-
return renderWithCondition(renderingContext);
44-
}
45-
}
41+
DefaultConditionVisitor<T> visitor = new DefaultConditionVisitor.Builder<T>()
42+
.withColumn(column)
43+
.withRenderingContext(rc)
44+
.build();
4645

47-
private FragmentAndParameters renderWithoutCondition(RenderingContext renderingContext) {
48-
return column.render(renderingContext).mapFragment(this::applyAggregate);
46+
return condition.accept(visitor).mapFragment(Sum::applyAggregate);
47+
};
4948
}
5049

51-
private FragmentAndParameters renderWithCondition(RenderingContext renderingContext) {
52-
Validator.assertTrue(condition.shouldRender(), "ERROR.37", "sum"); //$NON-NLS-1$ //$NON-NLS-2$
53-
54-
DefaultConditionVisitor<T> visitor = new DefaultConditionVisitor.Builder<T>()
55-
.withColumn(column)
56-
.withRenderingContext(renderingContext)
57-
.build();
50+
private Sum(BindableColumn<T> column, Function<RenderingContext, FragmentAndParameters> renderer) {
51+
super(column);
52+
this.renderer = renderer;
53+
}
5854

59-
return condition.accept(visitor).mapFragment(this::applyAggregate);
55+
@Override
56+
public FragmentAndParameters render(RenderingContext renderingContext) {
57+
return renderer.apply(renderingContext);
6058
}
6159

62-
private String applyAggregate(String s) {
60+
private static String applyAggregate(String s) {
6361
return "sum(" + s + ")"; //$NON-NLS-1$ //$NON-NLS-2$
6462
}
6563

6664
@Override
6765
protected Sum<T> copy() {
68-
return new Sum<>(column, condition);
66+
return new Sum<>(column, renderer);
6967
}
7068

7169
public static <T> Sum<T> of(BindableColumn<T> column) {

0 commit comments

Comments
 (0)