]> git.somenet.org - pub/jan/dst18.git/blob - ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/LecturerDAO.java
[1.2.2] "complex" query.
[pub/jan/dst18.git] / ass1-jpa / src / main / java / dst / ass1 / jpa / dao / impl / LecturerDAO.java
1 package dst.ass1.jpa.dao.impl;
2
3 import dst.ass1.jpa.dao.ILecturerDAO;
4 import dst.ass1.jpa.model.ICourse;
5 import dst.ass1.jpa.model.ILecturer;
6 import dst.ass1.jpa.model.ILesson;
7 import dst.ass1.jpa.model.impl.Lecturer;
8 import dst.ass1.jpa.model.impl.Lesson;
9 import dst.ass1.jpa.util.Constants;
10
11 import javax.persistence.EntityManager;
12 import javax.persistence.NoResultException;
13 import java.util.Collection;
14 import java.util.Date;
15 import java.util.HashMap;
16 import java.util.Map;
17
18 public class LecturerDAO extends GenericDAO<Lecturer, ILecturer> implements ILecturerDAO {
19     public LecturerDAO(EntityManager em) {
20         super(em, Lecturer.class);
21     }
22
23     @Override
24     public Map<ILecturer, ILesson> findUpcomingLessonForLecturersOfCourse(ICourse course) {
25         try {
26             Collection<Object[]> res = em.createNamedQuery(Constants.Q_UPCOMING_LESSONS, Object[].class)
27                     .setParameter("now", new Date()).setParameter("course", course).getResultList();
28
29             Map<ILecturer, ILesson> ret = new HashMap<>();
30             for (Object[] o : res) {
31                 Lecturer lec = (Lecturer) o[0];
32                 Lesson les = (Lesson) o[1];
33                 if (!ret.containsKey(lec)) ret.put(lec, les);
34             }
35             return ret;
36         } catch (NoResultException e) {
37             return new HashMap<>();
38         }
39     }
40 }