Coverage Summary for Class: WeatherDataImportScheduler (dev.karlkadak.backend.cron)

Class Class, % Method, % Line, %
WeatherDataImportScheduler 100% (1/1) 100% (3/3) 100% (8/8)


 package dev.karlkadak.backend.cron;
 
 import dev.karlkadak.backend.service.WeatherDataImporter;
 import lombok.Setter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
 import org.springframework.scheduling.support.CronTrigger;
 import org.springframework.stereotype.Component;
 
 import java.util.logging.Logger;
 
 /**
  * Used for scheduling the weather data importing using
  * {@link dev.karlkadak.backend.service.WeatherDataImporter WeatherDataImporter} and
  * {@link org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler ThreadPoolTaskScheduler}<br> Also logs the
  * scheduling of imports using {@link java.util.logging.Logger}
  */
 @Component
 public class WeatherDataImportScheduler {
 
     private final ThreadPoolTaskScheduler taskScheduler;
     private final WeatherDataImporter weatherDataImporter;
     private final Logger logger;
 
     /**
      * Cron expression gathered from application.properties based on which {@link #taskScheduler} runs
      * {@link dev.karlkadak.backend.service.WeatherDataImporter#defaultImport WeatherDataImporter.defaultImport}
      */
     @Value("${importer.cron.expression}")
     @Setter
     private String importerCronExpression;
 
     @Autowired
     public WeatherDataImportScheduler(ThreadPoolTaskScheduler taskScheduler, WeatherDataImporter weatherDataImporter,
                                       Logger logger) {
         this.taskScheduler = taskScheduler;
         this.weatherDataImporter = weatherDataImporter;
         this.logger = logger;
     }
 
     /**
      * Initially runs and schedules the
      * {@link dev.karlkadak.backend.service.WeatherDataImporter#defaultImport WeatherDataImporter.defaultImport} method
      * to run using the cron expression specified in application.properties
      */
     public void scheduleImport() {
         weatherDataImporter.defaultImport();
         taskScheduler.schedule(weatherDataImporter::defaultImport, new CronTrigger(importerCronExpression));
         logger.info("Scheduled weather data fetching.");
     }
 }