package fi.otavanopisto.pyramus.dao.students; import java.util.List; import javax.ejb.Stateless; 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.students.StudentStudyEndReason; import fi.otavanopisto.pyramus.domainmodel.students.StudentStudyEndReason_; @Stateless public class StudentStudyEndReasonDAO extends PyramusEntityDAO<StudentStudyEndReason> { public StudentStudyEndReason create(StudentStudyEndReason parentReason, String name) { EntityManager entityManager = getEntityManager(); StudentStudyEndReason studentStudyEndReason = new StudentStudyEndReason(); studentStudyEndReason.setName(name); if (parentReason != null) { parentReason.addChildEndReason(studentStudyEndReason); entityManager.persist(parentReason); } entityManager.persist(studentStudyEndReason); return studentStudyEndReason; } public List<StudentStudyEndReason> listByParentReason(StudentStudyEndReason parentReason) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<StudentStudyEndReason> criteria = criteriaBuilder.createQuery(StudentStudyEndReason.class); Root<StudentStudyEndReason> root = criteria.from(StudentStudyEndReason.class); criteria.select(root); if (parentReason == null) { criteria.where( criteriaBuilder.isNull(root.get(StudentStudyEndReason_.parentReason)) ); } else { criteria.where( criteriaBuilder.equal(root.get(StudentStudyEndReason_.parentReason), parentReason) ); } return entityManager.createQuery(criteria).getResultList(); } public StudentStudyEndReason updateParentReason(StudentStudyEndReason studyEndReason, StudentStudyEndReason newParentReason) { EntityManager entityManager = getEntityManager(); StudentStudyEndReason oldParentReason = studyEndReason.getParentReason(); if (newParentReason == null) { if (oldParentReason == null) { return studyEndReason; // do nothing } else { oldParentReason.removeChildEndReason(studyEndReason); entityManager.persist(oldParentReason); } } else { if (oldParentReason != null) { oldParentReason.removeChildEndReason(studyEndReason); entityManager.persist(oldParentReason); } newParentReason.addChildEndReason(studyEndReason); entityManager.persist(newParentReason); } entityManager.persist(studyEndReason); return studyEndReason; } public StudentStudyEndReason updateName(StudentStudyEndReason studyEndReason, String name) { EntityManager entityManager = getEntityManager(); studyEndReason.setName(name); entityManager.persist(studyEndReason); return studyEndReason; } public void delete(StudentStudyEndReason studyEndReason) { EntityManager entityManager = getEntityManager(); if (studyEndReason.getParentReason() != null) { StudentStudyEndReason oldParentReason = studyEndReason.getParentReason(); oldParentReason.removeChildEndReason(studyEndReason); entityManager.persist(oldParentReason); } entityManager.remove(studyEndReason); } }