1
2
3
4 package de.tivsource.page.dao.reservation;
5
6 import java.util.List;
7
8 import javax.ejb.Stateless;
9 import javax.persistence.EntityManager;
10 import javax.persistence.PersistenceContext;
11 import javax.persistence.Query;
12
13 import org.apache.logging.log4j.LogManager;
14 import org.apache.logging.log4j.Logger;
15
16 import de.tivsource.page.entity.event.Event;
17 import de.tivsource.page.entity.reservation.Reservation;
18
19
20
21
22
23 @Stateless
24 public class ReservationDao implements ReservationDaoLocal {
25
26
27
28
29 private static final Logger LOGGER = LogManager.getLogger(ReservationDao.class);
30
31
32
33
34 @PersistenceContext
35 private EntityManager entityManager;
36
37
38
39
40 @Override
41 public void save(Reservation reservation) {
42 LOGGER.info("save(Reservation reservation) aufgerufen");
43 entityManager.persist(reservation);
44 }
45
46
47
48
49 @Override
50 public void merge(Reservation reservation) {
51 LOGGER.info("merge(Reservation reservation) aufgerufen");
52 entityManager.merge(reservation);
53 }
54
55
56
57
58 @Override
59 public void delete(Reservation reservation) {
60 entityManager.remove(entityManager.find(Reservation.class, reservation.getUuid()));
61 }
62
63
64
65
66 @Override
67 public Reservation findByUuid(String uuid) {
68 return entityManager.find(Reservation.class, uuid);
69 }
70
71
72
73
74 @SuppressWarnings("unchecked")
75 @Override
76 public List<Reservation> findAll(Integer start, Integer max) {
77 Query query = entityManager.createQuery("from Reservation r");
78 query.setFirstResult(start);
79 query.setMaxResults(max);
80 return query.getResultList();
81 }
82
83
84
85
86 @SuppressWarnings("unchecked")
87 @Override
88 public List<Reservation> findAll(Integer start, Integer max, String field,
89 String order) {
90 String queryString = "select r from Reservation r order by ";
91 queryString = queryString + field + " " + order;
92 Query query = entityManager.createQuery(queryString);
93 query.setFirstResult(start);
94 query.setMaxResults(max);
95 return query.getResultList();
96 }
97
98
99
100
101 @SuppressWarnings("unchecked")
102 @Override
103 public List<Reservation> findAll(Event event, Integer start, Integer max) {
104 Query query = entityManager.createQuery("from Reservation r where r.event = :event");
105 query.setFirstResult(start);
106 query.setMaxResults(max);
107 query.setParameter("event", event);
108 return query.getResultList();
109 }
110
111
112
113
114 @SuppressWarnings("unchecked")
115 @Override
116 public List<Reservation> findAll(Event event, Integer start, Integer max, String field, String order) {
117 String queryString = "select r from Reservation r where r.event = :event order by ";
118 queryString = queryString + field + " " + order;
119 Query query = entityManager.createQuery(queryString);
120 query.setFirstResult(start);
121 query.setMaxResults(max);
122 query.setParameter("event", event);
123 return query.getResultList();
124 }
125
126 @SuppressWarnings("unchecked")
127 @Override
128 public List<Reservation> confirmationQueue(Integer start, Integer max) {
129 Query query = entityManager.createQuery("from Reservation r where r.confirmed = :confirmed");
130 query.setFirstResult(start);
131 query.setMaxResults(max);
132 query.setParameter("confirmed", false);
133 return query.getResultList();
134 }
135
136 @SuppressWarnings("unchecked")
137 @Override
138 public List<Reservation> confirmationQueue(Integer start, Integer max, String field, String order) {
139 String queryString = "SELECT DISTINCT r FROM Reservation r JOIN r.event.descriptionMap dm JOIN r.event.location.descriptionMap edm WHERE r.confirmed = :confirmed AND dm.language = 'DE' AND edm.language = 'DE' order by ";
140 queryString = queryString + field + " " + order;
141 Query query = entityManager.createQuery(queryString);
142 query.setFirstResult(start);
143 query.setMaxResults(max);
144 query.setParameter("confirmed", false);
145 return query.getResultList();
146 }
147
148
149
150
151 @Override
152 public Integer countAll() {
153 Query query = entityManager.createQuery("Select Count(r) from Reservation r");
154 return Integer.parseInt(query.getSingleResult().toString());
155 }
156
157 @Override
158 public Integer countAll(Event event) {
159 Query query = entityManager.createQuery("Select Count(r) from Reservation r where r.event = :event");
160 query.setParameter("event", event);
161 return Integer.parseInt(query.getSingleResult().toString());
162 }
163
164 @Override
165 public Integer countConfirmationQueue() {
166 Query query = entityManager.createQuery("Select Count(r) from Reservation r where r.confirmed = :confirmed");
167 query.setParameter("confirmed", false);
168 return Integer.parseInt(query.getSingleResult().toString());
169 }
170
171 @Override
172 public Integer countQuantity(String uuid) {
173 Query query = entityManager.createQuery("select sum(r.quantity) from Reservation r where r.event.uuid = :uuid group by r.event");
174 query.setParameter("uuid", uuid);
175 try {
176 String result = query.getSingleResult().toString();
177 return Integer.parseInt(result);
178 } catch (Exception e) {
179 return 0;
180 }
181 }
182
183 }