diff --git a/NMSReportingSuite/pom.xml b/NMSReportingSuite/pom.xml
index d2ae0535..83270b55 100644
--- a/NMSReportingSuite/pom.xml
+++ b/NMSReportingSuite/pom.xml
@@ -315,6 +315,39 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/ma
+
+
+ org.apache.activemq
+ activemq-broker
+ 5.15.16
+
+
+ org.apache.activemq
+ activemq-client
+ 5.15.16
+
+
+ org.apache.activemq
+ activemq-spring
+ 5.15.16
+
+
+ org.apache.activemq
+ activemq-pool
+ 5.15.16
+
+
+ org.springframework
+ spring-jms
+ ${springframework.version}
+
+
+ javax.jms
+ javax.jms-api
+ 2.0.1
+
+
+
com.ibm.icu
diff --git a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/business/impl/EtlNotificationServiceImpl.java b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/business/impl/EtlNotificationServiceImpl.java
index 03694472..7df1edb3 100644
--- a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/business/impl/EtlNotificationServiceImpl.java
+++ b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/business/impl/EtlNotificationServiceImpl.java
@@ -12,6 +12,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@@ -33,6 +34,9 @@ public class EtlNotificationServiceImpl implements EtlNotificationService {
@Autowired
private NoticeDao noticeDao;
+ @Autowired
+ private JmsTemplate jmsTemplate;
+
public final String getNoticeTypeAsMonthlyReports = "MONTHLY_REPORTS";
public final String getNoticeTypeAsQuarterReports = "QUARTERLY_NOTICE";
public final String getNoticeTypeAsYearlyReports = "YEARLY_NOTICE";
@@ -213,18 +217,21 @@ private void addGeneratedReportNotifications(List notices, List
@Override
@Transactional
public boolean scheduledNotification() {
- if (isAutoGenerate()){
- try {
- dailyNotifications();
- } catch (Exception e) {
- LOGGER.error("Error occurred while processing daily failed ETL: ", e);
+ if (isAutoGenerate()) {
+ try {
+ jmsTemplate.convertAndSend("etl-notification", "PROCESS_DAILY_NOTIFICATIONS");
+ LOGGER.info("Successfully sent PROCESS_DAILY_NOTIFICATIONS to etl-notification queue.");
+ } catch (Exception e) {
+ LOGGER.error("Error occurred while sending message to etl-notification queue: ", e);
+ return false;
+ }
+ return true;
}
- LOGGER.info("Finished dailyFailedEtlForTheDay method");
- return true;
- }
+ LOGGER.info("Auto-generation is disabled. Skipping scheduled notification.");
return false;
}
+
private java.sql.Date getYesterdayDate() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
diff --git a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/config/ActiveMQConfig.java b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/config/ActiveMQConfig.java
new file mode 100644
index 00000000..80544d77
--- /dev/null
+++ b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/config/ActiveMQConfig.java
@@ -0,0 +1,67 @@
+package com.beehyv.nmsreporting.config;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.command.ActiveMQQueue;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jms.annotation.EnableJms;
+import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
+import org.springframework.jms.config.JmsListenerContainerFactory;
+import org.springframework.jms.core.JmsTemplate;
+import org.springframework.jms.support.converter.MessageConverter;
+import org.springframework.jms.support.converter.SimpleMessageConverter;
+
+import javax.jms.ConnectionFactory;
+import javax.jms.Queue;
+
+import java.util.Arrays;
+
+import static com.beehyv.nmsreporting.utils.Global.getPropertyValueApp;
+
+@Configuration
+@EnableJms
+@ComponentScan(basePackages = {"com.beehyv.nmsreporting.listeners", "com.beehyv.nmsreporting.otherpackages"})
+public class ActiveMQConfig {
+
+ private static final String activeMqUrl = getPropertyValueApp("activeMqUrl");
+
+
+ @Bean
+ public ActiveMQConnectionFactory connectionFactory() {
+ ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();
+ factory.setBrokerURL(activeMqUrl);
+ factory.setTrustAllPackages(false);
+ factory.setTrustedPackages(Arrays.asList(
+ "com.beehyv.nmsreporting.model",
+ "com.beehyv.nmsreporting.entity",
+ "java.util",
+ "java.lang"
+ ));
+ return factory;
+ }
+
+ @Bean
+ public JmsTemplate jmsTemplate() {
+ JmsTemplate template = new JmsTemplate();
+ template.setConnectionFactory(connectionFactory());
+ template.setMessageConverter(messageConverter());
+ return template;
+ }
+
+ @Bean
+ public MessageConverter messageConverter() {
+ return new SimpleMessageConverter();
+ }
+
+ @Bean
+ public JmsListenerContainerFactory> jmsListenerContainerFactory(ConnectionFactory connectionFactory) {
+ DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
+ factory.setConnectionFactory(connectionFactory);
+ // Optional: Configure additional settings
+ factory.setConcurrency("1-5"); // 1-5 concurrent consumers
+ factory.setRecoveryInterval(1000L); // 1 second recovery interval
+ return factory;
+ }
+}
\ No newline at end of file
diff --git a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/entity/ReportMessage.java b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/entity/ReportMessage.java
new file mode 100644
index 00000000..bbd6c2f0
--- /dev/null
+++ b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/entity/ReportMessage.java
@@ -0,0 +1,54 @@
+package com.beehyv.nmsreporting.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+public class ReportMessage implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private String reportType;
+ private Date fromDate;
+ private Date toDate;
+ private boolean isWeekly;
+
+ public ReportMessage() {}
+
+ public ReportMessage(String reportType, Date fromDate, Date toDate, boolean isWeekly) {
+ this.reportType = reportType;
+ this.fromDate = fromDate;
+ this.toDate = toDate;
+ this.isWeekly = isWeekly;
+ }
+
+ public String getReportType() {
+ return reportType;
+ }
+
+ public void setReportType(String reportType) {
+ this.reportType = reportType;
+ }
+
+ public Date getFromDate() {
+ return fromDate;
+ }
+
+ public void setFromDate(Date fromDate) {
+ this.fromDate = fromDate;
+ }
+
+ public Date getToDate() {
+ return toDate;
+ }
+
+ public void setToDate(Date toDate) {
+ this.toDate = toDate;
+ }
+
+ public boolean isWeekly() {
+ return isWeekly;
+ }
+
+ public void setWeekly(boolean weekly) {
+ isWeekly = weekly;
+ }
+}
diff --git a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/job/AshaSmsAutoTargetFileGeneration.java b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/job/AshaSmsAutoTargetFileGeneration.java
index ba581fa4..9250de69 100644
--- a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/job/AshaSmsAutoTargetFileGeneration.java
+++ b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/job/AshaSmsAutoTargetFileGeneration.java
@@ -6,6 +6,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.core.JmsTemplate;
import static com.beehyv.nmsreporting.utils.Global.isAutoGenerate;
@@ -19,18 +20,19 @@ public class AshaSmsAutoTargetFileGeneration {
@Autowired
AshaTargetFileService ashaTargetFileService;
+ @Autowired
+ private JmsTemplate jmsTemplate;
+
public void processTargetFile() {
if (isAutoGenerate()) {
try {
- TargetFileNotification targetFileNotification = ashaTargetFileService.generateTargetFile();
- if (targetFileNotification != null) {
- smsNotificationService.sendNotificationRequest(targetFileNotification);
- } else {
- LOGGER.error("Failed to generate target file.");
- }
+
+ jmsTemplate.convertAndSend("target-file-queue", "PROCESS_TARGET_FILE");
+
+ LOGGER.info("Published target file processing event to 'target-file-queue'.");
} catch (Exception e) {
- LOGGER.error("Error processing target file: {}", e.getMessage(), e);
+ LOGGER.error("Failed to publish target file processing event: {}", e.getMessage(), e);
}
}
}
diff --git a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/job/AutoReportEmailGeneration.java b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/job/AutoReportEmailGeneration.java
index eb222ffe..0483988b 100644
--- a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/job/AutoReportEmailGeneration.java
+++ b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/job/AutoReportEmailGeneration.java
@@ -2,12 +2,19 @@
import com.beehyv.nmsreporting.business.AdminService;
import com.beehyv.nmsreporting.business.EmailService;
+import com.beehyv.nmsreporting.entity.ReportMessage;
import com.beehyv.nmsreporting.enums.ReportType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.core.JmsTemplate;
+import org.springframework.transaction.annotation.Transactional;
+import javax.jms.Destination;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
+import java.util.Queue;
import static com.beehyv.nmsreporting.enums.ReportType.maCourse;
import static com.beehyv.nmsreporting.utils.Global.isAutoGenerate;
@@ -20,27 +27,39 @@ public class AutoReportEmailGeneration {
@Autowired
AdminService adminService;
+ @Autowired
+ private JmsTemplate jmsTemplate;
+
@Autowired
EmailService emailService;
+
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AutoReportEmailGeneration.class);
+
+
+
public boolean executeInternal() {
- if(isAutoGenerate()) {
- Calendar aCalendar = Calendar.getInstance();
- aCalendar.add(Calendar.MONTH, -1);
- aCalendar.set(Calendar.DATE, 1);
- aCalendar.set(Calendar.MILLISECOND, 0);
- aCalendar.set(Calendar.SECOND, 0);
- aCalendar.set(Calendar.MINUTE, 0);
- aCalendar.set(Calendar.HOUR_OF_DAY, 0);
+ if (!isAutoGenerate()) {
+ LOGGER.info("Auto-generation is disabled. Skipping report generation.");
+ return false;
+ }
+ try {
- Date fromDate = aCalendar.getTime();
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.MONTH, -1);
+ calendar.set(Calendar.DATE, 1);
+ calendar.set(Calendar.MILLISECOND, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ Date fromDate = calendar.getTime();
+ calendar.add(Calendar.MONTH, 1);
+ Date toDate = calendar.getTime();
+
+ LOGGER.info("Starting report generation preprocessing for period from {} to {}", fromDate, toDate);
- aCalendar.add(Calendar.MONTH, 1);
- Date toDate = aCalendar.getTime();
- Date startDate = new Date(0);
- /*adminService.getCircleWiseAnonymousFiles(fromDate,toDate);*/
- System.out.println("Report generation started");
adminService.createFiles(maCourse.getReportType());
adminService.createFolders(ReportType.maAnonymous.getReportType());
adminService.createFiles(ReportType.maInactive.getReportType());
@@ -51,52 +70,69 @@ public boolean executeInternal() {
adminService.createFiles(ReportType.motherRejected.getReportType());
adminService.createFiles(ReportType.childRejected.getReportType());
+ LOGGER.info("Preprocessing complete. Files and folders created.");
+
- adminService.createMotherImportRejectedFiles(1,false);
- System.out.println("Mother_Rejection Monthly reports generated");
- adminService.createChildImportRejectedFiles(1,false);
- System.out.println("Child_Rejection Monthly reports generated");
- adminService.getCircleWiseAnonymousFiles(fromDate, toDate);
- System.out.println("MA_Anonymous reports generated");
- adminService.getCumulativeCourseCompletionFiles(toDate);
- System.out.println("MA_Course_Completion reports generated");
- adminService.getCumulativeInactiveFiles(toDate);
- System.out.println("MA_Inactive reports generated");
- adminService.porcessKilkariSixWeekNoAnswerFiles(fromDate, toDate);
- System.out.println("KilkariSixWeekNoAnswer reports generated");
- adminService.processKilkariLowListenershipDeactivationFiles(fromDate, toDate);
- System.out.println("LowListenershipDeactivation reports generated");
- adminService.getKilkariSelfDeactivationFiles(fromDate, toDate);
- System.out.println("KilkariSelfDeactivation reports generated");
- adminService.processKilkariLowUsageFiles(fromDate, toDate);
- System.out.println("KilkariLowUsage reports generated");
- System.out.println("Report generation done");
+ publishReportEvent("Mother_Rejected", "mother-rejected", fromDate, toDate, false);
+ publishReportEvent("Child_Rejected", "child-rejected", fromDate, toDate, false);
+ publishReportEvent("MA_ANONYMOUS", "ma-anonymous-queue", fromDate, toDate, false);
+ publishReportEvent("MA_Course_Completion", "ma-course-completion", fromDate, toDate, false);
+ publishReportEvent("MA_Inactive", "ma-inactive-reports", fromDate, toDate, false);
+ publishReportEvent("KilkariSixWeekNoAnswer", "kilkar-sixWeek-NoAnswer", fromDate, toDate, false);
+ publishReportEvent("LowListenershipDeactivation", "low-listenership-deactivation", fromDate, toDate, false);
+ publishReportEvent("KilkariSelfDeactivation", "kilkari-self-deactivation", fromDate, toDate, false);
+ publishReportEvent("KilkariLowUsage", "kilkari-low-usage", fromDate, toDate, false);
+ LOGGER.info("Report generation events published successfully.");
return true;
+ } catch (Exception e) {
+ LOGGER.error("Error during report generation processing: ", e);
+ return false;
}
- return false;
}
+
+ private void publishReportEvent(String reportType, String queueName, Date fromDate, Date toDate, boolean isWeekly) {
+ ReportMessage reportMessage = new ReportMessage(reportType, fromDate, toDate, isWeekly);
+ try {
+ jmsTemplate.convertAndSend(queueName, reportMessage);
+ LOGGER.info("Published report event: {} to queue: {}", reportType, queueName);
+ } catch (Exception e) {
+ LOGGER.error("Failed to publish report event {} to queue {}: ", reportType, queueName, e);
+ }
+ }
+
+
+
public boolean executeWeekly() {
- if(isAutoGenerate()) {
- Calendar aCalendar = Calendar.getInstance();
- aCalendar.add(Calendar.DAY_OF_WEEK, -(aCalendar.get(Calendar.DAY_OF_WEEK) - 1));
- Date toDate = aCalendar.getTime();
+ if (!isAutoGenerate()) {
+ LOGGER.info("Auto-generation is disabled. Skipping weekly report generation.");
+ return false;
+ }
+ try {
+ Calendar calendar = Calendar.getInstance();
+ int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
+ calendar.add(Calendar.DAY_OF_WEEK, -(dayOfWeek - 1));
+ Date weekStartDate = calendar.getTime();
+
+ Date toDate = new Date();
+
+ LOGGER.info("Weekly report generation: weekStartDate = {}, toDate = {}", weekStartDate, toDate);
+
-// adminService.createFiles(ReportType.flwRejected.getReportType());
adminService.createFiles(ReportType.motherRejected.getReportType());
adminService.createFiles(ReportType.childRejected.getReportType());
-// adminService.createFlwImportRejectedFiles(toDate);
-// System.out.println("FLW_Rejection reports generated");
- adminService.createMotherImportRejectedFiles(1,true);
- System.out.println("Mother_Rejection reports generated");
- adminService.createChildImportRejectedFiles(1,true);
- System.out.println("Child_Rejection reports generated");
+ LOGGER.info("Weekly report generation preprocessing complete. Files and folders created.");
+ publishReportEvent("Mother_Rejected", "mother-rejected", weekStartDate, toDate, true);
+ publishReportEvent("Child_Rejected", "child-rejected", weekStartDate, toDate, true);
+ LOGGER.info("Weekly report generation events published successfully.");
return true;
+ } catch (Exception e) {
+ LOGGER.error("Error during weekly report generation processing: ", e);
+ return false;
}
- return false;
}
public HashMap sendFirstMail() {
diff --git a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/listeners/ReportGenerationListener.java b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/listeners/ReportGenerationListener.java
new file mode 100644
index 00000000..3e3e5968
--- /dev/null
+++ b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/listeners/ReportGenerationListener.java
@@ -0,0 +1,170 @@
+package com.beehyv.nmsreporting.listeners;
+
+import com.beehyv.nmsreporting.business.AshaTargetFileService;
+import com.beehyv.nmsreporting.business.EtlNotificationService;
+import com.beehyv.nmsreporting.business.SmsNotificationService;
+import com.beehyv.nmsreporting.business.impl.TargetFileNotification;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jms.annotation.JmsListener;
+import org.springframework.stereotype.Component;
+
+import com.beehyv.nmsreporting.entity.ReportMessage;
+import com.beehyv.nmsreporting.business.AdminService;
+
+@Component
+public class ReportGenerationListener {
+
+ @Autowired
+ private AdminService adminService;
+
+ @Autowired
+ SmsNotificationService smsNotificationService;
+
+ @Autowired
+ AshaTargetFileService ashaTargetFileService;
+
+ @Autowired
+ private EtlNotificationService etlNotificationService;
+
+ private Logger LOGGER = LoggerFactory.getLogger(ReportGenerationListener.class);
+
+ @JmsListener(destination = "ma-anonymous-queue")
+ public void handleMaAnonymousReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing MA_ANONYMOUS report: from {} to {}", message.getFromDate(), message.getToDate());
+ adminService.getCircleWiseAnonymousFiles(message.getFromDate(), message.getToDate());
+ LOGGER.info("MA_ANONYMOUS report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing MA_ANONYMOUS report: ", e);
+ }
+ }
+
+ @JmsListener(destination = "ma-course-completion")
+ public void handleMaCourseCompletionReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing MA_Course_Completion report: toDate {}", message.getToDate());
+ adminService.getCumulativeCourseCompletionFiles(message.getToDate());
+ LOGGER.info("MA_Course_Completion report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing MA_Course_Completion report: ", e);
+ }
+ }
+
+ @JmsListener(destination = "mother-rejected")
+ public void handleMotherRejectedReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing Mother_Rejected report.");
+ adminService.createMotherImportRejectedFiles(1, message.isWeekly());
+ LOGGER.info("Mother_Rejected report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing Mother_Rejected report: ", e);
+ }
+ }
+
+ @JmsListener(destination = "child-rejected")
+ public void handleChildRejectedReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing Child_Rejected report.");
+ adminService.createChildImportRejectedFiles(1, message.isWeekly());
+ LOGGER.info("Child_Rejected report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing Child_Rejected report: ", e);
+ }
+ }
+
+ @JmsListener(destination = "ma-inactive-reports")
+ public void handleMaInactiveReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing MA_Inactive report: toDate {}", message.getToDate());
+ adminService.getCumulativeInactiveFiles(message.getToDate());
+ LOGGER.info("MA_Inactive report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing MA_Inactive report: ", e);
+ }
+ }
+
+ @JmsListener(destination = "kilkar-sixWeek-NoAnswer")
+ public void handleKilkariSixWeekNoAnswerReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing KilkariSixWeekNoAnswer report: from {} to {}", message.getFromDate(), message.getToDate());
+ adminService.porcessKilkariSixWeekNoAnswerFiles(message.getFromDate(), message.getToDate());
+ LOGGER.info("KilkariSixWeekNoAnswer report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing KilkariSixWeekNoAnswer report: ", e);
+ }
+ }
+
+ @JmsListener(destination = "low-listenership-deactivation")
+ public void handleLowListenershipDeactivationReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing LowListenershipDeactivation report: from {} to {}", message.getFromDate(), message.getToDate());
+ adminService.processKilkariLowListenershipDeactivationFiles(message.getFromDate(), message.getToDate());
+ LOGGER.info("LowListenershipDeactivation report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing LowListenershipDeactivation report: ", e);
+ }
+ }
+
+ @JmsListener(destination = "kilkari-self-deactivation")
+ public void handleKilkariSelfDeactivationReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing KilkariSelfDeactivation report: from {} to {}", message.getFromDate(), message.getToDate());
+ adminService.getKilkariSelfDeactivationFiles(message.getFromDate(), message.getToDate());
+ LOGGER.info("KilkariSelfDeactivation report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing KilkariSelfDeactivation report: ", e);
+ }
+ }
+
+ @JmsListener(destination = "kilkari-low-usage")
+ public void handleKilkariLowUsageReport(ReportMessage message) {
+ try {
+ LOGGER.info("Processing KilkariLowUsage report: from {} to {}", message.getFromDate(), message.getToDate());
+ adminService.processKilkariLowUsageFiles(message.getFromDate(), message.getToDate());
+ LOGGER.info("KilkariLowUsage report generated successfully.");
+ } catch (Exception e) {
+ LOGGER.error("Error processing KilkariLowUsage report: ", e);
+ }
+ }
+
+
+
+ @JmsListener(destination = "target-file-queue")
+ public void handleTargetFileMessage(String message) {
+ if (message == null) {
+ LOGGER.error("Target file message cannot be null");
+ return;
+ }
+
+ LOGGER.info("Processing target file event: {}", message);
+ try {
+ TargetFileNotification notification = ashaTargetFileService.generateTargetFile();
+ if (notification == null) {
+ LOGGER.error("Failed to generate target file.");
+ }
+ smsNotificationService.sendNotificationRequest(notification);
+ LOGGER.info("Target file processed successfully");
+ } catch (Exception e) {
+ LOGGER.error("Error processing target file: {}", e.getMessage(), e);
+ }
+ }
+
+ @JmsListener(destination = "etl-notification")
+ public void handleEtlNotificationMessage(String message) {
+ if (message == null || message.trim().isEmpty()) {
+ LOGGER.warn("Received an empty or null daily notification message. Skipping processing.");
+ return;
+ }
+
+ LOGGER.info("Received daily notification message: {}", message);
+ try {
+ etlNotificationService.dailyNotifications();
+ LOGGER.info("Daily notification processing completed successfully for message: {}", message);
+ } catch (Exception e) {
+ LOGGER.error("Error processing daily notification message: {}. Exception: {}", message, e.getMessage(), e);
+ }
+ }
+
+}
diff --git a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/utils/Global.java b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/utils/Global.java
index bd8e0dd1..3e7844d1 100644
--- a/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/utils/Global.java
+++ b/NMSReportingSuite/src/main/java/com/beehyv/nmsreporting/utils/Global.java
@@ -130,6 +130,21 @@ public static String retrieveUiAddress() {
return uiAddress;
}
+ private static Properties loadAppProperties() {
+ Properties prop = new Properties();
+ try (InputStream input = new FileInputStream(new File("../webapps/NMSReportingSuite/WEB-INF/classes/app.properties"))) {
+ prop.load(input);
+ } catch (IOException ex) {
+ LOGGER.error("Failed to load app.properties", ex);
+ }
+ return prop;
+ }
+
+ public static String getPropertyValueApp(String key) {
+ return loadAppProperties().getProperty(key);
+ }
+
+
public static boolean isAutoGenerate() {
Properties prop = new Properties();
InputStream input = null;