package com.denimgroup.threadfix.data.dao.hibernate; import java.util.List; import org.hibernate.SessionFactory; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.denimgroup.threadfix.data.dao.AccessControlMapDao; import com.denimgroup.threadfix.data.entities.AccessControlApplicationMap; import com.denimgroup.threadfix.data.entities.AccessControlTeamMap; @Repository public class HibernateAccessControlMapDao implements AccessControlMapDao { private SessionFactory sessionFactory; @Autowired public HibernateAccessControlMapDao(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @SuppressWarnings("unchecked") @Override public List<AccessControlTeamMap> retrieveAllMapsForUser(Integer id) { return sessionFactory.getCurrentSession() .createCriteria(AccessControlTeamMap.class) .createAlias("organization", "orgAlias") .createAlias("user", "userAlias") .add(Restrictions.eq("userAlias.id",id)) .add(Restrictions.eq("active",true)) .addOrder(Order.asc("orgAlias.name")) .list(); } @Override public AccessControlTeamMap retrieveTeamMapById(int id) { return (AccessControlTeamMap) sessionFactory.getCurrentSession() .createCriteria(AccessControlTeamMap.class) .add(Restrictions.eq("id",id)) .add(Restrictions.eq("active",true)) .uniqueResult(); } @Override public AccessControlApplicationMap retrieveAppMapById(int id) { return (AccessControlApplicationMap) sessionFactory.getCurrentSession() .createCriteria(AccessControlApplicationMap.class) .add(Restrictions.eq("id",id)) .add(Restrictions.eq("active",true)) .uniqueResult(); } @Override public void saveOrUpdate(AccessControlTeamMap map) { if (map != null && map.getId() != null) { sessionFactory.getCurrentSession().merge(map); } else { sessionFactory.getCurrentSession().saveOrUpdate(map); } } @Override public void saveOrUpdate(AccessControlApplicationMap map) { if (map != null && map.getId() != null) { sessionFactory.getCurrentSession().merge(map); } else { sessionFactory.getCurrentSession().saveOrUpdate(map); } } @Override public AccessControlTeamMap retrieveTeamMapByUserTeamAndRole(int userId, int organizationId, int roleId) { return (AccessControlTeamMap) sessionFactory.getCurrentSession() .createCriteria(AccessControlTeamMap.class) .createAlias("organization", "orgAlias") .createAlias("role", "roleAlias") .createAlias("user", "userAlias") .add(Restrictions.eq("userAlias.id",userId)) .add(Restrictions.eq("roleAlias.id",roleId)) .add(Restrictions.eq("orgAlias.id",organizationId)) .add(Restrictions.eq("active",true)) .uniqueResult(); } @Override public AccessControlApplicationMap retrieveAppMapByUserAppAndRole(int userId, int applicationId, int roleId) { return (AccessControlApplicationMap) sessionFactory.getCurrentSession() .createCriteria(AccessControlApplicationMap.class) .createAlias("application", "appAlias") .createAlias("role", "roleAlias") .createAlias("accessControlTeamMap", "parentMap") .createAlias("parentMap.user", "userAlias") .add(Restrictions.eq("userAlias.id",userId)) .add(Restrictions.eq("roleAlias.id",roleId)) .add(Restrictions.eq("appAlias.id",applicationId)) .add(Restrictions.eq("active",true)) .uniqueResult(); } }