Skip to content

Commit ba64ea2

Browse files
committed
fix: update the configproperties to fetch the value from .env
1 parent 92b3f20 commit ba64ea2

1 file changed

Lines changed: 84 additions & 85 deletions

File tree

src/main/java/com/iemr/common/config/quartz/QuartzConfig.java

Lines changed: 84 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,12 @@
2424
import java.io.IOException;
2525
import java.util.Properties;
2626

27+
import org.quartz.JobDetail;
2728
import org.quartz.Trigger;
2829
import org.slf4j.Logger;
2930
import org.slf4j.LoggerFactory;
3031
import org.springframework.beans.factory.annotation.Autowired;
32+
import org.springframework.beans.factory.annotation.Value;
3133
import org.springframework.beans.factory.config.PropertiesFactoryBean;
3234
import org.springframework.context.ApplicationContext;
3335
import org.springframework.context.annotation.Bean;
@@ -38,8 +40,6 @@
3840
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
3941
import org.springframework.transaction.PlatformTransactionManager;
4042

41-
import com.iemr.common.utils.config.ConfigProperties;
42-
4343
import jakarta.annotation.PostConstruct;
4444

4545
@Configuration
@@ -55,11 +55,80 @@ public class QuartzConfig {
5555
@Autowired
5656
private ApplicationContext applicationContext;
5757

58+
/*
59+
* These are read through @Value and not through ConfigProperties on purpose.
60+
* ConfigProperties keeps the Environment in a static field that is populated by
61+
* an @Autowired setter on its own bean, so it can still be null while the @Bean
62+
* methods below run - in that case it falls back to reading application.properties
63+
* straight off the classpath, and any ${ENV_VAR} placeholder in there comes back
64+
* as the literal text. getBoolean() then quietly turns that into false and the job
65+
* is scheduled with quartzJobDefaultSchedule instead, with nothing in the log.
66+
* Injected fields are set before any @Bean method is called and go through the
67+
* normal placeholder resolution, so environment overrides are honoured.
68+
*/
69+
@Value("${start-unblock-scheduler:false}")
70+
private boolean startUnblockJob;
71+
@Value("${cron-scheduler-unblock:" + quartzJobDefaultSchedule + "}")
72+
private String unblockSchedule;
73+
74+
@Value("${start-sms-scheduler:false}")
75+
private boolean startSmsJob;
76+
@Value("${cron-scheduler-sms:" + quartzJobDefaultSchedule + "}")
77+
private String smsSchedule;
78+
79+
@Value("${start-email-scheduler:false}")
80+
private boolean startEmailJob;
81+
@Value("${cron-scheduler-email:" + quartzJobDefaultSchedule + "}")
82+
private String emailSchedule;
83+
84+
@Value("${start-registration-scheduler:false}")
85+
private boolean startRegistrationJob;
86+
@Value("${cron-scheduler-registration:" + quartzJobDefaultSchedule + "}")
87+
private String registrationSchedule;
88+
89+
@Value("${start-everwelldatasync-scheduler:false}")
90+
private boolean startEverwellDataSyncJob;
91+
@Value("${cron-scheduler-everwelldatasync:" + quartzJobDefaultSchedule + "}")
92+
private String everwellDataSyncSchedule;
93+
94+
@Value("${start-ctidatasync-scheduler:false}")
95+
private boolean startCtiDataSyncJob;
96+
@Value("${cron-scheduler-ctidatasync:" + quartzJobDefaultSchedule + "}")
97+
private String ctiDataSyncSchedule;
98+
99+
@Value("${start-avni-scheduler:false}")
100+
private boolean startAvniRegistrationJob;
101+
@Value("${cron-avni-registration:" + quartzJobDefaultSchedule + "}")
102+
private String avniRegistrationSchedule;
103+
104+
@Value("${start-nhmdashboard-scheduler:false}")
105+
private boolean startNhmDashboardJob;
106+
@Value("${cron-scheduler-nhmdashboard:" + quartzJobDefaultSchedule + "}")
107+
private String nhmDashboardSchedule;
108+
58109
@PostConstruct
59110
public void init() {
60111
log.debug("QuartzConfig initialized.");
61112
}
62113

114+
/**
115+
* Builds the trigger for a job, logging what it resolved to. A job that is
116+
* switched off gets quartzJobDefaultSchedule, which only comes round on the 31st
117+
* of December - so the log line is the only way to tell "off" apart from
118+
* "misconfigured" without waiting until the end of the year.
119+
*/
120+
private CronTriggerFactoryBean cronTrigger(String jobName, boolean startJob, String schedule,
121+
JobDetail jobDetail) {
122+
String scheduleConfig = startJob ? schedule : quartzJobDefaultSchedule;
123+
log.info("Quartz job {} - enabled: {}, cron: {}", jobName, startJob, scheduleConfig);
124+
125+
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
126+
cronTriggerFactoryBean.setJobDetail(jobDetail);
127+
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
128+
cronTriggerFactoryBean.setGroup(quartzJobGroup);
129+
return cronTriggerFactoryBean;
130+
}
131+
63132
@Bean
64133
public Properties quartzProperties() {
65134
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
@@ -114,17 +183,7 @@ public JobDetailFactoryBean processMQJobForUnblock() {
114183

115184
@Bean
116185
public CronTriggerFactoryBean processMQTriggerForUnblock() {
117-
Boolean startJob = ConfigProperties.getBoolean("start-unblock-scheduler");
118-
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
119-
;
120-
String scheduleConfig = quartzJobDefaultSchedule;
121-
if (startJob) {
122-
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-unblock");
123-
}
124-
cronTriggerFactoryBean.setJobDetail(processMQJobForUnblock().getObject());
125-
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
126-
cronTriggerFactoryBean.setGroup(quartzJobGroup);
127-
return cronTriggerFactoryBean;
186+
return cronTrigger("unblock", startUnblockJob, unblockSchedule, processMQJobForUnblock().getObject());
128187
}
129188

130189
// --------------------------------------------------------------------------------------------------------------
@@ -139,17 +198,7 @@ public JobDetailFactoryBean processMQJobForSMS() {
139198

140199
@Bean
141200
public CronTriggerFactoryBean processMQTriggerForSMS() {
142-
Boolean startJob = ConfigProperties.getBoolean("start-sms-scheduler");
143-
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
144-
;
145-
String scheduleConfig = quartzJobDefaultSchedule;
146-
if (startJob) {
147-
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-sms");
148-
}
149-
cronTriggerFactoryBean.setJobDetail(processMQJobForSMS().getObject());
150-
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
151-
cronTriggerFactoryBean.setGroup(quartzJobGroup);
152-
return cronTriggerFactoryBean;
201+
return cronTrigger("sms", startSmsJob, smsSchedule, processMQJobForSMS().getObject());
153202
}
154203

155204
// --------------------------------------------------------------------------------------------------------------
@@ -164,16 +213,7 @@ public JobDetailFactoryBean processMQJobForEmail() {
164213

165214
@Bean
166215
public CronTriggerFactoryBean processMQTriggerForEmail() {
167-
Boolean startJob = ConfigProperties.getBoolean("start-email-scheduler");
168-
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
169-
String scheduleConfig = quartzJobDefaultSchedule;
170-
if (Boolean.TRUE.equals(startJob)) {
171-
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-email");
172-
}
173-
cronTriggerFactoryBean.setJobDetail(processMQJobForEmail().getObject());
174-
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
175-
cronTriggerFactoryBean.setGroup(quartzJobGroup);
176-
return cronTriggerFactoryBean;
216+
return cronTrigger("email", startEmailJob, emailSchedule, processMQJobForEmail().getObject());
177217
}
178218

179219
// --------------------------------------------------------------------------------------------------------------
@@ -188,16 +228,8 @@ public JobDetailFactoryBean processMQJobForRegistration() {
188228

189229
@Bean
190230
public CronTriggerFactoryBean processMQTriggerForRegistration() {
191-
Boolean startJob = ConfigProperties.getBoolean("start-registration-scheduler");
192-
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
193-
String scheduleConfig = quartzJobDefaultSchedule;
194-
if (startJob) {
195-
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-registration");
196-
}
197-
cronTriggerFactoryBean.setJobDetail(processMQJobForRegistration().getObject());
198-
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
199-
cronTriggerFactoryBean.setGroup(quartzJobGroup);
200-
return cronTriggerFactoryBean;
231+
return cronTrigger("everwell-registration", startRegistrationJob, registrationSchedule,
232+
processMQJobForRegistration().getObject());
201233
}
202234

203235
// --------------------------------------------------------------------------------------------------------------
@@ -212,16 +244,8 @@ public JobDetailFactoryBean processMQJobForEverwellDataSync() {
212244

213245
@Bean
214246
public CronTriggerFactoryBean processMQTriggerForEverwellDataSync() {
215-
Boolean startJob = ConfigProperties.getBoolean("start-everwelldatasync-scheduler");
216-
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
217-
String scheduleConfig = quartzJobDefaultSchedule;
218-
if (startJob) {
219-
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-everwelldatasync");
220-
}
221-
cronTriggerFactoryBean.setJobDetail(processMQJobForEverwellDataSync().getObject());
222-
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
223-
cronTriggerFactoryBean.setGroup(quartzJobGroup);
224-
return cronTriggerFactoryBean;
247+
return cronTrigger("everwell-datasync", startEverwellDataSyncJob, everwellDataSyncSchedule,
248+
processMQJobForEverwellDataSync().getObject());
225249
}
226250

227251
// --------------------------------------------------------------------------------------------------------------
@@ -236,16 +260,8 @@ public JobDetailFactoryBean processMQJobForCtiDataSync() {
236260

237261
@Bean
238262
public CronTriggerFactoryBean processMQTriggerForCtiDataSync() {
239-
Boolean startJob = ConfigProperties.getBoolean("start-ctidatasync-scheduler");
240-
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
241-
String scheduleConfig = quartzJobDefaultSchedule;
242-
if (startJob) {
243-
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-ctidatasync");
244-
}
245-
cronTriggerFactoryBean.setJobDetail(processMQJobForCtiDataSync().getObject());
246-
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
247-
cronTriggerFactoryBean.setGroup(quartzJobGroup);
248-
return cronTriggerFactoryBean;
263+
return cronTrigger("cti-datasync", startCtiDataSyncJob, ctiDataSyncSchedule,
264+
processMQJobForCtiDataSync().getObject());
249265
}
250266

251267
// --------------------------------------------------------------------------------------------------------------
@@ -260,16 +276,8 @@ public JobDetailFactoryBean processMQJobForAvniRegistration() {
260276

261277
@Bean
262278
public CronTriggerFactoryBean processMQTriggerForAvniRegistration() {
263-
Boolean startJob = ConfigProperties.getBoolean("start-avni-scheduler");
264-
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
265-
String scheduleConfig = quartzJobDefaultSchedule;
266-
if (startJob) {
267-
scheduleConfig = ConfigProperties.getPropertyByName("cron-avni-registration");
268-
}
269-
cronTriggerFactoryBean.setJobDetail(processMQJobForAvniRegistration().getObject());
270-
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
271-
cronTriggerFactoryBean.setGroup(quartzJobGroup);
272-
return cronTriggerFactoryBean;
279+
return cronTrigger("avni-registration", startAvniRegistrationJob, avniRegistrationSchedule,
280+
processMQJobForAvniRegistration().getObject());
273281
}
274282

275283
// --------------------------------------------------------------------------------------------------------------
@@ -284,17 +292,8 @@ public JobDetailFactoryBean processMQJobForNHMDashboardData() {
284292

285293
@Bean
286294
public CronTriggerFactoryBean processMQTriggerForNHMDashboardData() {
287-
Boolean startJob = ConfigProperties.getBoolean("start-nhmdashboard-scheduler");
288-
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
289-
String scheduleConfig = quartzJobDefaultSchedule;
290-
if (startJob) {
291-
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-nhmdashboard");
292-
}
293-
cronTriggerFactoryBean.setJobDetail(processMQJobForNHMDashboardData().getObject());
294-
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
295-
cronTriggerFactoryBean.setGroup(quartzJobGroup);
296-
297-
return cronTriggerFactoryBean;
295+
return cronTrigger("nhm-dashboard", startNhmDashboardJob, nhmDashboardSchedule,
296+
processMQJobForNHMDashboardData().getObject());
298297
}
299298

300299
}

0 commit comments

Comments
 (0)