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.CourseComponent; import fi.otavanopisto.pyramus.domainmodel.courses.CourseComponentResource; import fi.otavanopisto.pyramus.domainmodel.resources.Resource; import fi.otavanopisto.pyramus.domainmodel.courses.CourseComponentResource_; @Stateless public class CourseComponentResourceDAO extends PyramusEntityDAO<CourseComponentResource> { public List<CourseComponentResource> listByCourseComponent(CourseComponent courseComponent) { EntityManager entityManager = getEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<CourseComponentResource> criteria = criteriaBuilder.createQuery(CourseComponentResource.class); Root<CourseComponentResource> root = criteria.from(CourseComponentResource.class); criteria.select(root); criteria.where( criteriaBuilder.equal(root.get(CourseComponentResource_.courseComponent), courseComponent) ); return entityManager.createQuery(criteria).getResultList(); } public CourseComponentResource create(CourseComponent courseComponent, Resource resource, Double usagePercent) { EntityManager entityManager = getEntityManager(); CourseComponentResource courseComponentResource = new CourseComponentResource(); courseComponentResource.setResource(resource); courseComponentResource.setUsagePercent(usagePercent); entityManager.persist(courseComponentResource); courseComponent.addResource(courseComponentResource); entityManager.persist(courseComponent); return courseComponentResource; } public CourseComponentResource updateUsagePercent(CourseComponentResource courseComponentResource, Double usagePercent) { EntityManager entityManager = getEntityManager(); courseComponentResource.setUsagePercent(usagePercent); entityManager.persist(courseComponentResource); return courseComponentResource; } @Override public void delete(CourseComponentResource courseComponentResource) { EntityManager entityManager = getEntityManager(); CourseComponent courseComponent = courseComponentResource.getCourseComponent(); courseComponent.removeResource(courseComponentResource); entityManager.persist(courseComponent); entityManager.remove(courseComponentResource); } }