diff --git a/agent/src/main/java/li/strolch/search/ExpressionsSupport.java b/agent/src/main/java/li/strolch/search/ExpressionsSupport.java index eab80318f..6f50a1509 100644 --- a/agent/src/main/java/li/strolch/search/ExpressionsSupport.java +++ b/agent/src/main/java/li/strolch/search/ExpressionsSupport.java @@ -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 ExpressionBuilder extract(Function extractor) { + return element -> { + @SuppressWarnings("unchecked") T e = (T) element; + return extractor.apply(e); + }; + } + public static SearchExpression paramNull(String paramId) { return paramNull(BAG_PARAMETERS, paramId); } diff --git a/agent/src/main/java/li/strolch/search/SearchExpressions.java b/agent/src/main/java/li/strolch/search/SearchExpressions.java index 02b70e2f1..70d56bd7d 100644 --- a/agent/src/main/java/li/strolch/search/SearchExpressions.java +++ b/agent/src/main/java/li/strolch/search/SearchExpressions.java @@ -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 ExpressionBuilder extract(Function extractor) { + return ExpressionsSupport.extract(extractor); + } + default ExpressionBuilder relation(String paramId) { return ExpressionsSupport.param(BAG_RELATIONS, paramId); }