use of org.motechproject.mots.domain.security.UserRole in project mots by motech-implementations.
the class UserRepositoryImpl method prepareQuery.
private <T> CriteriaQuery<T> prepareQuery(CriteriaQuery<T> query, String username, String email, String name, String role, boolean count, Pageable pageable) throws IllegalArgumentException {
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
Root<User> root = query.from(User.class);
if (count) {
CriteriaQuery<Long> countQuery = (CriteriaQuery<Long>) query;
query = (CriteriaQuery<T>) countQuery.select(builder.count(root));
}
Predicate predicate = builder.conjunction();
if (username != null) {
predicate = builder.and(predicate, builder.like(root.get(USERNAME), '%' + username + '%'));
}
if (email != null) {
predicate = builder.and(predicate, builder.like(root.get(EMAIL), '%' + email + '%'));
}
if (name != null) {
predicate = builder.and(predicate, builder.like(root.get(NAME), '%' + name + '%'));
}
if (role != null) {
Join<User, UserRole> roleJoin = root.join(ROLES);
predicate = builder.and(predicate, builder.like(roleJoin.get(NAME), '%' + role + '%'));
}
query.where(predicate);
if (!count && pageable != null && pageable.getSort() != null) {
query = addSortProperties(query, root, pageable);
}
return query;
}
Aggregations