app/housekeeping/HousekeepingScheduler.scala (30 lines of code) (raw):

package housekeeping import org.quartz.{JobDataMap, Scheduler} import org.quartz.JobBuilder._ import org.quartz.TriggerBuilder._ class HousekeepingScheduler( scheduler: Scheduler, housekeepingJobs: List[HousekeepingJob] ) { def initialise(): Unit = { housekeepingJobs.foreach { housekeepingJob => val jobDetail = newJob(classOf[HousekeepingJobWrapper]) .withIdentity(housekeepingJob.jobKey) .usingJobData(buildJobDataMap(housekeepingJob)) .build() val trigger = newTrigger() .withIdentity(housekeepingJob.triggerKey) .withSchedule(housekeepingJob.schedule) .build() scheduler.scheduleJob(jobDetail, trigger) } } private def buildJobDataMap(housekeepingJob: HousekeepingJob): JobDataMap = { val map = new JobDataMap() map.put(HousekeepingScheduler.HousekeepingJobInstance, housekeepingJob) map } } object HousekeepingScheduler { val HousekeepingJobInstance = "HousekeepingJobInstance" }