[New] Added new SearchExpression extract(Function<T, Object>)

This commit is contained in:
Robert von Burg 2024-01-08 15:40:50 +01:00
parent 23054a5bad
commit 83f575de41
Signed by: eitch
GPG Key ID: 75DB9C85C74331F7
2 changed files with 22 additions and 11 deletions

View File

@ -1,10 +1,5 @@
package li.strolch.search;
import static li.strolch.model.StrolchModelConstants.*;
import java.util.function.Function;
import java.util.function.Supplier;
import li.strolch.model.*;
import li.strolch.model.activity.Activity;
import li.strolch.model.parameter.Parameter;
@ -12,6 +7,11 @@ import li.strolch.model.parameter.StringParameter;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.utils.iso8601.ISO8601FormatFactory;
import java.util.function.Function;
import java.util.function.Supplier;
import static li.strolch.model.StrolchModelConstants.*;
/**
* Implements search expressions to be statically imported when writing searches
*/
@ -148,6 +148,13 @@ public class ExpressionsSupport {
};
}
public static <T extends StrolchRootElement> ExpressionBuilder extract(Function<T, Object> extractor) {
return element -> {
@SuppressWarnings("unchecked") T e = (T) element;
return extractor.apply(e);
};
}
public static <T extends StrolchRootElement> SearchExpression<T> paramNull(String paramId) {
return paramNull(BAG_PARAMETERS, paramId);
}

View File

@ -1,17 +1,17 @@
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;
import java.util.function.Function;
import java.util.function.Supplier;
import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS;
import static li.strolch.model.StrolchModelConstants.BAG_RELATIONS;
/**
* Declares specific search expressions, i.e. extracting the relevant data for a where clause
*/
@ -77,6 +77,10 @@ public interface SearchExpressions {
return ExpressionsSupport.param(BAG_PARAMETERS, paramId);
}
default <T extends StrolchRootElement> ExpressionBuilder extract(Function<T, Object> extractor) {
return ExpressionsSupport.extract(extractor);
}
default ExpressionBuilder relation(String paramId) {
return ExpressionsSupport.param(BAG_RELATIONS, paramId);
}