package fi.otavanopisto.pyramus.dao.courses; 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.courses.BasicCourseResource; import fi.otavanopisto.pyramus.domainmodel.courses.Course; import fi.otavanopisto.pyramus.domainmodel.resources.Resource; import fi.otavanopisto.pyramus.persistence.usertypes.MonetaryAmount; import fi.otavanopisto.pyramus.domainmodel.courses.BasicCourseResource_; @Stateless public class BasicCourseResourceDAO extends PyramusEntityDAO<BasicCourseResource> { /** * Creates a basic course resource to the database. * * @param course The course * @param resource The resource * @param hours Resource hours * @param hourlyCost Resource hourly cost * @param units Resource units * @param unitCost Resource unit cost * * @return The created basic course resource */ public BasicCourseResource create(Course course, Resource resource, Double hours, MonetaryAmount hourlyCost, Integer units, MonetaryAmount unitCost) { EntityManager entityManager = getEntityManager(); BasicCourseResource basicCourseResource = new BasicCourseResource(course, resource); basicCourseResource.setHours(hours); basicCourseResource.setHourlyCost(hourlyCost); basicCourseResource.setUnits(units); basicCourseResource.setUnitCost(unitCost); entityManager.persist(basicCourseResource); course.getBasicCourseResources().add(basicCourseResource); entityManager.persist(course); return basicCourseResource; } /** * Updates the given basic course resource to the database. * * @param basicCourseResource The basic course resource to be updated * @param hours Resource hours * @param hourlyCost Resource hourly cost * @param units Resource units * @param unitCost Resource unit cost */ public void update(BasicCourseResource basicCourseResource, Double hours, MonetaryAmount hourlyCost, Integer units, MonetaryAmount unitCost) { EntityManager entityManager = getEntityManager(); basicCourseResource.setHours(hours); basicCourseResource.setHourlyCost(hourlyCost); basicCourseResource.setUnits(units); basicCourseResource.setUnitCost(unitCost); entityManager.persist(basicCourseResource); } /** * Returns a list of all basic course resources in the course corresponding to the given * identifier. * * @param courseId The course identifier * * @return A list of all basic course resources in the course corresponding to the given * identifier */ public List<BasicCourseResource> listByCourse(Course course) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<BasicCourseResource> criteria = criteriaBuilder.createQuery(BasicCourseResource.class); Root<BasicCourseResource> root = criteria.from(BasicCourseResource.class); criteria.select(root); criteria.where( criteriaBuilder.equal(root.get(BasicCourseResource_.course), course) ); return entityManager.createQuery(criteria).getResultList(); } /** * Deletes the given basic course resource from the database. * * @param basicCourseResource The basic course resource to be deleted */ @Override public void delete(BasicCourseResource basicCourseResource) { EntityManager entityManager = getEntityManager(); if (basicCourseResource.getCourse() != null) basicCourseResource.getCourse().removeBasicCourseResource(basicCourseResource); entityManager.remove(basicCourseResource); } }