Skip to content
Merged
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.iemr.common-API</groupId>
<artifactId>common-api</artifactId>
<version>3.8.2</version>
<version>3.9.0</version>
<packaging>war</packaging>

<name>Common-API</name>
Expand Down
169 changes: 84 additions & 85 deletions src/main/java/com/iemr/common/config/quartz/QuartzConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,12 @@
import java.io.IOException;
import java.util.Properties;

import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
Expand All @@ -38,8 +40,6 @@
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;

import com.iemr.common.utils.config.ConfigProperties;

import jakarta.annotation.PostConstruct;

@Configuration
Expand All @@ -55,11 +55,80 @@ public class QuartzConfig {
@Autowired
private ApplicationContext applicationContext;

/*
* These are read through @Value and not through ConfigProperties on purpose.
* ConfigProperties keeps the Environment in a static field that is populated by
* an @Autowired setter on its own bean, so it can still be null while the @Bean
* methods below run - in that case it falls back to reading application.properties
* straight off the classpath, and any ${ENV_VAR} placeholder in there comes back
* as the literal text. getBoolean() then quietly turns that into false and the job
* is scheduled with quartzJobDefaultSchedule instead, with nothing in the log.
* Injected fields are set before any @Bean method is called and go through the
* normal placeholder resolution, so environment overrides are honoured.
*/
@Value("${start-unblock-scheduler:false}")
private boolean startUnblockJob;
@Value("${cron-scheduler-unblock:" + quartzJobDefaultSchedule + "}")
private String unblockSchedule;

@Value("${start-sms-scheduler:false}")
private boolean startSmsJob;
@Value("${cron-scheduler-sms:" + quartzJobDefaultSchedule + "}")
private String smsSchedule;

@Value("${start-email-scheduler:false}")
private boolean startEmailJob;
@Value("${cron-scheduler-email:" + quartzJobDefaultSchedule + "}")
private String emailSchedule;

@Value("${start-registration-scheduler:false}")
private boolean startRegistrationJob;
@Value("${cron-scheduler-registration:" + quartzJobDefaultSchedule + "}")
private String registrationSchedule;

@Value("${start-everwelldatasync-scheduler:false}")
private boolean startEverwellDataSyncJob;
@Value("${cron-scheduler-everwelldatasync:" + quartzJobDefaultSchedule + "}")
private String everwellDataSyncSchedule;

@Value("${start-ctidatasync-scheduler:false}")
private boolean startCtiDataSyncJob;
@Value("${cron-scheduler-ctidatasync:" + quartzJobDefaultSchedule + "}")
private String ctiDataSyncSchedule;

@Value("${start-avni-scheduler:false}")
private boolean startAvniRegistrationJob;
@Value("${cron-avni-registration:" + quartzJobDefaultSchedule + "}")
private String avniRegistrationSchedule;

@Value("${start-nhmdashboard-scheduler:false}")
private boolean startNhmDashboardJob;
@Value("${cron-scheduler-nhmdashboard:" + quartzJobDefaultSchedule + "}")
private String nhmDashboardSchedule;

@PostConstruct
public void init() {
log.debug("QuartzConfig initialized.");
}

/**
* Builds the trigger for a job, logging what it resolved to. A job that is
* switched off gets quartzJobDefaultSchedule, which only comes round on the 31st
* of December - so the log line is the only way to tell "off" apart from
* "misconfigured" without waiting until the end of the year.
*/
private CronTriggerFactoryBean cronTrigger(String jobName, boolean startJob, String schedule,
JobDetail jobDetail) {
String scheduleConfig = startJob ? schedule : quartzJobDefaultSchedule;
log.info("Quartz job {} - enabled: {}, cron: {}", jobName, startJob, scheduleConfig);

CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
cronTriggerFactoryBean.setJobDetail(jobDetail);
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);
return cronTriggerFactoryBean;
}

@Bean
public Properties quartzProperties() {
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
Expand Down Expand Up @@ -114,17 +183,7 @@ public JobDetailFactoryBean processMQJobForUnblock() {

@Bean
public CronTriggerFactoryBean processMQTriggerForUnblock() {
Boolean startJob = ConfigProperties.getBoolean("start-unblock-scheduler");
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
;
String scheduleConfig = quartzJobDefaultSchedule;
if (startJob) {
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-unblock");
}
cronTriggerFactoryBean.setJobDetail(processMQJobForUnblock().getObject());
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);
return cronTriggerFactoryBean;
return cronTrigger("unblock", startUnblockJob, unblockSchedule, processMQJobForUnblock().getObject());
}

// --------------------------------------------------------------------------------------------------------------
Expand All @@ -139,17 +198,7 @@ public JobDetailFactoryBean processMQJobForSMS() {

@Bean
public CronTriggerFactoryBean processMQTriggerForSMS() {
Boolean startJob = ConfigProperties.getBoolean("start-sms-scheduler");
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
;
String scheduleConfig = quartzJobDefaultSchedule;
if (startJob) {
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-sms");
}
cronTriggerFactoryBean.setJobDetail(processMQJobForSMS().getObject());
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);
return cronTriggerFactoryBean;
return cronTrigger("sms", startSmsJob, smsSchedule, processMQJobForSMS().getObject());
}

// --------------------------------------------------------------------------------------------------------------
Expand All @@ -164,16 +213,7 @@ public JobDetailFactoryBean processMQJobForEmail() {

@Bean
public CronTriggerFactoryBean processMQTriggerForEmail() {
Boolean startJob = ConfigProperties.getBoolean("start-email-scheduler");
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
String scheduleConfig = quartzJobDefaultSchedule;
if (Boolean.TRUE.equals(startJob)) {
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-email");
}
cronTriggerFactoryBean.setJobDetail(processMQJobForEmail().getObject());
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);
return cronTriggerFactoryBean;
return cronTrigger("email", startEmailJob, emailSchedule, processMQJobForEmail().getObject());
}

// --------------------------------------------------------------------------------------------------------------
Expand All @@ -188,16 +228,8 @@ public JobDetailFactoryBean processMQJobForRegistration() {

@Bean
public CronTriggerFactoryBean processMQTriggerForRegistration() {
Boolean startJob = ConfigProperties.getBoolean("start-registration-scheduler");
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
String scheduleConfig = quartzJobDefaultSchedule;
if (startJob) {
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-registration");
}
cronTriggerFactoryBean.setJobDetail(processMQJobForRegistration().getObject());
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);
return cronTriggerFactoryBean;
return cronTrigger("everwell-registration", startRegistrationJob, registrationSchedule,
processMQJobForRegistration().getObject());
}

// --------------------------------------------------------------------------------------------------------------
Expand All @@ -212,16 +244,8 @@ public JobDetailFactoryBean processMQJobForEverwellDataSync() {

@Bean
public CronTriggerFactoryBean processMQTriggerForEverwellDataSync() {
Boolean startJob = ConfigProperties.getBoolean("start-everwelldatasync-scheduler");
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
String scheduleConfig = quartzJobDefaultSchedule;
if (startJob) {
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-everwelldatasync");
}
cronTriggerFactoryBean.setJobDetail(processMQJobForEverwellDataSync().getObject());
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);
return cronTriggerFactoryBean;
return cronTrigger("everwell-datasync", startEverwellDataSyncJob, everwellDataSyncSchedule,
processMQJobForEverwellDataSync().getObject());
}

// --------------------------------------------------------------------------------------------------------------
Expand All @@ -236,16 +260,8 @@ public JobDetailFactoryBean processMQJobForCtiDataSync() {

@Bean
public CronTriggerFactoryBean processMQTriggerForCtiDataSync() {
Boolean startJob = ConfigProperties.getBoolean("start-ctidatasync-scheduler");
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
String scheduleConfig = quartzJobDefaultSchedule;
if (startJob) {
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-ctidatasync");
}
cronTriggerFactoryBean.setJobDetail(processMQJobForCtiDataSync().getObject());
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);
return cronTriggerFactoryBean;
return cronTrigger("cti-datasync", startCtiDataSyncJob, ctiDataSyncSchedule,
processMQJobForCtiDataSync().getObject());
}

// --------------------------------------------------------------------------------------------------------------
Expand All @@ -260,16 +276,8 @@ public JobDetailFactoryBean processMQJobForAvniRegistration() {

@Bean
public CronTriggerFactoryBean processMQTriggerForAvniRegistration() {
Boolean startJob = ConfigProperties.getBoolean("start-avni-scheduler");
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
String scheduleConfig = quartzJobDefaultSchedule;
if (startJob) {
scheduleConfig = ConfigProperties.getPropertyByName("cron-avni-registration");
}
cronTriggerFactoryBean.setJobDetail(processMQJobForAvniRegistration().getObject());
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);
return cronTriggerFactoryBean;
return cronTrigger("avni-registration", startAvniRegistrationJob, avniRegistrationSchedule,
processMQJobForAvniRegistration().getObject());
}

// --------------------------------------------------------------------------------------------------------------
Expand All @@ -284,17 +292,8 @@ public JobDetailFactoryBean processMQJobForNHMDashboardData() {

@Bean
public CronTriggerFactoryBean processMQTriggerForNHMDashboardData() {
Boolean startJob = ConfigProperties.getBoolean("start-nhmdashboard-scheduler");
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
String scheduleConfig = quartzJobDefaultSchedule;
if (startJob) {
scheduleConfig = ConfigProperties.getPropertyByName("cron-scheduler-nhmdashboard");
}
cronTriggerFactoryBean.setJobDetail(processMQJobForNHMDashboardData().getObject());
cronTriggerFactoryBean.setCronExpression(scheduleConfig);
cronTriggerFactoryBean.setGroup(quartzJobGroup);

return cronTriggerFactoryBean;
return cronTrigger("nhm-dashboard", startNhmDashboardJob, nhmDashboardSchedule,
processMQJobForNHMDashboardData().getObject());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,12 @@ public String getAbdmFacilityDetails(@PathVariable int workLocationId, @RequestH
OutputResponse response = new OutputResponse();

try {

String resp = abdmFacilityService.getMappedAbdmFacility(workLocationId);

if (resp != null)
response.setResponse(resp);

else
response.setResponse("No ABDM facility mapped for this worklocation");
} catch (Exception e) {

response.setError(5000, e.getMessage());
logger.error(e.getMessage());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public ResponseEntity<Object> getQualityReport(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand All @@ -102,7 +102,7 @@ public ResponseEntity<Object> getComplaintDetailReport(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand Down Expand Up @@ -130,7 +130,7 @@ public ResponseEntity<Object> getCallSummaryReport(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand All @@ -155,7 +155,7 @@ public ResponseEntity<Object> getAllBySexualOrientation(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}

}
Expand All @@ -181,7 +181,7 @@ public ResponseEntity<Object> getDistrictWiseCallReport(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand All @@ -205,7 +205,7 @@ public ResponseEntity<Object> getUnblockedUserReport(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand Down Expand Up @@ -233,7 +233,7 @@ public ResponseEntity<Object> getCallQualityReport(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand All @@ -260,7 +260,7 @@ public ResponseEntity<Object> getCountsByPreferredLanguage(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand All @@ -285,7 +285,7 @@ public ResponseEntity<Object> getAllByAgeGroup(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand All @@ -312,7 +312,7 @@ public ResponseEntity<Object> getAllReportsByDate(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand Down Expand Up @@ -340,7 +340,7 @@ public ResponseEntity<Object> getAllByGender(
if (e.getMessage().equalsIgnoreCase("No data found"))
return ResponseEntity.status(500).body(e.getMessage());
else
return ResponseEntity.status(5000).body(e.getMessage());
return ResponseEntity.status(500).body(e.getMessage());
}
}

Expand Down
Loading
Loading