From 599b6fb0b4546e337406e9b47e09a4025bae24c4 Mon Sep 17 00:00:00 2001 From: Fabio Formosa Date: Sat, 3 Sep 2022 16:30:51 +0200 Subject: [PATCH] #52 added the job className to the trigger detail view --- .../simple-trigger-config.component.html | 8 ++++++ .../simple-trigger-config.component.ts | 1 + .../src/app/model/jobDetail.model.ts | 4 +++ .../src/app/model/simple-trigger.form.ts | 1 + .../src/app/model/trigger.model.ts | 2 ++ .../controllers/JobController.java | 21 +++++++++++++++ .../controllers/TriggerController.java | 2 -- .../converters/JobKeyToJobDetailDTO.java | 26 +++++++++++++++++++ .../converters/TriggerToTriggerDTO.java | 4 +++ .../quartzmanager/dto/JobDetailDTO.java | 14 ++++++++++ .../quartzmanager/dto/TriggerDTO.java | 1 + .../services/AbstractSchedulerService.java | 10 ++++--- 12 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 quartz-manager-frontend/src/app/model/jobDetail.model.ts create mode 100644 quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/JobController.java create mode 100644 quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/converters/JobKeyToJobDetailDTO.java create mode 100644 quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/dto/JobDetailDTO.java diff --git a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html index 886f35a..09f615d 100644 --- a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html +++ b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html @@ -14,7 +14,15 @@ matInput placeholder="Repeat Interval [in mills]" name="triggerName" [(ngModel)]="simpleTriggerForm.triggerName"> + +
+ + Job Class + +
diff --git a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts index a9c2587..8c751ed 100644 --- a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts +++ b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts @@ -95,6 +95,7 @@ export class SimpleTriggerConfigComponent implements OnInit { private _fromTriggerToForm = (simpleTrigger: SimpleTrigger): SimpleTriggerForm => { const command = new SimpleTriggerForm(); command.triggerName = simpleTrigger.triggerKeyDTO.name; + command.jobClass = simpleTrigger.jobDetailDTO.jobClassName; command.repeatCount = simpleTrigger.repeatCount; command.repeatInterval = simpleTrigger.repeatInterval; command.startDate = moment(simpleTrigger.startTime); diff --git a/quartz-manager-frontend/src/app/model/jobDetail.model.ts b/quartz-manager-frontend/src/app/model/jobDetail.model.ts new file mode 100644 index 0000000..2fd533f --- /dev/null +++ b/quartz-manager-frontend/src/app/model/jobDetail.model.ts @@ -0,0 +1,4 @@ +export class JobDetail { + jobClassName: string; + description: string; +} diff --git a/quartz-manager-frontend/src/app/model/simple-trigger.form.ts b/quartz-manager-frontend/src/app/model/simple-trigger.form.ts index 165f531..91e4966 100644 --- a/quartz-manager-frontend/src/app/model/simple-trigger.form.ts +++ b/quartz-manager-frontend/src/app/model/simple-trigger.form.ts @@ -2,6 +2,7 @@ import {Moment} from 'moment/moment'; export class SimpleTriggerForm { triggerName: string; + jobClass: string; startDate: Moment; endDate: Moment; repeatCount: number; diff --git a/quartz-manager-frontend/src/app/model/trigger.model.ts b/quartz-manager-frontend/src/app/model/trigger.model.ts index 5b67f47..d49906d 100644 --- a/quartz-manager-frontend/src/app/model/trigger.model.ts +++ b/quartz-manager-frontend/src/app/model/trigger.model.ts @@ -1,5 +1,6 @@ import {TriggerKey} from './triggerKey.model'; import {JobKeyModel} from './jobKey.model'; +import {JobDetail} from './jobDetail.model'; export class Trigger { triggerKeyDTO: TriggerKey; @@ -11,5 +12,6 @@ export class Trigger { misfireInstruction: number; nextFireTime: Date; jobKeyDTO: JobKeyModel; + jobDetailDTO: JobDetail; mayFireAgain: boolean; } diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/JobController.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/JobController.java new file mode 100644 index 0000000..5a37549 --- /dev/null +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/controllers/JobController.java @@ -0,0 +1,21 @@ +package it.fabioformosa.quartzmanager.controllers; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +@RequestMapping("/quartz-manager/jobs") +@RestController +public class JobController extends AbstractTriggerController { + + @GetMapping + public List listJobs(){ + List jobClasses = new ArrayList(); + jobClasses.add(jobClassname); + return jobClasses; + } + +} 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 edff08d..1982df7 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 @@ -64,8 +64,6 @@ public class TriggerController extends AbstractTriggerController { return newTriggerDTO; } - - @PutMapping("/{name}") @Operation(summary = "Reschedule the trigger") @ApiResponses(value = { diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/converters/JobKeyToJobDetailDTO.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/converters/JobKeyToJobDetailDTO.java new file mode 100644 index 0000000..dbb7a9d --- /dev/null +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/converters/JobKeyToJobDetailDTO.java @@ -0,0 +1,26 @@ +package it.fabioformosa.quartzmanager.converters; + +import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverterToDTO; +import it.fabioformosa.quartzmanager.dto.JobDetailDTO; +import lombok.SneakyThrows; +import org.quartz.JobDetail; +import org.quartz.JobKey; +import org.quartz.Scheduler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class JobKeyToJobDetailDTO extends AbstractBaseConverterToDTO { + + @Autowired + private Scheduler scheduler; + + @SneakyThrows + @Override + protected void convert(JobKey jobKey, JobDetailDTO jobDetailDTO) { + JobDetail jobDetail = scheduler.getJobDetail(jobKey); + jobDetailDTO.setJobClassName(jobDetail.getJobClass().getName()); + jobDetailDTO.setDescription(jobDetail.getDescription()); + //jobDetail.getJobDataMap(); + } +} diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/converters/TriggerToTriggerDTO.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/converters/TriggerToTriggerDTO.java index 3c35a2e..576b453 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/converters/TriggerToTriggerDTO.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/converters/TriggerToTriggerDTO.java @@ -1,6 +1,7 @@ package it.fabioformosa.quartzmanager.converters; import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverter; +import it.fabioformosa.quartzmanager.dto.JobDetailDTO; import it.fabioformosa.quartzmanager.dto.JobKeyDTO; import it.fabioformosa.quartzmanager.dto.TriggerDTO; import it.fabioformosa.quartzmanager.dto.TriggerKeyDTO; @@ -30,6 +31,9 @@ public class TriggerToTriggerDTO extend JobKey jobKey = source.getJobKey(); JobKeyDTO jobKeyDTO = conversionService.convert(jobKey, JobKeyDTO.class); target.setJobKeyDTO(jobKeyDTO); + + JobDetailDTO jobDetailDTO = conversionService.convert(jobKey, JobDetailDTO.class); + target.setJobDetailDTO(jobDetailDTO); } @Override diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/dto/JobDetailDTO.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/dto/JobDetailDTO.java new file mode 100644 index 0000000..84998c2 --- /dev/null +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/dto/JobDetailDTO.java @@ -0,0 +1,14 @@ +package it.fabioformosa.quartzmanager.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Data +public class JobDetailDTO { + private String jobClassName; + private String description; + +} diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerDTO.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerDTO.java index 4dd0f26..84fe33f 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerDTO.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/dto/TriggerDTO.java @@ -21,5 +21,6 @@ public class TriggerDTO { private int misfireInstruction; private Date nextFireTime; private JobKeyDTO jobKeyDTO; + private JobDetailDTO jobDetailDTO; private boolean mayFireAgain; } diff --git a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/services/AbstractSchedulerService.java b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/services/AbstractSchedulerService.java index 26c2ed2..2caa12d 100644 --- a/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/services/AbstractSchedulerService.java +++ b/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/services/AbstractSchedulerService.java @@ -1,10 +1,7 @@ package it.fabioformosa.quartzmanager.services; import it.fabioformosa.quartzmanager.exceptions.TriggerNotFoundException; -import org.quartz.Scheduler; -import org.quartz.SchedulerException; -import org.quartz.Trigger; -import org.quartz.TriggerKey; +import org.quartz.*; import org.springframework.core.convert.ConversionService; public class AbstractSchedulerService { @@ -23,4 +20,9 @@ public class AbstractSchedulerService { throw new TriggerNotFoundException(name); return trigger; } + + protected JobDetail getJobDetailByKey(JobKey jobKey) throws SchedulerException { + return scheduler.getJobDetail(jobKey); + } + }