View Javadoc

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   * @author Marc Michele
21   *
22   */
23  @Stateless
24  public class AppointmentDao implements AppointmentDaoLocal {
25  
26      /*
27       * Statischer Logger der Klasse.
28       */
29      private static final Logger LOGGER = LogManager.getLogger(AppointmentDao.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.appointment.AppointmentDaoLocal#save(de.tivsource.page.entity.appointment.Appointment)
39       */
40      @Override
41      public void save(Appointment appointment) {
42          LOGGER.info("save(Appointment appointment) aufgerufen");
43          entityManager.persist(appointment);
44      }
45  
46      /* (non-Javadoc)
47       * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#merge(de.tivsource.page.entity.appointment.Appointment)
48       */
49      @Override
50      public void merge(Appointment appointment) {
51          LOGGER.info("merge(Appointment appointment) aufgerufen");
52          entityManager.merge(appointment);
53      }
54  
55      /* (non-Javadoc)
56       * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#delete(de.tivsource.page.entity.appointment.Appointment)
57       */
58      @Override
59      public void delete(Appointment appointment) {
60          entityManager.remove(entityManager.find(Appointment.class, appointment.getUuid()));
61      }
62  
63      /* (non-Javadoc)
64       * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#isAppointmentUuid(java.lang.String)
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      /* (non-Javadoc)
74       * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#findByUuid(java.lang.String)
75       */
76      @Override
77      public Appointment findByUuid(String uuid) {
78          return entityManager.find(Appointment.class, uuid);
79      }
80  
81      /* (non-Javadoc)
82       * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#findAll(java.lang.Integer, java.lang.Integer)
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      /* (non-Javadoc)
94       * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#findAll(java.lang.Integer, java.lang.Integer, java.lang.String, java.lang.String)
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     /* (non-Javadoc)
108      * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#findAllVisible(java.lang.Integer, java.lang.Integer)
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     /* (non-Javadoc)
133      * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#countAll()
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     /* (non-Javadoc)
142      * @see de.tivsource.page.dao.appointment.AppointmentDaoLocal#countAllVisible()
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 }// Ende class