/**
* Copyright 2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.bricket.plugin.user_role.repository.impl;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import org.bricket.plugin.role.domain.Role_;
import org.bricket.plugin.user.domain.User_;
import org.bricket.plugin.user_role.domain.UserRole;
import org.bricket.plugin.user_role.domain.UserRole_;
import org.synyx.hades.domain.Specification;
/**
* @author Henning Teek
*/
public final class UserRoleSpecifications {
private UserRoleSpecifications() {
super();
}
public static Specification<UserRole> hasRole(final String role) {
return new Specification<UserRole>() {
@Override
public Predicate toPredicate(Root<UserRole> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.equal(root.join(UserRole_.role).get(Role_.name), role);
}
};
}
public static Specification<UserRole> hasUser(final long userId) {
return new Specification<UserRole>() {
@Override
public Predicate toPredicate(Root<UserRole> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.equal(root.join(UserRole_.user).get(User_.id), userId);
}
};
}
public static Specification<UserRole> hasSystemRole() {
return new Specification<UserRole>() {
@Override
public Predicate toPredicate(Root<UserRole> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.isTrue(root.join(UserRole_.role).get(Role_.systemRole));
}
};
}
public static Specification<UserRole> hasEmailLike(final String email) {
return new Specification<UserRole>() {
@Override
public Predicate toPredicate(Root<UserRole> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
return builder.like(root.join(UserRole_.user).get(User_.email), email);
}
};
}
}