PermissionDAOImpl.java
package org.itracker.persistence.dao;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.itracker.model.Permission;
import org.itracker.model.PermissionType;
import org.itracker.model.Project;
import org.itracker.model.User;
import java.util.List;
public class PermissionDAOImpl extends BaseHibernateDAOImpl<Permission>
        implements PermissionDAO {
    @SuppressWarnings("unchecked")
    public List<Permission> findByUserId(Integer userId) {
        List<Permission> permissions;
        if (getSession().get(User.class, userId) == null) {
            throw new NoSuchEntityException("User " + userId + " not found.");
        }
        try {
            Query query = getSession().getNamedQuery(
                    "PermissionsByUserQuery");
            query.setInteger("userId", userId);
            permissions = query.list();
        } catch (HibernateException ex) {
            throw convertHibernateAccessException(ex);
        }
        return permissions;
    }
    @Deprecated
    @SuppressWarnings("unchecked")
    public List<Permission> findByProjectIdAndPermission(Integer projectId,
                                                         int permissionType) {
        return findByProjectIdAndPermission(projectId, PermissionType.valueOf(permissionType));
    }
    @Override
    public List<Permission> findByProjectIdAndPermission(Integer projectId, PermissionType permissionType) {
        List<Permission> permissions;
        if (getSession().get(Project.class, projectId) == null) {
            throw new NoSuchEntityException("Project " + projectId + " not found.");
        }
        try {
            Query query = getSession().getNamedQuery(
                    "PermissionsByProjectAndTypeQuery");
            query.setInteger("projectId", projectId);
            query.setParameter("permissionType", permissionType);
            permissions = query.list();
        } catch (HibernateException ex) {
            throw convertHibernateAccessException(ex);
        }
        return permissions;
    }
}