package net.sourceforge.solexatools.webapp.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sourceforge.seqware.common.business.WorkflowRunService;
import net.sourceforge.seqware.common.model.Registration;
import net.sourceforge.seqware.common.model.WorkflowRun;
import io.seqware.common.model.WorkflowRunStatus;
import net.sourceforge.solexatools.Security;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.BaseCommandController;
/**
* <p>
* RetryAnalysisWorkflowController class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
public class RetryAnalysisWorkflowController extends BaseCommandController {
private WorkflowRunService workflowRunService;
/**
* <p>
* Constructor for RetryAnalysisWorkflowController.
* </p>
*/
public RetryAnalysisWorkflowController() {
super();
setSupportedMethods(new String[] { METHOD_GET });
}
/**
* {@inheritDoc}
*
* @return
* @throws java.lang.Exception
*/
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
Registration registration = Security.getRegistration(request);
if (registration == null) return new ModelAndView("redirect:/login.htm");
WorkflowRun workflowRun = getRequestedWorkflowRun(request);
if (workflowRun != null) {
Integer ownerId = workflowRun.getOwner().getRegistrationId();
Integer registrationId = registration.getRegistrationId();
if (registrationId.equals(ownerId)) {
if (WorkflowRunStatus.failed == workflowRun.getStatus() || WorkflowRunStatus.cancelled == workflowRun.getStatus()) {
workflowRun.setStatus(WorkflowRunStatus.submitted);
workflowRun.setHost(null);
getWorkflowRunService().update(workflowRun);
}
}
}
return null;
}
private WorkflowRun getRequestedWorkflowRun(HttpServletRequest request) {
WorkflowRun workflowRun = null;
String id = (String) request.getParameter("objectId");
if (id != null) {
Integer workflowRunID = Integer.parseInt(id);
workflowRun = getWorkflowRunService().findByID(workflowRunID);
}
return workflowRun;
}
/**
* <p>
* Getter for the field <code>workflowRunService</code>.
* </p>
*
* @return a {@link net.sourceforge.seqware.common.business.WorkflowRunService} object.
*/
public WorkflowRunService getWorkflowRunService() {
return workflowRunService;
}
/**
* <p>
* Setter for the field <code>workflowRunService</code>.
* </p>
*
* @param workflowRunService
* a {@link net.sourceforge.seqware.common.business.WorkflowRunService} object.
*/
public void setWorkflowRunService(WorkflowRunService workflowRunService) {
this.workflowRunService = workflowRunService;
}
}