ScheduledJobs.java
- package edu.ucsb.cs156.happiercows.jobs;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import edu.ucsb.cs156.happiercows.services.jobs.JobContextConsumer;
- import edu.ucsb.cs156.happiercows.services.jobs.JobService;
- import lombok.extern.slf4j.Slf4j;
- /**
- * This class contains methods that are scheduled to run at certain times
- * to launch particular jobs.
- *
- * The value of the <code>cron</code> parameter to the <code>@Scheduled</code>
- * annotation is a Spring Boot cron expression, which is similar to
- * a Unix cron expression, but with an extra field at the beginning for
- * the seconds.
- *
- * @see <a href="https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html">Spring Cron Syntax</a>
- *
- */
- @Component("scheduledJobs")
- @Slf4j
- public class ScheduledJobs {
- @Autowired
- private JobService jobService;
- @Autowired
- UpdateCowHealthJobFactory updateCowHealthJobFactory;
- @Autowired
- MilkTheCowsJobFactory milkTheCowsJobFactory;
- @Autowired
- RecordCommonStatsJobFactory recordCommonStatsJobFactory;
-
- @Scheduled(cron = "${app.updateCowHealth.cron}", zone = "${spring.jackson.time-zone}")
- public void runUpdateCowHealthJobBasedOnCron() {
- log.info("runUpdateCowHealthJobBasedOnCron: running");
- JobContextConsumer updateCowHealthJob = updateCowHealthJobFactory.create();
- jobService.runAsJob(updateCowHealthJob);
-
- log.info("runUpdateCowHealthJobBasedOnCron: launched job");
- }
- @Scheduled(cron = "${app.milkTheCows.cron}", zone = "${spring.jackson.time-zone}")
- public void runMilkTheCowsJobBasedOnCron() {
- log.info("runMilkTheCowsJobBasedOnCron: running");
- JobContextConsumer milkTheCowsJob = milkTheCowsJobFactory.create();
- jobService.runAsJob(milkTheCowsJob);
-
- log.info("runMilkTheCowsJobBasedOnCron: launched job");
- }
- @Scheduled(cron = "${app.recordCommonStats.cron}", zone = "${spring.jackson.time-zone}")
- public void runRecordCommonStatsJobBasedOnCron() {
- log.info("runRecordCommonStatsJobBasedOnCron: running");
- JobContextConsumer recordCommonStatsJob = recordCommonStatsJobFactory.create();
- jobService.runAsJob(recordCommonStatsJob);
- log.info("runRecordCommonStatsJobBasedOnCron: launched job");
- }
- }