[New] Added ExpressionsSupport.predicate() and .map*()

This commit is contained in:
Robert von Burg 2021-03-23 20:26:01 +01:00
parent fcb0e1fdc0
commit 1ce493e9cb
2 changed files with 38 additions and 1 deletions

View File

@ -3,6 +3,7 @@ package li.strolch.search;
import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS;
import static li.strolch.model.StrolchModelConstants.BAG_RELATIONS;
import java.util.function.Function;
import java.util.function.Supplier;
import li.strolch.model.*;
@ -25,6 +26,22 @@ public class ExpressionsSupport {
return element -> predicate.get();
}
public static <T extends StrolchRootElement> SearchExpression<T> predicate(Function<T, Boolean> predicate) {
return predicate::apply;
}
public static ExpressionBuilder mapResource(Function<Resource, Object> extractor) {
return t -> extractor.apply((Resource) t);
}
public static ExpressionBuilder mapOrder(Function<Order, Object> extractor) {
return t -> extractor.apply((Order) t);
}
public static ExpressionBuilder mapActivity(Function<Activity, Object> extractor) {
return t -> extractor.apply((Activity) t);
}
public static <T extends StrolchRootElement> SearchExpression<T> id(SearchPredicate predicate) {
return element -> predicate.matches(element.getId());
}
@ -38,7 +55,7 @@ public class ExpressionsSupport {
}
public static <T extends StrolchRootElement> ExpressionBuilder name() {
return StrolchElement::getName;
return element -> element.getName();
}
public static <T extends StrolchRootElement> SearchExpression<T> date(SearchPredicate predicate) {

View File

@ -3,9 +3,13 @@ package li.strolch.search;
import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS;
import static li.strolch.model.StrolchModelConstants.BAG_RELATIONS;
import java.util.function.Function;
import java.util.function.Supplier;
import li.strolch.model.Order;
import li.strolch.model.Resource;
import li.strolch.model.StrolchRootElement;
import li.strolch.model.activity.Activity;
import li.strolch.persistence.api.StrolchTransaction;
/**
@ -21,6 +25,22 @@ public interface SearchExpressions {
return ExpressionsSupport.predicate(predicate);
}
default <T extends StrolchRootElement> SearchExpression<T> predicate(Function<T, Boolean> predicate) {
return ExpressionsSupport.predicate(predicate);
}
default ExpressionBuilder mapResource(Function<Resource, Object> extractor) {
return t -> extractor.apply((Resource) t);
}
default ExpressionBuilder mapOrder(Function<Order, Object> extractor) {
return t -> extractor.apply((Order) t);
}
default ExpressionBuilder mapActivity(Function<Activity, Object> extractor) {
return t -> extractor.apply((Activity) t);
}
default ExpressionBuilder id() {
return ExpressionsSupport.id();
}