From 870c74f5ce96886814c80221aa9eb16af38bb197 Mon Sep 17 00:00:00 2001
From: Jan Vales <jan@jvales.net>
Date: Thu, 29 Mar 2018 00:59:06 +0200
Subject: [PATCH] [1.2.3b] Das war ja vergleichsweise einfach.
---
.../java/dst/ass1/jpa/dao/impl/CourseDAO.java | 21 ++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/CourseDAO.java b/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/CourseDAO.java
index ea5a90d..7528a96 100644
--- a/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/CourseDAO.java
+++ b/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/CourseDAO.java
@@ -1,14 +1,21 @@
package dst.ass1.jpa.dao.impl;
import dst.ass1.jpa.dao.ICourseDAO;
+import dst.ass1.jpa.model.CourseStatus;
import dst.ass1.jpa.model.ICourse;
import dst.ass1.jpa.model.impl.Course;
import dst.ass1.jpa.util.Constants;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
+import java.util.List;
public class CourseDAO extends GenericDAO<Course, ICourse> implements ICourseDAO {
public CourseDAO(EntityManager em) {
@@ -27,6 +34,18 @@ public class CourseDAO extends GenericDAO<Course, ICourse> implements ICourseDAO
@Override
public Collection<ICourse> findNonCancelledCoursesBetweenStartAndEnd(Date start, Date end) {
- return null;
+ CriteriaBuilder b = em.getCriteriaBuilder();
+ CriteriaQuery<ICourse> q = b.createQuery(ICourse.class);
+ Root<Course> root = q.from(Course.class);
+ final List<Predicate> andPredicates = new ArrayList<Predicate>();
+
+ andPredicates.add(b.notEqual(root.get("status"), CourseStatus.CANCELLED));
+ if (start != null) andPredicates.add(b.greaterThan(root.get("start"), start));
+ if (end != null) andPredicates.add(b.lessThan(root.get("end"), end));
+
+ q.select(root).where(b.and(andPredicates.toArray(new Predicate[andPredicates.size()])));
+
+ List<ICourse> a = em.createQuery(q).getResultList();
+ return a;
}
}
--
2.47.3