package fi.otavanopisto.muikku.plugins.courselist; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import fi.otavanopisto.muikku.plugins.courselist.CourseListSelection_; import fi.otavanopisto.muikku.model.users.UserEntity; import fi.otavanopisto.muikku.plugins.CorePluginsDAO; import fi.otavanopisto.muikku.plugins.courselist.CourseListSelection; import fi.otavanopisto.muikku.plugins.courselist.CourseListSelectionEnum; public class CourseListSelectionDAO extends CorePluginsDAO<CourseListSelection> { private static final long serialVersionUID = 4895596425024979837L; public CourseListSelection create(UserEntity user, String context, CourseListSelectionEnum selection) { CourseListSelection courseListSelection = new CourseListSelection(); courseListSelection.setContext(context); courseListSelection.setUser(user.getId()); courseListSelection.setSelection(selection); getEntityManager().persist(courseListSelection); return courseListSelection; } public CourseListSelection findByUserAndContext(UserEntity user, String context) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<CourseListSelection> criteria = criteriaBuilder.createQuery(CourseListSelection.class); Root<CourseListSelection> root = criteria.from(CourseListSelection.class); criteria.select(root); criteria.where( criteriaBuilder.and( criteriaBuilder.equal(root.get(CourseListSelection_.user), user.getId()), criteriaBuilder.equal(root.get(CourseListSelection_.context), context) ) ); return getSingleResult(entityManager.createQuery(criteria)); } public CourseListSelection updateSelection(CourseListSelection selection, CourseListSelectionEnum newValue) { selection.setSelection(newValue); getEntityManager().persist(selection); return selection; } }