LockSchedulingConfigurer.java
package org.sanmibuh.tedee.lock.infrastructure.primary;
import java.time.ZoneId;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.CronTask;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public final class LockSchedulingConfigurer implements SchedulingConfigurer {
private final LockSchedulerProperties properties;
private final LockScheduler scheduler;
@Override
public void configureTasks(final ScheduledTaskRegistrar registrar) {
final var zone = ZoneId.of(properties.zone());
properties
.schedules()
.forEach(
(deviceId, cron) ->
registrar.addCronTask(
new CronTask(
() -> scheduler.closeLock(deviceId), new CronTrigger(cron, zone))));
}
}