ScheduledJobs.java

  1. package edu.ucsb.cs156.happiercows.jobs;

  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.scheduling.annotation.Scheduled;
  4. import org.springframework.stereotype.Component;

  5. import edu.ucsb.cs156.happiercows.services.jobs.JobContextConsumer;
  6. import edu.ucsb.cs156.happiercows.services.jobs.JobService;
  7. import lombok.extern.slf4j.Slf4j;

  8. /**
  9.  * This class contains methods that are scheduled to run at certain times
  10.  * to launch particular jobs.
  11.  *
  12.  * The value of the <code>cron</code> parameter to the <code>&#64;Scheduled</code>
  13.  * annotation is a Spring Boot cron expression, which is similar to
  14.  * a Unix cron expression, but with an extra field at the beginning for
  15.  * the seconds.
  16.  *
  17.  * @see <a href="https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.html">Spring Cron Syntax</a>
  18.  *
  19.  */

  20. @Component("scheduledJobs")
  21. @Slf4j
  22. public class ScheduledJobs {

  23.    @Autowired
  24.    private JobService jobService;

  25.    @Autowired
  26.    UpdateCowHealthJobFactory updateCowHealthJobFactory;

  27.    @Autowired
  28.    MilkTheCowsJobFactory milkTheCowsJobFactory;

  29.    @Autowired
  30.    RecordCommonStatsJobFactory recordCommonStatsJobFactory;
  31.    
  32.    @Scheduled(cron = "${app.updateCowHealth.cron}", zone = "${spring.jackson.time-zone}")
  33.    public void runUpdateCowHealthJobBasedOnCron() {
  34.       log.info("runUpdateCowHealthJobBasedOnCron: running");

  35.       JobContextConsumer updateCowHealthJob = updateCowHealthJobFactory.create();
  36.       jobService.runAsJob(updateCowHealthJob);
  37.    
  38.       log.info("runUpdateCowHealthJobBasedOnCron: launched job");
  39.    }

  40.    @Scheduled(cron = "${app.milkTheCows.cron}", zone = "${spring.jackson.time-zone}")
  41.    public void runMilkTheCowsJobBasedOnCron() {
  42.       log.info("runMilkTheCowsJobBasedOnCron: running");

  43.       JobContextConsumer milkTheCowsJob = milkTheCowsJobFactory.create();
  44.       jobService.runAsJob(milkTheCowsJob);
  45.    
  46.       log.info("runMilkTheCowsJobBasedOnCron: launched job");
  47.    }

  48.    @Scheduled(cron = "${app.recordCommonStats.cron}", zone = "${spring.jackson.time-zone}")
  49.    public void runRecordCommonStatsJobBasedOnCron() {
  50.       log.info("runRecordCommonStatsJobBasedOnCron: running");

  51.       JobContextConsumer recordCommonStatsJob = recordCommonStatsJobFactory.create();
  52.       jobService.runAsJob(recordCommonStatsJob);

  53.       log.info("runRecordCommonStatsJobBasedOnCron: launched job");
  54.    }
  55. }