diff --git a/pom.xml b/pom.xml index 6bc198c..db931e6 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,7 @@ UTF-8 1.8 1.8 + 2.19.0 @@ -28,12 +29,12 @@ org.apache.logging.log4j log4j-api - 2.13.0 + ${ver-log4j2} org.apache.logging.log4j log4j-core - 2.13.0 + ${ver-log4j2} commons-cli @@ -61,6 +62,12 @@ RELEASE compile + + org.apache.logging.log4j + log4j-slf4j-impl + ${ver-log4j2} + + diff --git a/src/main/java/org/leolo/nrdatad/App.java b/src/main/java/org/leolo/nrdatad/App.java index 4ccbceb..4665cb3 100644 --- a/src/main/java/org/leolo/nrdatad/App.java +++ b/src/main/java/org/leolo/nrdatad/App.java @@ -5,8 +5,8 @@ import org.apache.commons.cli.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.leolo.nrdatad.db.DatabaseManager; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; +import org.leolo.nrdatad.org.leolo.nrdatad.cron.ReferenceDataJob; +import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.io.IOException; @@ -90,12 +90,21 @@ public class App { return; } loadCronJob(); + while(true); } private void loadCronJob() { log.atDebug().log("Start loading cron jobs"); try { scheduler = StdSchedulerFactory.getDefaultScheduler(); + scheduler.start(); + if(ConfigurationManager.getInstance().getProperty(Constants.Configuration.ALWAYS_RUN_REF_DATA,"").equals("true")){ + log.atInfo().log("Loading Reference data now"); + scheduler.scheduleJob( + JobBuilder.newJob(ReferenceDataJob.class).withIdentity("J-OF-"+Constants.CronJob.REFERENCE_DATA).build(), + TriggerBuilder.newTrigger().withIdentity("T-OF-"+Constants.CronJob.REFERENCE_DATA).startAt(DateBuilder.evenSecondDateAfterNow()).build() + ); + } } catch (SchedulerException e) { log.atFatal().withThrowable(e).log("Unable to create cron jobs"); } diff --git a/src/main/java/org/leolo/nrdatad/Constants.java b/src/main/java/org/leolo/nrdatad/Constants.java new file mode 100644 index 0000000..c955249 --- /dev/null +++ b/src/main/java/org/leolo/nrdatad/Constants.java @@ -0,0 +1,16 @@ +package org.leolo.nrdatad; + +public final class Constants { + public static class Metadata{ + public static final String LAST_LTP = "01-last-ltp-time"; + } + + public static class CronJob{ + public static final String REFERENCE_DATA = "refd"; + } + + public static class Configuration { + public static final String ALWAYS_RUN_LTP = "cron.ltp.always"; + public static final String ALWAYS_RUN_REF_DATA = "cron.ref.always"; + } +} diff --git a/src/main/java/org/leolo/nrdatad/org/leolo/nrdatad/cron/ReferenceDataJob.java b/src/main/java/org/leolo/nrdatad/org/leolo/nrdatad/cron/ReferenceDataJob.java new file mode 100644 index 0000000..31ff47f --- /dev/null +++ b/src/main/java/org/leolo/nrdatad/org/leolo/nrdatad/cron/ReferenceDataJob.java @@ -0,0 +1,17 @@ +package org.leolo.nrdatad.org.leolo.nrdatad.cron; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +public class ReferenceDataJob implements Job { + + Logger log = LogManager.getLogger(); + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + log.atInfo().log("Load reference data triggered at {}", context.getFireTime()); + } +}