mirror of
https://github.com/fabioformosa/quartz-manager.git
synced 2026-05-15 06:10:29 +09:00
#56 step into layout revamp
This commit is contained in:
@@ -9,8 +9,8 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
import it.fabioformosa.quartzmanager.dto.SchedulerConfigParam;
|
||||
import it.fabioformosa.quartzmanager.dto.SchedulerDTO;
|
||||
import it.fabioformosa.quartzmanager.dto.TriggerStatus;
|
||||
import it.fabioformosa.quartzmanager.enums.SchedulerStates;
|
||||
import it.fabioformosa.quartzmanager.services.LegacySchedulerService;
|
||||
import it.fabioformosa.quartzmanager.services.SchedulerService;
|
||||
import org.quartz.SchedulerException;
|
||||
import org.quartz.SimpleTrigger;
|
||||
import org.quartz.impl.triggers.SimpleTriggerImpl;
|
||||
@@ -24,8 +24,6 @@ import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* This controller provides scheduler info about config and status. It provides
|
||||
@@ -42,8 +40,11 @@ public class SchedulerController {
|
||||
|
||||
private LegacySchedulerService legacySchedulerService;
|
||||
|
||||
public SchedulerController(LegacySchedulerService legacySchedulerService, ConversionService conversionService) {
|
||||
private SchedulerService schedulerService;
|
||||
|
||||
public SchedulerController(LegacySchedulerService legacySchedulerService, SchedulerService schedulerService, ConversionService conversionService) {
|
||||
this.legacySchedulerService = legacySchedulerService;
|
||||
this.schedulerService = schedulerService;
|
||||
this.conversionService = conversionService;
|
||||
}
|
||||
|
||||
@@ -82,9 +83,8 @@ public class SchedulerController {
|
||||
schema = @Schema(implementation = SchedulerDTO.class)) })
|
||||
})
|
||||
public SchedulerDTO getScheduler() {
|
||||
log.debug("SCHEDULER - GET Scheduler...");
|
||||
SchedulerDTO schedulerDTO = conversionService.convert(legacySchedulerService.getScheduler(), SchedulerDTO.class);
|
||||
return schedulerDTO;
|
||||
log.trace("SCHEDULER - GET Scheduler...");
|
||||
return schedulerService.getScheduler();
|
||||
}
|
||||
|
||||
//TODO move this to the Trigger Controller
|
||||
@@ -113,24 +113,26 @@ public class SchedulerController {
|
||||
return progress;
|
||||
}
|
||||
|
||||
@GetMapping(value = "/status", produces = "application/json")
|
||||
@Operation(summary = "Get the scheduler status")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "Return the scheduler status",
|
||||
content = { @Content(mediaType = "application/json",
|
||||
schema = @Schema(implementation = SchedulerStates.class)) })
|
||||
})
|
||||
public Map<String, String> getStatus() throws SchedulerException {
|
||||
log.trace("SCHEDULER - GET STATUS");
|
||||
String schedulerState = "";
|
||||
if (legacySchedulerService.getScheduler().isShutdown() || !legacySchedulerService.getScheduler().isStarted())
|
||||
schedulerState = SchedulerStates.STOPPED.toString();
|
||||
else if (legacySchedulerService.getScheduler().isStarted() && legacySchedulerService.getScheduler().isInStandbyMode())
|
||||
schedulerState = SchedulerStates.PAUSED.toString();
|
||||
else
|
||||
schedulerState = SchedulerStates.RUNNING.toString();
|
||||
return Collections.singletonMap("data", schedulerState.toLowerCase());
|
||||
}
|
||||
|
||||
//REMOVEME
|
||||
// @GetMapping(value = "/status", produces = "application/json")
|
||||
// @Operation(summary = "Get the scheduler status")
|
||||
// @ApiResponses(value = {
|
||||
// @ApiResponse(responseCode = "200", description = "Return the scheduler status",
|
||||
// content = { @Content(mediaType = "application/json",
|
||||
// schema = @Schema(implementation = SchedulerStates.class)) })
|
||||
// })
|
||||
// public Map<String, String> getStatus() throws SchedulerException {
|
||||
// log.trace("SCHEDULER - GET STATUS");
|
||||
// String schedulerState = "";
|
||||
// if (legacySchedulerService.getScheduler().isShutdown() || !legacySchedulerService.getScheduler().isStarted())
|
||||
// schedulerState = SchedulerStates.STOPPED.toString();
|
||||
// else if (legacySchedulerService.getScheduler().isStarted() && legacySchedulerService.getScheduler().isInStandbyMode())
|
||||
// schedulerState = SchedulerStates.PAUSED.toString();
|
||||
// else
|
||||
// schedulerState = SchedulerStates.RUNNING.toString();
|
||||
// return Collections.singletonMap("data", schedulerState.toLowerCase());
|
||||
// }
|
||||
|
||||
@GetMapping("/pause")
|
||||
@Operation(summary = "Get paused the scheduler")
|
||||
|
||||
@@ -10,12 +10,14 @@ import it.fabioformosa.quartzmanager.dto.SchedulerConfigParam;
|
||||
import it.fabioformosa.quartzmanager.dto.TriggerDTO;
|
||||
import it.fabioformosa.quartzmanager.exceptions.TriggerNotFoundException;
|
||||
import it.fabioformosa.quartzmanager.services.LegacySchedulerService;
|
||||
import it.fabioformosa.quartzmanager.services.TriggerService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.quartz.SchedulerException;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@RequestMapping(TriggerController.TRIGGER_CONTROLLER_BASE_URL)
|
||||
@@ -26,11 +28,19 @@ public class TriggerController extends AbstractTriggerController {
|
||||
static public final String TRIGGER_CONTROLLER_BASE_URL = "/quartz-manager/triggers";
|
||||
|
||||
private LegacySchedulerService schedulerService;
|
||||
private TriggerService triggerService;
|
||||
|
||||
public TriggerController(LegacySchedulerService schedulerService) {
|
||||
public TriggerController(LegacySchedulerService schedulerService, TriggerService triggerService) {
|
||||
this.schedulerService = schedulerService;
|
||||
this.triggerService = triggerService;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<TriggerDTO> listTriggers() throws SchedulerException {
|
||||
return triggerService.fetchTriggers();
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("/{name}")
|
||||
public TriggerDTO getTrigger(@PathVariable String name) throws SchedulerException, TriggerNotFoundException {
|
||||
return schedulerService.getLegacyTriggerByName(name);
|
||||
|
||||
@@ -2,8 +2,10 @@ package it.fabioformosa.quartzmanager.converters;
|
||||
|
||||
import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverterToDTO;
|
||||
import it.fabioformosa.quartzmanager.dto.SchedulerDTO;
|
||||
import it.fabioformosa.quartzmanager.enums.SchedulerStatus;
|
||||
import lombok.SneakyThrows;
|
||||
import org.quartz.Scheduler;
|
||||
import org.quartz.SchedulerException;
|
||||
import org.quartz.impl.matchers.GroupMatcher;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -16,6 +18,15 @@ public class SchedulerToSchedulerDTO extends AbstractBaseConverterToDTO<Schedule
|
||||
target.setName(source.getSchedulerName());
|
||||
target.setInstanceId(source.getSchedulerInstanceId());
|
||||
target.setTriggerKeys(source.getTriggerKeys(GroupMatcher.anyTriggerGroup()));
|
||||
target.setStatus(buildTheSchedulerStatus(source));
|
||||
}
|
||||
|
||||
private SchedulerStatus buildTheSchedulerStatus(Scheduler scheduler) throws SchedulerException {
|
||||
if (scheduler.isShutdown() || !scheduler.isStarted())
|
||||
return SchedulerStatus.STOPPED;
|
||||
else if (scheduler.isStarted() && scheduler.isInStandbyMode())
|
||||
return SchedulerStatus.PAUSED;
|
||||
return SchedulerStatus.RUNNING;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,35 +1,19 @@
|
||||
package it.fabioformosa.quartzmanager.dto;
|
||||
|
||||
import it.fabioformosa.quartzmanager.enums.SchedulerStatus;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.quartz.TriggerKey;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Data
|
||||
public class SchedulerDTO {
|
||||
private String name;
|
||||
private String instanceId;
|
||||
private SchedulerStatus status;
|
||||
private Set<TriggerKey> triggerKeys;
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setInstanceId(String instanceId) {
|
||||
this.instanceId = instanceId;
|
||||
}
|
||||
|
||||
public String getInstanceId() {
|
||||
return instanceId;
|
||||
}
|
||||
|
||||
public void setTriggerKeys(Set<TriggerKey> triggerKeys) {
|
||||
this.triggerKeys = triggerKeys;
|
||||
}
|
||||
|
||||
public Set<TriggerKey> getTriggerKeys() {
|
||||
return triggerKeys;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
package it.fabioformosa.quartzmanager.enums;
|
||||
|
||||
public enum SchedulerStates {
|
||||
public enum SchedulerStatus {
|
||||
RUNNING, STOPPED, PAUSED
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package it.fabioformosa.quartzmanager.services;
|
||||
|
||||
import it.fabioformosa.quartzmanager.dto.SchedulerDTO;
|
||||
import org.quartz.Scheduler;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class SchedulerService extends AbstractSchedulerService{
|
||||
|
||||
public SchedulerService(Scheduler scheduler, ConversionService conversionService) {
|
||||
super(scheduler, conversionService);
|
||||
}
|
||||
|
||||
public SchedulerDTO getScheduler() {
|
||||
return conversionService.convert(scheduler, SchedulerDTO.class);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package it.fabioformosa.quartzmanager.services;
|
||||
|
||||
import it.fabioformosa.quartzmanager.dto.TriggerDTO;
|
||||
import it.fabioformosa.quartzmanager.dto.TriggerKeyDTO;
|
||||
import org.quartz.Scheduler;
|
||||
import org.quartz.SchedulerException;
|
||||
import org.quartz.TriggerKey;
|
||||
import org.quartz.impl.matchers.GroupMatcher;
|
||||
import org.springframework.core.convert.ConversionService;
|
||||
import org.springframework.core.convert.TypeDescriptor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Service
|
||||
public class TriggerService {
|
||||
|
||||
private Scheduler scheduler;
|
||||
private ConversionService conversionService;
|
||||
|
||||
public TriggerService(Scheduler scheduler, ConversionService conversionService) {
|
||||
this.scheduler = scheduler;
|
||||
this.conversionService = conversionService;
|
||||
}
|
||||
|
||||
public List<TriggerDTO> fetchTriggers() throws SchedulerException {
|
||||
Set<TriggerKey> triggerKeys = scheduler.getTriggerKeys(GroupMatcher.anyTriggerGroup());
|
||||
return (List<TriggerDTO>) conversionService.convert(triggerKeys,
|
||||
TypeDescriptor.collection(Set.class, TypeDescriptor.valueOf(TriggerKey.class)),
|
||||
TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(TriggerKeyDTO.class)));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user