View Javadoc

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   * @author Marc Michele
21   *
22   */
23  @Stateless
24  public class ReservationDao implements ReservationDaoLocal {
25  
26      /*
27       * Statischer Logger der Klasse.
28       */
29      private static final Logger LOGGER = LogManager.getLogger(ReservationDao.class);
30  
31      /*
32       * EntityManager der Dao Klasse.
33       */
34      @PersistenceContext
35      private EntityManager entityManager;
36  
37      /* (non-Javadoc)
38       * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#save(de.tivsource.page.entity.reservation.Reservation)
39       */
40      @Override
41      public void save(Reservation reservation) {
42          LOGGER.info("save(Reservation reservation) aufgerufen");
43          entityManager.persist(reservation);
44      }
45  
46      /* (non-Javadoc)
47       * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#merge(de.tivsource.page.entity.reservation.Reservation)
48       */
49      @Override
50      public void merge(Reservation reservation) {
51          LOGGER.info("merge(Reservation reservation) aufgerufen");
52          entityManager.merge(reservation);
53      }
54  
55      /* (non-Javadoc)
56       * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#delete(de.tivsource.page.entity.reservation.Reservation)
57       */
58      @Override
59      public void delete(Reservation reservation) {
60          entityManager.remove(entityManager.find(Reservation.class, reservation.getUuid()));
61      }
62  
63      /* (non-Javadoc)
64       * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#findByUuid(java.lang.String)
65       */
66      @Override
67      public Reservation findByUuid(String uuid) {
68          return entityManager.find(Reservation.class, uuid);
69      }
70  
71      /* (non-Javadoc)
72       * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#findAll(java.lang.Integer, java.lang.Integer)
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      /* (non-Javadoc)
84       * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#findAll(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String)
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      /* (non-Javadoc)
99       * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#findAll(java.lang.Integer, java.lang.Integer)
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     /* (non-Javadoc)
112      * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#findAll(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String)
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     /* (non-Javadoc)
149      * @see de.tivsource.page.dao.reservation.ReservationDaoLocal#countAll()
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 }// Ende class