strolch/li.strolch.agent/src/main/java/li/strolch/search/ExpressionBuilder.java

81 lines
3.1 KiB
Java
Raw Normal View History

package li.strolch.search;
import li.strolch.model.StrolchRootElement;
import li.strolch.utils.collections.DateRange;
2018-06-22 11:11:15 +02:00
/**
* An interface to add search expressions to easily discover the possible search expressions
*/
public interface ExpressionBuilder {
Object extract(StrolchRootElement element);
default ValueCoercer getValueCoercer(StrolchRootElement context) {
return e -> e;
}
default <T extends StrolchRootElement> SearchExpression<T> isEqualTo(Object right) {
return element -> PredicatesSupport.isEqualTo(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> isNotEqualTo(Object right) {
return element -> PredicatesSupport.isNotEqualTo(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> isEqualToIgnoreCase(Object right) {
return element -> PredicatesSupport.isEqualToIgnoreCase(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> isNotEqualToIgnoreCase(Object right) {
return element -> PredicatesSupport.isNotEqualToIgnoreCase(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> startsWith(Object right) {
return element -> PredicatesSupport.startsWith(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> startsWithIgnoreCase(Object right) {
return element -> PredicatesSupport.startsWithIgnoreCase(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> endsWith(Object right) {
return element -> PredicatesSupport.endsWith(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> endsWithIgnoreCase(Object right) {
return element -> PredicatesSupport.endsWithIgnoreCase(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> contains(Object right) {
return element -> PredicatesSupport.contains(right).matches(extract(element));
}
/**
* @deprecated use {@link #collectionContains(Object)} instead
*/
@Deprecated
default <T extends StrolchRootElement> SearchExpression<T> listContains(Object right) {
return element -> PredicatesSupport.collectionContains(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> collectionContains(Object right) {
return element -> PredicatesSupport.collectionContains(right).matches(extract(element));
2018-08-31 14:45:56 +02:00
}
default <T extends StrolchRootElement> SearchExpression<T> containsIgnoreCase(Object right) {
return element -> PredicatesSupport.containsIgnoreCase(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> isIn(Object right) {
return element -> PredicatesSupport.isIn(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> isInIgnoreCase(Object right) {
return element -> PredicatesSupport.isInIgnoreCase(right).matches(extract(element));
}
default <T extends StrolchRootElement> SearchExpression<T> inRange(DateRange range) {
return element -> PredicatesSupport.inRange(range).matches(extract(element));
}
}