View Javadoc
1   /*
2    * The coLAB project
3    * Copyright (C) 2022-2023 AlbaSim, MEI, HEIG-VD, HES-SO
4    *
5    * Licensed under the MIT License
6    */
7   package ch.colabproject.colab.api.persistence.jpa.monitoring;
8   
9   import ch.colabproject.colab.api.model.monitoring.CronJobLog;
10  import ch.colabproject.colab.api.model.monitoring.CronJobLogName;
11  import org.slf4j.Logger;
12  import org.slf4j.LoggerFactory;
13  
14  import javax.ejb.LocalBean;
15  import javax.ejb.Stateless;
16  import javax.persistence.EntityManager;
17  import javax.persistence.NoResultException;
18  import javax.persistence.PersistenceContext;
19  import javax.persistence.TypedQuery;
20  import java.util.List;
21  
22  /**
23   * Cronjob logs persistence
24   *
25   * @author mikkelvestergaard
26   */
27  @Stateless
28  @LocalBean
29  public class CronJobLogDao {
30  
31      /**
32       * logger
33       */
34      private static final Logger logger = LoggerFactory.getLogger(CronJobLogDao.class);
35  
36      /**
37       * Access to the persistence unit
38       */
39      @PersistenceContext(unitName = "COLAB_PU")
40      private EntityManager em;
41  
42  //    /**
43  //     * Find a cronJobLog by id
44  //     *
45  //     * @param id of the cronJobLog to fetch
46  //     *
47  //     * @return the cronJobLog with the given id or null if such a cronJobLog does not exist
48  //     */
49  //    public CronJobLog findCronJobLog(Long id) {
50  //        logger.trace("find cronJobLog #{}", id);
51  //
52  //        return em.find(CronJobLog.class, id);
53  //    }
54  
55      /**
56       * Get all cronJobLogs
57       *
58       * @return list of all cronJobLogs
59       */
60      public List<CronJobLog> findAllCronJobLogs() {
61          logger.trace("find all cronJobLogs");
62  
63          TypedQuery<CronJobLog> query = em.createNamedQuery("CronJobLog.findAll", CronJobLog.class);
64  
65          return query.getResultList();
66      }
67  
68      /**
69       * Find a cronJobLog by name
70       *
71       * @param jobName the name of the cronJobLog
72       *
73       * @return the cronJobLog or null if not found
74       */
75      public CronJobLog findCronJobLogByName(CronJobLogName jobName) {
76          logger.trace("find cronJobLog {}", jobName);
77  
78          try {
79              return em.createNamedQuery("CronJobLog.findByName", CronJobLog.class)
80                      .setParameter("jobName", jobName)
81                      .getSingleResult();
82          } catch (NoResultException ex) {
83              return null;
84          }
85      }
86  
87      /**
88       * Persist the cron job log to the database
89       *
90       * @param cronJobLog the cron job log to persist
91       */
92      public void persistCronJobLog(CronJobLog cronJobLog) {
93          logger.trace("persist cronJobLog {}", cronJobLog);
94  
95          em.persist(cronJobLog);
96      }
97  
98  }