
org.sklsft.commons.model.patterns.JpaCriteriaUtils Maven / Gradle / Ivy
The newest version!
package org.sklsft.commons.model.patterns;
import java.util.List;
import org.sklsft.commons.api.model.OrderType;
import org.sklsft.commons.text.StringUtils;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Expression;
import jakarta.persistence.criteria.Order;
import jakarta.persistence.criteria.Predicate;
/**
* Some Jpa predicate functions used to build restrictions
*
* @author Nicolas Thibault
*
*/
public class JpaCriteriaUtils {
public static Predicate getUnaccentuatedStringContainsRestriction(CriteriaBuilder builder, Expression expression, String value) {
if (!StringUtils.isEmpty(value)) {
return builder.like(builder.function("normalize", String.class, expression), "%" + StringUtils.normalize(value) + "%");
}
return null;
}
public static void addUnaccentuatedStringContainsRestriction(CriteriaBuilder builder, List predicates, Expression expression, String value) {
if (!StringUtils.isEmpty(value)) {
predicates.add(builder.like(builder.function("normalize", String.class, expression), "%" + StringUtils.normalize(value) + "%"));
}
}
public static Predicate getStringContainsRestriction(CriteriaBuilder builder, Expression expression, String value) {
if (!StringUtils.isEmpty(value)) {
return builder.like(builder.lower(expression), "%" + value.toLowerCase() + "%");
}
return null;
}
public static void addStringContainsRestriction(CriteriaBuilder builder, List predicates, Expression expression, String value) {
if (!StringUtils.isEmpty(value)) {
predicates.add(builder.like(builder.lower(expression), "%" + value.toLowerCase() + "%"));
}
}
public static Predicate getStringStartsWithRestriction(CriteriaBuilder builder, Expression expression, String value) {
if (!StringUtils.isEmpty(value)) {
return builder.like(builder.lower(expression), value.toLowerCase() + "%");
}
return null;
}
public static void addStringStartsWithRestriction(CriteriaBuilder builder, List predicates, Expression expression, String value) {
if (!StringUtils.isEmpty(value)) {
predicates.add(builder.like(builder.lower(expression), value.toLowerCase() + "%"));
}
}
public static > void addBetweenRestriction(CriteriaBuilder builder, List predicates, Expression expression, T minValue, T maxValue) {
if (minValue != null) {
predicates.add(builder.greaterThanOrEqualTo(expression, minValue));
}
if (maxValue != null) {
predicates.add(builder.lessThanOrEqualTo(expression, maxValue));
}
}
public static void addBooleanRestriction(CriteriaBuilder builder, List predicates, Expression expression, Boolean value) {
if (value != null) {
predicates.add(builder.equal(expression, value));
}
}
public static void addEqualsRestriction(CriteriaBuilder builder, List predicates, Expression> expression, Object value) {
if (value != null) {
predicates.add(builder.equal(expression, value));
} else {
predicates.add(builder.isNull(expression));
}
}
public static void addEqualsIfNotNullRestriction(CriteriaBuilder builder, List predicates, Expression> expression, Object value) {
if (value != null) {
predicates.add(builder.equal(expression, value));
}
}
public static void addOrder(CriteriaBuilder builder, List orders, Expression> expression, OrderType orderType) {
if (orderType != null) {
if (orderType.equals(OrderType.ASC)) {
orders.add(builder.asc(expression));
} else {
orders.add(builder.desc(expression));
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy