From 70827393b72d7b015717fe34d598e409b2677487 Mon Sep 17 00:00:00 2001 From: Fabio Formosa Date: Sat, 30 Oct 2021 00:22:44 +0200 Subject: [PATCH] #14 fixed the trigger rescheduling --- .../scheduler-config.component.html | 4 +-- .../scheduler-config.component.ts | 8 +++-- .../src/app/services/scheduler.service.ts | 6 +++- .../controllers/TriggerController.java | 32 +++++++++++++++++++ 4 files changed, 44 insertions(+), 6 deletions(-) diff --git a/quartz-manager-frontend/src/app/components/scheduler-config/scheduler-config.component.html b/quartz-manager-frontend/src/app/components/scheduler-config/scheduler-config.component.html index 630519b..fce2ade 100644 --- a/quartz-manager-frontend/src/app/components/scheduler-config/scheduler-config.component.html +++ b/quartz-manager-frontend/src/app/components/scheduler-config/scheduler-config.component.html @@ -4,14 +4,14 @@ - + - +
diff --git a/quartz-manager-frontend/src/app/components/scheduler-config/scheduler-config.component.ts b/quartz-manager-frontend/src/app/components/scheduler-config/scheduler-config.component.ts index ea5cd31..6106e8c 100644 --- a/quartz-manager-frontend/src/app/components/scheduler-config/scheduler-config.component.ts +++ b/quartz-manager-frontend/src/app/components/scheduler-config/scheduler-config.component.ts @@ -47,10 +47,12 @@ export class SchedulerConfigComponent implements OnInit { }) } - shouldShowTriggerConfig = (): boolean => this.fetchedTriggers && this.triggerInProgress; + existsATriggerInProgress = (): boolean => this.fetchedTriggers && this.triggerInProgress; submitConfig = () => { - this.schedulerService.updateConfig(this.config) + const schedulerServiceCall = this.existsATriggerInProgress() ? this.schedulerService.updateConfig : this.schedulerService.saveConfig; + + schedulerServiceCall(this.config) .subscribe(res => { this.configBackup = this.config; this.enabledTriggerForm = false; @@ -61,5 +63,5 @@ export class SchedulerConfigComponent implements OnInit { }); }; - enableTriggerForm = () => this.enabledTriggerForm = true; + enableTriggerForm = () => this.enabledTriggerForm = true; } diff --git a/quartz-manager-frontend/src/app/services/scheduler.service.ts b/quartz-manager-frontend/src/app/services/scheduler.service.ts index 930df9f..ead76f3 100644 --- a/quartz-manager-frontend/src/app/services/scheduler.service.ts +++ b/quartz-manager-frontend/src/app/services/scheduler.service.ts @@ -37,9 +37,13 @@ export class SchedulerService { return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler/config') } - updateConfig = (config: Object) => { + saveConfig = (config: Object) => { return this.apiService.post(getBaseUrl() + '/quartz-manager/triggers/mytrigger', config) } + updateConfig = (config: Object) => { + return this.apiService.put(getBaseUrl() + '/quartz-manager/triggers/mytrigger', config) + } + } diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/TriggerController.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/TriggerController.java index f3d8be3..9bb9498 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/TriggerController.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/TriggerController.java @@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.core.convert.ConversionService; import org.springframework.web.bind.annotation.*; +import java.util.Optional; + @Slf4j @RequestMapping("/quartz-manager/triggers") @RestController @@ -54,6 +56,7 @@ public class TriggerController { .withRepeatCount(config.getMaxCount() - 1) .withMisfireHandlingInstructionNextWithRemainingCount() ) + .withIdentity(name) .build(); // Optional optionalTriggerKey = schedulerService.getTriggerByKey(name); @@ -68,5 +71,34 @@ public class TriggerController { return newTriggerDTO; } + @PutMapping("/{name}") + public TriggerDTO rescheduleTrigger(@PathVariable String name, @RequestBody SchedulerConfigParam config) throws SchedulerException, ClassNotFoundException { + log.info("TRIGGER - RESCHEDULE trigger {}", config); + int intervalInMills = SchedulerService.fromTriggerPerDayToMillsInterval(config.getTriggerPerDay()); + + Optional optionalTriggerKey = schedulerService.getTriggerByKey(name); + TriggerKey triggerKey = optionalTriggerKey.orElse(TriggerKey.triggerKey(name)); + Trigger trigger = scheduler.getTrigger(triggerKey); + + Trigger newTrigger = TriggerBuilder.newTrigger() + .withSchedule( + SimpleScheduleBuilder.simpleSchedule() + .withIntervalInMilliseconds(intervalInMills) + .withRepeatCount(config.getMaxCount() - 1) + .withMisfireHandlingInstructionNextWithRemainingCount() + ) + .forJob(trigger.getJobKey().getName()) + .withIdentity(name) + .build(); + +// scheduler.scheduleJob(jobDetail, newTrigger); + scheduler.rescheduleJob(triggerKey, newTrigger); + + TriggerDTO newTriggerDTO = conversionService.convert(newTrigger, TriggerDTO.class); + + log.info("Rescheduled new trigger {}", newTriggerDTO); + return newTriggerDTO; + } + }