mirror of
https://github.com/fabioformosa/quartz-manager.git
synced 2026-05-14 22:00:30 +09:00
#14 fixed the trigger rescheduling
This commit is contained in:
@@ -4,14 +4,14 @@
|
|||||||
</mat-card-header>
|
</mat-card-header>
|
||||||
|
|
||||||
<!-- ADD BUTTON -->
|
<!-- ADD BUTTON -->
|
||||||
<mat-card-content *ngIf="!shouldShowTriggerConfig() && !enabledTriggerForm">
|
<mat-card-content *ngIf="!existsATriggerInProgress() && !enabledTriggerForm">
|
||||||
<button mat-fab color="primary">
|
<button mat-fab color="primary">
|
||||||
<mat-icon (click)="enableTriggerForm()">add</mat-icon>
|
<mat-icon (click)="enableTriggerForm()">add</mat-icon>
|
||||||
</button>
|
</button>
|
||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
|
|
||||||
<!-- TRIGGER DETAILS -->
|
<!-- TRIGGER DETAILS -->
|
||||||
<mat-card-content *ngIf="shouldShowTriggerConfig() || enabledTriggerForm">
|
<mat-card-content *ngIf="existsATriggerInProgress() || enabledTriggerForm">
|
||||||
<div fxLayout="column">
|
<div fxLayout="column">
|
||||||
<form name="configForm" fxFlex="1 1 100%" #configForm="ngForm">
|
<form name="configForm" fxFlex="1 1 100%" #configForm="ngForm">
|
||||||
<mat-form-field >
|
<mat-form-field >
|
||||||
|
|||||||
@@ -47,10 +47,12 @@ export class SchedulerConfigComponent implements OnInit {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldShowTriggerConfig = (): boolean => this.fetchedTriggers && this.triggerInProgress;
|
existsATriggerInProgress = (): boolean => this.fetchedTriggers && this.triggerInProgress;
|
||||||
|
|
||||||
submitConfig = () => {
|
submitConfig = () => {
|
||||||
this.schedulerService.updateConfig(this.config)
|
const schedulerServiceCall = this.existsATriggerInProgress() ? this.schedulerService.updateConfig : this.schedulerService.saveConfig;
|
||||||
|
|
||||||
|
schedulerServiceCall(this.config)
|
||||||
.subscribe(res => {
|
.subscribe(res => {
|
||||||
this.configBackup = this.config;
|
this.configBackup = this.config;
|
||||||
this.enabledTriggerForm = false;
|
this.enabledTriggerForm = false;
|
||||||
@@ -61,5 +63,5 @@ export class SchedulerConfigComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
enableTriggerForm = () => this.enabledTriggerForm = true;
|
enableTriggerForm = () => this.enabledTriggerForm = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,9 +37,13 @@ export class SchedulerService {
|
|||||||
return this.apiService.get(getBaseUrl() + '/quartz-manager/scheduler/config')
|
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)
|
return this.apiService.post(getBaseUrl() + '/quartz-manager/triggers/mytrigger', config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updateConfig = (config: Object) => {
|
||||||
|
return this.apiService.put(getBaseUrl() + '/quartz-manager/triggers/mytrigger', config)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Value;
|
|||||||
import org.springframework.core.convert.ConversionService;
|
import org.springframework.core.convert.ConversionService;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RequestMapping("/quartz-manager/triggers")
|
@RequestMapping("/quartz-manager/triggers")
|
||||||
@RestController
|
@RestController
|
||||||
@@ -54,6 +56,7 @@ public class TriggerController {
|
|||||||
.withRepeatCount(config.getMaxCount() - 1)
|
.withRepeatCount(config.getMaxCount() - 1)
|
||||||
.withMisfireHandlingInstructionNextWithRemainingCount()
|
.withMisfireHandlingInstructionNextWithRemainingCount()
|
||||||
)
|
)
|
||||||
|
.withIdentity(name)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
// Optional<TriggerKey> optionalTriggerKey = schedulerService.getTriggerByKey(name);
|
// Optional<TriggerKey> optionalTriggerKey = schedulerService.getTriggerByKey(name);
|
||||||
@@ -68,5 +71,34 @@ public class TriggerController {
|
|||||||
return newTriggerDTO;
|
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<TriggerKey> 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user