1
2
3
4
5
6
7 package ch.colabproject.colab.api.controller;
8
9 import ch.colabproject.colab.api.controller.common.DeletionManager;
10 import ch.colabproject.colab.api.controller.document.ExternalDataManager;
11 import ch.colabproject.colab.api.controller.monitoring.CronJobLogManager;
12 import ch.colabproject.colab.api.model.monitoring.CronJobLogName;
13 import ch.colabproject.colab.api.security.SessionManager;
14 import org.slf4j.Logger;
15 import org.slf4j.LoggerFactory;
16
17 import jakarta.ejb.Schedule;
18 import jakarta.ejb.Singleton;
19 import jakarta.ejb.Startup;
20 import jakarta.inject.Inject;
21
22
23
24
25
26
27 @Singleton
28 @Startup
29 public class CronTab {
30
31
32 private static final Logger logger = LoggerFactory.getLogger(CronTab.class);
33
34
35 @Inject
36 private SessionManager sessionManager;
37
38
39 @Inject
40 private ExternalDataManager externalDataManager;
41
42
43 @Inject
44 private CronJobLogManager cronJobLogManager;
45
46
47 @Inject
48 private DeletionManager deletionManager;
49
50
51
52
53 @Schedule(hour = "*", minute = "*", persistent = false)
54 public void saveActivityDates() {
55 logger.trace("CRON: Persist activity dates to database");
56 sessionManager.writeActivityDatesToDatabaseInTrn();
57 cronJobLogManager.updateCronJobLogLastRunTime(CronJobLogName.SAVE_ACTIVITIES_DATE);
58 }
59
60
61
62
63 @Schedule(hour = "0", minute = "0", persistent = false)
64 public void dropOldHttpSession() {
65 logger.info("CRON: drop expired http session");
66 sessionManager.clearExpiredHttpSessionsInTrn();
67 cronJobLogManager.updateCronJobLogLastRunTime(CronJobLogName.DROP_OLD_HTTP_SESSIONS);
68 }
69
70
71
72
73 @Schedule(hour = "0", minute = "30", persistent = false)
74 public void dropOldUrlMetadata() {
75 logger.info("CRON: clean url metadata cache");
76 externalDataManager.clearOutdated();
77 cronJobLogManager.updateCronJobLogLastRunTime(CronJobLogName.DROP_OLD_URL_METADATA);
78 }
79
80
81
82
83 @Schedule(hour = "1", minute = "0", persistent = false)
84 public void cleanBinColabEntities() {
85 logger.info("CRON: clean bin");
86 deletionManager.cleanBinInTrn();
87 cronJobLogManager.updateCronJobLogLastRunTime(CronJobLogName.CLEAN_BIN);
88 }
89
90
91
92
93 @Schedule(hour = "1", minute = "30", persistent = false)
94 public void deleteForeverColabEntities() {
95 logger.info("CRON: Delete forever old obsolete colab entities");
96 deletionManager.deleteForeverInTrn();
97 cronJobLogManager.updateCronJobLogLastRunTime(CronJobLogName.DELETE_FOREVER);
98 }
99 }