package net.sourceforge.solexatools.webapp.controller;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sourceforge.seqware.common.business.WorkflowParamService;
import net.sourceforge.seqware.common.business.WorkflowParamValueService;
import net.sourceforge.seqware.common.model.Registration;
import net.sourceforge.seqware.common.model.WorkflowParam;
import net.sourceforge.seqware.common.model.WorkflowParamValue;
import net.sourceforge.solexatools.Security;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.BaseCommandController;
/**
* <p>
* WorkflowParamValueSetupController class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
public class WorkflowParamValueSetupController extends BaseCommandController {
private WorkflowParamService workflowParamService;
private WorkflowParamValueService workflowParamValueService;
/**
* <p>
* Constructor for WorkflowParamValueSetupController.
* </p>
*/
public WorkflowParamValueSetupController() {
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");
ModelAndView modelAndView = null;
HashMap<String, Object> model = new HashMap<>();
getRequestedWorkflowParam(request);
WorkflowParamValue workflowParamValue = getRequestedWorkflowParamValue(request);
if (workflowParamValue != null) {
request.setAttribute(getCommandName(), workflowParamValue);
model.put("strategy", "update");
modelAndView = new ModelAndView("WorkflowParamValue", model);
} else {
request.setAttribute(getCommandName(), new WorkflowParam());
model.put("strategy", "submit");
modelAndView = new ModelAndView("WorkflowParamValue", model);
}
return modelAndView;
}
private WorkflowParam getRequestedWorkflowParam(HttpServletRequest request) {
HttpSession session = request.getSession(false);
WorkflowParam workflowParam = null;
String id = (String) request.getParameter("workflowParamId");
session.removeAttribute("workflowParam");
if (id != null) {
Integer expID = Integer.parseInt(id);
workflowParam = getWorkflowParamService().findByID(expID);
session.setAttribute("workflowParam", workflowParam);
}
return workflowParam;
}
private WorkflowParamValue getRequestedWorkflowParamValue(HttpServletRequest request) {
HttpSession session = request.getSession(false);
WorkflowParamValue workflowParamValue = null;
String id = (String) request.getParameter("workflowParamValueId");
// session.removeAttribute("workflowParamValue");
if (id != null) {
Integer workflowParamValueID = Integer.parseInt(id);
workflowParamValue = getWorkflowParamValueService().findByID(workflowParamValueID);
session.setAttribute("workflowParamValue", workflowParamValue);
}
return workflowParamValue;
}
/**
* <p>
* Getter for the field <code>workflowParamService</code>.
* </p>
*
* @return a {@link net.sourceforge.seqware.common.business.WorkflowParamService} object.
*/
public WorkflowParamService getWorkflowParamService() {
return workflowParamService;
}
/**
* <p>
* Setter for the field <code>workflowParamService</code>.
* </p>
*
* @param workflowParamService
* a {@link net.sourceforge.seqware.common.business.WorkflowParamService} object.
*/
public void setWorkflowParamService(WorkflowParamService workflowParamService) {
this.workflowParamService = workflowParamService;
}
/**
* <p>
* Getter for the field <code>workflowParamValueService</code>.
* </p>
*
* @return a {@link net.sourceforge.seqware.common.business.WorkflowParamValueService} object.
*/
public WorkflowParamValueService getWorkflowParamValueService() {
return workflowParamValueService;
}
/**
* <p>
* Setter for the field <code>workflowParamValueService</code>.
* </p>
*
* @param workflowParamValueService
* a {@link net.sourceforge.seqware.common.business.WorkflowParamValueService} object.
*/
public void setWorkflowParamValueService(WorkflowParamValueService workflowParamValueService) {
this.workflowParamValueService = workflowParamValueService;
}
}