Skip to content
Snippets Groups Projects
Commit d9b536b2 authored by Pavel Šeda's avatar Pavel Šeda
Browse files

Merge branch '83-express-string-queries-in-querydsl-using-contains' into 'master'

Resolve "Express string queries in QueryDSL using contains"

Closes #83

See merge request kypo2/services-and-portlets/kypo2-user-and-group!80
parents c6f4da77 77e9ebbb
Branches
Tags
No related merge requests found
package cz.muni.ics.kypo.userandgroup.repository;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.dsl.StringPath;
import cz.muni.ics.kypo.userandgroup.model.IDMGroup;
......@@ -17,6 +18,7 @@ import org.springframework.data.querydsl.binding.QuerydslBindings;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.Set;
......@@ -39,8 +41,11 @@ public interface IDMGroupRepository extends JpaRepository<IDMGroup, Long>,
*/
@Override
default void customize(QuerydslBindings querydslBindings, QIDMGroup qIDMGroup) {
querydslBindings.bind(String.class).first(
(StringPath path, String value) -> path.containsIgnoreCase(value));
querydslBindings.bind(String.class).all((StringPath path, Collection<? extends String> values) -> {
BooleanBuilder predicate = new BooleanBuilder();
values.forEach(value -> predicate.and(path.containsIgnoreCase(value)));
return Optional.ofNullable(predicate);
});
}
/**
......
package cz.muni.ics.kypo.userandgroup.repository;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.dsl.StringPath;
import cz.muni.ics.kypo.userandgroup.model.QRole;
......@@ -15,6 +16,7 @@ import org.springframework.data.querydsl.binding.QuerydslBindings;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.Optional;
import java.util.Set;
......@@ -36,8 +38,11 @@ public interface RoleRepository extends JpaRepository<Role, Long>,
*/
@Override
default void customize(QuerydslBindings querydslBindings, QRole qRole) {
querydslBindings.bind(String.class).first(
(StringPath path, String value) -> path.containsIgnoreCase(value));
querydslBindings.bind(String.class).all((StringPath path, Collection<? extends String> values) -> {
BooleanBuilder predicate = new BooleanBuilder();
values.forEach(value -> predicate.and(path.containsIgnoreCase(value)));
return Optional.ofNullable(predicate);
});
}
/**
......
package cz.muni.ics.kypo.userandgroup.repository;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Predicate;
import com.querydsl.core.types.dsl.StringPath;
import cz.muni.ics.kypo.userandgroup.model.QUser;
......@@ -17,6 +18,7 @@ import org.springframework.data.querydsl.binding.QuerydslBindings;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import java.util.Collection;
import java.util.Optional;
import java.util.Set;
......@@ -31,15 +33,20 @@ public interface UserRepository extends JpaRepository<User, Long>,
QuerydslPredicateExecutor<User>, QuerydslBinderCustomizer<QUser> {
/**
* <p>
* That method is used to make the query dsl string values case insensitive
* </p>
*
* @param querydslBindings
* @param qUser
*/
@Override
default void customize(QuerydslBindings querydslBindings, QUser qUser) {
querydslBindings.bind(String.class).first(
(StringPath path, String value) -> path.containsIgnoreCase(value));
querydslBindings.bind(String.class).all((StringPath path, Collection<? extends String> values) -> {
BooleanBuilder predicate = new BooleanBuilder();
values.forEach(value -> predicate.and(path.containsIgnoreCase(value)));
return Optional.ofNullable(predicate);
});
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment