Skip to content

Commit c6778d5

Browse files
committed
Refactor filter/map algorithm into base class for two value Conditions
1 parent 1376bd0 commit c6778d5

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

src/main/java/org/mybatis/dynamic/sql/AbstractTwoValueCondition.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.util.function.BiFunction;
1919
import java.util.function.BiPredicate;
20+
import java.util.function.Supplier;
2021
import java.util.function.UnaryOperator;
2122

2223
public abstract class AbstractTwoValueCondition<T, S extends AbstractTwoValueCondition<T, S>>
@@ -42,15 +43,15 @@ public <R> R accept(ConditionVisitor<T, R> visitor) {
4243
return visitor.visit(this);
4344
}
4445

45-
protected S filter(BiPredicate<T, T> predicate, S self, S empty) {
46+
protected S filter(BiPredicate<T, T> predicate, Supplier<S> empty, S self) {
4647
if (shouldRender()) {
47-
return predicate.test(value1, value2) ? self : empty;
48+
return predicate.test(value1, value2) ? self : empty.get();
4849
} else {
4950
return self;
5051
}
5152
}
5253

53-
protected S map(UnaryOperator<T> mapper1, UnaryOperator<T> mapper2, S self, BiFunction<T, T, S> constructor) {
54+
protected S map(UnaryOperator<T> mapper1, UnaryOperator<T> mapper2, BiFunction<T, T, S> constructor, S self) {
5455
if (shouldRender()) {
5556
return constructor.apply(mapper1.apply(value1), mapper2.apply(value2));
5657
}else {

src/main/java/org/mybatis/dynamic/sql/where/condition/IsBetween.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ public IsBetween<T> then(UnaryOperator<T> mapper1, UnaryOperator<T> mapper2) {
6363

6464
@Override
6565
public IsBetween<T> filter(BiPredicate<T, T> predicate) {
66-
return filter(predicate, this, EmptyIsBetween.empty());
66+
return filter(predicate, EmptyIsBetween::empty, this);
6767
}
6868

6969
@Override
7070
public IsBetween<T> map(UnaryOperator<T> mapper1, UnaryOperator<T> mapper2) {
71-
return map(mapper1, mapper2, this, IsBetween::new);
71+
return map(mapper1, mapper2, IsBetween::new, this);
7272
}
7373

7474
public static <T> Builder<T> isBetween(T value1) {

src/main/java/org/mybatis/dynamic/sql/where/condition/IsNotBetween.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ public IsNotBetween<T> then(UnaryOperator<T> mapper1, UnaryOperator<T> mapper2)
6363

6464
@Override
6565
public IsNotBetween<T> filter(BiPredicate<T, T> predicate) {
66-
return filter(predicate, this, EmptyIsNotBetween.empty());
66+
return filter(predicate, EmptyIsNotBetween::empty, this);
6767
}
6868

6969
@Override
7070
public IsNotBetween<T> map(UnaryOperator<T> mapper1, UnaryOperator<T> mapper2) {
71-
return map(mapper1, mapper2, this, IsNotBetween::new);
71+
return map(mapper1, mapper2, IsNotBetween::new, this);
7272
}
7373

7474
public static <T> Builder<T> isNotBetween(T value1) {

0 commit comments

Comments
 (0)