#56 step into layout revamp

This commit is contained in:
Fabio Formosa
2022-08-04 00:43:53 +02:00
parent 09df7795a9
commit f1c9fba68e
32 changed files with 503 additions and 162 deletions

View File

@@ -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")

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -1,5 +1,5 @@
package it.fabioformosa.quartzmanager.enums;
public enum SchedulerStates {
public enum SchedulerStatus {
RUNNING, STOPPED, PAUSED
}
}

View File

@@ -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);
}
}

View File

@@ -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)));
}
}