This commit is contained in:
@@ -328,7 +328,7 @@ final class FilterBeanNode extends FilterNode {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void putForeignPredicate(final Map<EntityInfo, Predicate> foreign, FilterBean bean) {
|
private <T> void putForeignPredicate(final Map<EntityInfo, Predicate> foreign, FilterBean bean) {
|
||||||
if (this.foreignEntity == null) return;
|
if (this.foreignEntity == null) return;
|
||||||
final Serializable val = getValue(bean);
|
final Serializable val = getValue(bean);
|
||||||
Predicate filter = (val == null && express != ISNULL && express != ISNOTNULL) ? ((t) -> signand) : super.createFilterPredicate(this.columnAttribute, val);
|
Predicate filter = (val == null && express != ISNULL && express != ISNOTNULL) ? ((t) -> signand) : super.createFilterPredicate(this.columnAttribute, val);
|
||||||
@@ -336,10 +336,33 @@ final class FilterBeanNode extends FilterNode {
|
|||||||
Predicate p = foreign.get(this.foreignEntity);
|
Predicate p = foreign.get(this.foreignEntity);
|
||||||
if (p == null) {
|
if (p == null) {
|
||||||
foreign.put(foreignEntity, filter);
|
foreign.put(foreignEntity, filter);
|
||||||
} else if (signand) {
|
|
||||||
p.and(filter);
|
|
||||||
} else {
|
} else {
|
||||||
p.or(filter);
|
final Predicate<T> one = p;
|
||||||
|
final Predicate<T> two = filter;
|
||||||
|
p = signand ? new Predicate<T>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(T t) {
|
||||||
|
return one.test(t) && two.test(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "(" + one + " AND " + two + ")";
|
||||||
|
}
|
||||||
|
} : new Predicate<T>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean test(T t) {
|
||||||
|
return one.test(t) || two.test(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "(" + one + " OR " + two + ")";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
foreign.put(foreignEntity, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user