package fi.otavanopisto.pyramus.dao.security; import java.util.List; import javax.ejb.Stateless; import javax.enterprise.context.Dependent; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import fi.otavanopisto.pyramus.dao.PyramusEntityDAO; import fi.otavanopisto.pyramus.domainmodel.security.EnvironmentRolePermission; import fi.otavanopisto.pyramus.domainmodel.security.Permission; import fi.otavanopisto.pyramus.domainmodel.users.Role; import fi.otavanopisto.pyramus.domainmodel.security.EnvironmentRolePermission_; @Dependent @Stateless public class EnvironmentRolePermissionDAO extends PyramusEntityDAO<EnvironmentRolePermission> { public EnvironmentRolePermission create(Role role, Permission permission) { EnvironmentRolePermission eurpermission = new EnvironmentRolePermission(); eurpermission.setRole(role); eurpermission.setPermission(permission); getEntityManager().persist(eurpermission); return eurpermission; } // TODO: Not a DAO method public boolean hasEnvironmentPermissionAccess(Role role, Permission permission) { return findByUserRoleAndPermission(role, permission) != null; } public EnvironmentRolePermission findByUserRoleAndPermission(Role role, Permission permission) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<EnvironmentRolePermission> criteria = criteriaBuilder.createQuery(EnvironmentRolePermission.class); Root<EnvironmentRolePermission> root = criteria.from(EnvironmentRolePermission.class); criteria.select(root); criteria.where(criteriaBuilder.and(criteriaBuilder.equal(root.get(EnvironmentRolePermission_.role), role), criteriaBuilder.equal(root.get(EnvironmentRolePermission_.permission), permission))); return getSingleResult(entityManager.createQuery(criteria)); } public List<EnvironmentRolePermission> listByUserRole(Role role) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<EnvironmentRolePermission> criteria = criteriaBuilder.createQuery(EnvironmentRolePermission.class); Root<EnvironmentRolePermission> root = criteria.from(EnvironmentRolePermission.class); criteria.select(root); criteria.where( criteriaBuilder.equal(root.get(EnvironmentRolePermission_.role), role) ); return entityManager.createQuery(criteria).getResultList(); } @Override public void delete(EnvironmentRolePermission environmentUserRolePermission) { super.delete(environmentUserRolePermission); } }