Search in sources :

Example 6 with UserRole

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;
}
Also used : CriteriaBuilder(javax.persistence.criteria.CriteriaBuilder) User(org.motechproject.mots.domain.security.User) UserRole(org.motechproject.mots.domain.security.UserRole) CriteriaQuery(javax.persistence.criteria.CriteriaQuery) Predicate(javax.persistence.criteria.Predicate)

Aggregations

UserRole (org.motechproject.mots.domain.security.UserRole)6 User (org.motechproject.mots.domain.security.User)4 HashSet (java.util.HashSet)2 CriteriaBuilder (javax.persistence.criteria.CriteriaBuilder)1 CriteriaQuery (javax.persistence.criteria.CriteriaQuery)1 Path (javax.persistence.criteria.Path)1 Predicate (javax.persistence.criteria.Predicate)1 UserPermission (org.motechproject.mots.domain.security.UserPermission)1 UsernamePasswordAuthenticationToken (org.springframework.security.authentication.UsernamePasswordAuthenticationToken)1 Authentication (org.springframework.security.core.Authentication)1 SecurityContext (org.springframework.security.core.context.SecurityContext)1 UserDetails (org.springframework.security.core.userdetails.UserDetails)1