package eu.dnetlib.manager.wf; import java.util.List; import java.util.stream.Collectors; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import eu.dnetlib.common.controller.AbstractDnetController; import eu.dnetlib.is.info.KeyValue; import eu.dnetlib.manager.wf.model.WorkflowConfiguration; import eu.dnetlib.manager.wf.model.WorkflowSubscription; import eu.dnetlib.manager.wf.workflows.procs.ExecutionStatus; import io.swagger.v3.oas.annotations.parameters.RequestBody; @RestController @RequestMapping("/ajax/wfs") public class WfConfigurationsController extends AbstractDnetController { private WorkflowManagerService wfManagerService; @GetMapping("/sections") public List> listWfSections() throws Exception { return wfManagerService.streamSections() .map(x -> new KeyValue<>(x.getValue(), x.getCount())) .collect(Collectors.toList()); } @GetMapping("/search") public List> listWfConfigurations(@RequestParam final String section) throws Exception { return wfManagerService.streamWfConfigurationsBySection(section) .map(x -> new KeyValue<>(x.getId(), x.getName())) .collect(Collectors.toList()); } @GetMapping("/conf/{id}") public WorkflowConfiguration getWfConfiguration(@PathVariable final String id) throws Exception { return wfManagerService.findWorkflowConfiguration(id); } @PostMapping("/conf") public void saveWfConfiguration(@RequestBody final WorkflowConfiguration conf) throws Exception { wfManagerService.saveWfConfiguration(conf); } @DeleteMapping("/conf/{id}") public void deleteWfConfiguration(@PathVariable final String id) throws Exception { wfManagerService.deleteWfConfiguration(id); } @GetMapping("/conf/{id}/start") public ExecutionStatus startWorkflowConfiguration(@PathVariable final String id) throws Exception { return wfManagerService.startWorkflowConfiguration(id, null, null); } @GetMapping("/process/{id}") public ExecutionStatus findProcess(@PathVariable final String id) throws Exception { return wfManagerService.findProcess(id); } @DeleteMapping("/process/{id}") public void killProcess(@PathVariable final String id) throws Exception { wfManagerService.killProcess(id); } @GetMapping("/conf/{id}/subscriptions") public List listWorkflowSubscriptions(@PathVariable final String id) throws Exception { return wfManagerService.listSubscriptions(id); } @PostMapping("/conf/{id}/subscriptions") public void saveWorkflowSubscriptions(@PathVariable final String id, @RequestBody final List subscriptions) throws Exception { wfManagerService.saveSubscriptions(id, subscriptions); } }