package fi.otavanopisto.pyramus.dao.reports; 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.reports.Report; import fi.otavanopisto.pyramus.domainmodel.reports.ReportContext; import fi.otavanopisto.pyramus.domainmodel.reports.ReportContextType; import fi.otavanopisto.pyramus.domainmodel.reports.ReportContext_; @Stateless public class ReportContextDAO extends PyramusEntityDAO<ReportContext> { public ReportContext create(Report report, ReportContextType context) { EntityManager entityManager = getEntityManager(); ReportContext reportContext = new ReportContext(); reportContext.setReport(report); reportContext.setContext(context); entityManager.persist(reportContext); return reportContext; } public ReportContext findByReportAndContextType(Report report, ReportContextType contextType) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<ReportContext> criteria = criteriaBuilder.createQuery(ReportContext.class); Root<ReportContext> root = criteria.from(ReportContext.class); criteria.select(root); criteria.where( criteriaBuilder.and( criteriaBuilder.equal(root.get(ReportContext_.report), report), criteriaBuilder.equal(root.get(ReportContext_.context), contextType) ) ); return getSingleResult(entityManager.createQuery(criteria)); } public List<ReportContext> listByReport(Report report) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<ReportContext> criteria = criteriaBuilder.createQuery(ReportContext.class); Root<ReportContext> root = criteria.from(ReportContext.class); criteria.select(root); criteria.where( criteriaBuilder.equal(root.get(ReportContext_.report), report) ); return entityManager.createQuery(criteria).getResultList(); } @Override public void delete(ReportContext reportContext) { super.delete(reportContext); } }