blob: 874850a58acdae0f7d922af3afe724584f1e24e4 [file] [log] [blame]
package de.ids_mannheim.korap.dao;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import de.ids_mannheim.korap.constant.PrivilegeType;
import de.ids_mannheim.korap.entity.Privilege;
import de.ids_mannheim.korap.entity.Privilege_;
import de.ids_mannheim.korap.entity.Role;
import de.ids_mannheim.korap.entity.Role_;
@Transactional
@Repository
public class PrivilegeDao {
@PersistenceContext
private EntityManager entityManager;
public void addPrivilegesToRole (Role role,
List<PrivilegeType> privilegeTypes) {
for (PrivilegeType type : privilegeTypes) {
Privilege privilege = new Privilege(type, role);
entityManager.persist(privilege);
}
}
public void deletePrivilegeFromRole (int roleId,
PrivilegeType privilegeType) {
List<Privilege> privilegeList = retrievePrivilegeByRoleId(roleId);
for (Privilege p: privilegeList){
if (p.getName().equals(privilegeType)){
entityManager.remove(p);
break;
}
}
}
public List<Privilege> retrievePrivilegeByRoleId (int roleId) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Privilege> query =
criteriaBuilder.createQuery(Privilege.class);
Root<Privilege> root = query.from(Privilege.class);
root.fetch(Privilege_.role);
query.select(root);
query.where(criteriaBuilder
.equal(root.get(Privilege_.role).get(Role_.id), roleId));
Query q = entityManager.createQuery(query);
return q.getResultList();
}
}