1
2
3
4
5
6
7 package ch.colabproject.colab.api.controller.monitoring;
8
9 import ch.colabproject.colab.api.model.monitoring.CronJobLog;
10 import ch.colabproject.colab.api.model.monitoring.CronJobLogName;
11 import ch.colabproject.colab.api.persistence.jpa.monitoring.CronJobLogDao;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
14
15 import javax.ejb.LocalBean;
16 import javax.ejb.Stateless;
17 import javax.ejb.TransactionAttribute;
18 import javax.ejb.TransactionAttributeType;
19 import javax.inject.Inject;
20 import java.time.OffsetDateTime;
21
22
23
24
25
26
27 @Stateless
28 @LocalBean
29 public class CronJobLogManager {
30
31
32
33
34 private static final Logger logger = LoggerFactory.getLogger(CronJobLogManager.class);
35
36
37
38
39 @Inject
40 private CronJobLogDao cronJobLogDao;
41
42
43
44
45
46
47
48
49 private CronJobLog createCronJobLog(CronJobLogName jobLogName) {
50 CronJobLog cronJobLog = new CronJobLog();
51 cronJobLog.setJobName(jobLogName);
52 cronJobLogDao.persistCronJobLog(cronJobLog);
53
54 return cronJobLog;
55 }
56
57
58
59
60
61
62 @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
63 public void updateCronJobLogLastRunTime(CronJobLogName jobName) {
64 logger.debug("Update cronJobLog lastRunTime {}", jobName);
65
66 CronJobLog cronJobLog = cronJobLogDao.findCronJobLogByName(jobName);
67
68 if (cronJobLog == null) {
69 cronJobLog = createCronJobLog(jobName);
70 }
71
72 OffsetDateTime now = OffsetDateTime.now();
73 cronJobLog.setLastRunTime(now);
74
75 }
76 }