View Javadoc

1   /**
2    * 
3    */
4   package de.tivsource.page.dao.event;
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.event.Event;
18  
19  /**
20   * @author Marc Michele
21   *
22   */
23  @Stateless
24  public class EventDao implements EventDaoLocal {
25  
26      /*
27       * Statischer Logger der Klasse.
28       */
29      private static final Logger LOGGER = LogManager.getLogger(EventDao.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.event.EventDaoLocal#save(de.tivsource.page.entity.event.Event)
39       */
40      @Override
41      public void save(Event event) {
42          LOGGER.info("save(Event event) aufgerufen");
43          entityManager.persist(event);
44      }
45  
46      /* (non-Javadoc)
47       * @see de.tivsource.page.dao.event.EventDaoLocal#merge(de.tivsource.page.entity.event.Event)
48       */
49      @Override
50      public void merge(Event event) {
51          LOGGER.info("merge(Event event) aufgerufen");
52          entityManager.merge(event);
53      }
54  
55      /* (non-Javadoc)
56       * @see de.tivsource.page.dao.event.EventDaoLocal#delete(de.tivsource.page.entity.event.Event)
57       */
58      @Override
59      public void delete(Event event) {
60          entityManager.remove(entityManager.find(Event.class, event.getUuid()));
61      }
62  
63      @Override
64      public Boolean isEvent(String uuid) {
65          Query query = entityManager.createQuery("select e from Event e where e.uuid = :uuid and e.visible = 'Y' and e.reservation = 'Y' order by e.uuid asc");
66          query.setParameter("uuid", uuid);
67          return (query.getResultList().size() > 0 ? true : false);
68      }
69  
70      /* (non-Javadoc)
71       * @see de.tivsource.page.dao.event.EventDaoLocal#findByUuid(java.lang.String)
72       */
73      @Override
74      public Event findByUuid(String uuid) {
75          return entityManager.find(Event.class, uuid);
76      }
77  
78      /* (non-Javadoc)
79       * @see de.tivsource.page.dao.event.EventDaoLocal#findAll(java.lang.Integer, java.lang.Integer)
80       */
81      @SuppressWarnings("unchecked")
82      @Override
83      public List<Event> findAll(Integer start, Integer max) {
84          Query query = entityManager.createQuery("from Event e order by e.beginning asc");
85          query.setFirstResult(start);
86          query.setMaxResults(max);
87          return query.getResultList();
88      }
89  
90      /* (non-Javadoc)
91       * @see de.tivsource.page.dao.event.EventDaoLocal#findAll(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String)
92       */
93      @SuppressWarnings("unchecked")
94      @Override
95      public List<Event> findAll(Integer start, Integer max, String field, String order) {
96      	LOGGER.info("findAll(Integer start, Integer max, String field, String order) aufgerufen");
97      	LOGGER.info("Inhalt start: " + start);
98      	LOGGER.info("Inhalt max: " + max);
99      	LOGGER.info("Inhalt field: " + field);
100     	LOGGER.info("Inhalt order: " + order);
101         String queryString = "SELECT DISTINCT e FROM Event e JOIN e.descriptionMap dm JOIN e.location.descriptionMap edm WHERE dm.language = 'DE' AND edm.language = 'DE' ORDER BY ";
102         queryString = queryString + field + " " + order;
103         Query query = entityManager.createQuery(queryString);
104         query.setFirstResult(start);
105         query.setMaxResults(max);
106         return query.getResultList();
107     }
108 
109 	@SuppressWarnings("unchecked")
110 	@Override
111 	public List<Event> findAllActive(Integer start, Integer max) {
112         Query query = entityManager.createQuery("from Event e where e.ending > :date order by e.beginning asc");
113         query.setFirstResult(start);
114         query.setMaxResults(max);
115         query.setParameter("date", new Date());
116         return query.getResultList();
117 	}
118 
119 	@SuppressWarnings("unchecked")
120 	@Override
121 	public List<Event> findAllActive(Integer start, Integer max, String field, String order) {
122         String queryString = "SELECT DISTINCT e FROM Event e JOIN e.descriptionMap dm JOIN e.location.descriptionMap edm WHERE dm.language = 'DE' AND edm.language = 'DE' AND e.ending > :date ORDER BY ";
123         queryString = queryString + field + " " + order;
124         Query query = entityManager.createQuery(queryString);
125         query.setFirstResult(start);
126         query.setMaxResults(max);
127         query.setParameter("date", new Date());
128         return query.getResultList();
129 	}
130 
131     @SuppressWarnings("unchecked")
132     @Override
133     public List<Event> findAll(String uuid, Integer start, Integer max) {
134         Query query = entityManager.createQuery("from Event e where e.location.uuid = :uuid and e.visible = 'Y' and e.beginning > :date order by e.beginning asc");
135         query.setFirstResult(start);
136         query.setMaxResults(max);
137         query.setParameter("uuid", uuid);
138         query.setParameter("date", new Date());
139         return query.getResultList();
140     }
141 
142     /* (non-Javadoc)
143      * @see de.tivsource.page.dao.event.EventDaoLocal#countAll()
144      */
145     @Override
146     public Integer countAll() {
147         Query query = entityManager.createQuery("Select Count(e) from Event e");
148         return Integer.parseInt(query.getSingleResult().toString());
149     }
150 
151 	@Override
152 	public Integer countAllActive() {
153         Query query = entityManager.createQuery("Select Count(e) from Event e where e.ending > :date");
154         query.setParameter("date", new Date());
155         return Integer.parseInt(query.getSingleResult().toString());
156 	}
157 
158     @Override
159     public Integer countAll(String uuid) {
160         Query query = entityManager.createQuery("Select Count(e) from Event e where e.location.uuid = :uuid and e.visible = 'Y' and e.beginning > :date");
161         query.setParameter("uuid", uuid);
162         query.setParameter("date", new Date());
163         return Integer.parseInt(query.getSingleResult().toString());
164     }
165 
166 }// Ende class