1
2
3
4 package de.tivsource.page.dao.appointment;
5
6 import java.util.Date;
7 import java.util.List;
8
9 import javax.ejb.Stateless;
10 import javax.persistence.EntityManager;
11 import javax.persistence.PersistenceContext;
12 import javax.persistence.Query;
13
14 import org.apache.logging.log4j.LogManager;
15 import org.apache.logging.log4j.Logger;
16
17 import de.tivsource.page.entity.appointment.Appointment;
18
19
20
21
22
23 @Stateless
24 public class AppointmentDao implements AppointmentDaoLocal {
25
26
27
28
29 private static final Logger LOGGER = LogManager.getLogger(AppointmentDao.class);
30
31
32
33
34 @PersistenceContext
35 private EntityManager entityManager;
36
37
38
39
40 @Override
41 public void save(Appointment appointment) {
42 LOGGER.info("save(Appointment appointment) aufgerufen");
43 entityManager.persist(appointment);
44 }
45
46
47
48
49 @Override
50 public void merge(Appointment appointment) {
51 LOGGER.info("merge(Appointment appointment) aufgerufen");
52 entityManager.merge(appointment);
53 }
54
55
56
57
58 @Override
59 public void delete(Appointment appointment) {
60 entityManager.remove(entityManager.find(Appointment.class, appointment.getUuid()));
61 }
62
63
64
65
66 @Override
67 public Boolean isAppointmentUuid(String uuid) {
68 Query query = entityManager.createQuery("select ap from Appointment ap where ap.uuid = :uuid and ap.visible = 'Y' order by ap.uuid asc");
69 query.setParameter("uuid", uuid);
70 return (query.getResultList().size() > 0 ? true : false);
71 }
72
73
74
75
76 @Override
77 public Appointment findByUuid(String uuid) {
78 return entityManager.find(Appointment.class, uuid);
79 }
80
81
82
83
84 @SuppressWarnings("unchecked")
85 @Override
86 public List<Appointment> findAll(Integer start, Integer max) {
87 Query query = entityManager.createQuery("from Appointment ap ORDER by ap.uuid");
88 query.setFirstResult(start);
89 query.setMaxResults(max);
90 return query.getResultList();
91 }
92
93
94
95
96 @SuppressWarnings("unchecked")
97 @Override
98 public List<Appointment> findAll(Integer start, Integer max, String field, String order) {
99 String queryString = "SELECT DISTINCT ap FROM Appointment ap JOIN ap.descriptionMap dm WHERE dm.language = 'DE' ORDER BY ";
100 queryString = queryString + field + " " + order;
101 Query query = entityManager.createQuery(queryString);
102 query.setFirstResult(start);
103 query.setMaxResults(max);
104 return query.getResultList();
105 }
106
107
108
109
110 @SuppressWarnings("unchecked")
111 @Override
112 public List<Appointment> findAllVisible(Integer start, Integer max) {
113 String queryString = "SELECT ap FROM Appointment ap WHERE ap.pointInTime > :date AND ap.visible = 'Y' AND ap.visibleFrom < :date ORDER BY ap.pointInTime asc";
114 Query query = entityManager.createQuery(queryString);
115 query.setFirstResult(start);
116 query.setMaxResults(max);
117 query.setParameter("date", new Date());
118 return query.getResultList();
119 }
120
121 @SuppressWarnings("unchecked")
122 @Override
123 public List<Appointment> findAllArchiveVisible(Integer start, Integer max) {
124 String queryString = "SELECT ap FROM Appointment ap WHERE ap.pointInTime < :date AND ap.visible = 'Y' ORDER BY ap.pointInTime desc";
125 Query query = entityManager.createQuery(queryString);
126 query.setFirstResult(start);
127 query.setMaxResults(max);
128 query.setParameter("date", new Date());
129 return query.getResultList();
130 }
131
132
133
134
135 @Override
136 public Integer countAll() {
137 Query query = entityManager.createQuery("Select Count(ap) from Appointment ap");
138 return Integer.parseInt(query.getSingleResult().toString());
139 }
140
141
142
143
144 @Override
145 public Integer countAllVisible() {
146 Query query = entityManager.createQuery("Select Count(ap) from Appointment ap WHERE ap.pointInTime > :date AND ap.visible = 'Y'");
147 query.setParameter("date", new Date());
148 return Integer.parseInt(query.getSingleResult().toString());
149 }
150
151 @Override
152 public Integer countAllArchiveVisible() {
153 Query query = entityManager.createQuery("Select Count(ap) from Appointment ap WHERE ap.pointInTime < :date AND ap.visible = 'Y'");
154 query.setParameter("date", new Date());
155 return Integer.parseInt(query.getSingleResult().toString());
156 }
157
158 }