package net.sourceforge.solexatools.webapp.controller; import java.util.SortedSet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sourceforge.seqware.common.business.WorkflowService; import net.sourceforge.seqware.common.model.Registration; import net.sourceforge.seqware.common.model.Workflow; import net.sourceforge.seqware.common.model.WorkflowParam; import net.sourceforge.seqware.common.model.WorkflowParamValue; import net.sourceforge.seqware.common.util.Log; import net.sourceforge.solexatools.Security; import net.sourceforge.solexatools.util.LaunchWorkflowUtil; import net.sourceforge.solexatools.util.ModelUtil; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.BaseCommandController; /** * <p> * ChangeWorkflowParamValueController class. * </p> * * @author boconnor * @version $Id: $Id */ public class ChangeWorkflowParamValueController extends BaseCommandController { private WorkflowService workflowService; /** * <p> * Constructor for ChangeWorkflowParamValueController. * </p> */ public ChangeWorkflowParamValueController() { 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.requireRegistration(request, response); Registration registration = Security.getRegistration(request); if (registration == null) return new ModelAndView("redirect:/login.htm"); /** * Pass registration so that we can filter the list if its appropriate to do so. */ Integer workflowId = getRequestedWorflowId(request); Workflow workflow = getWorkflowService().findByID(workflowId); Integer workflowParamId = getRequestedWorkflowParamId(request); Integer workflowParamValueId = getRequestedWorkflowParamValueId(request); String strWorkflowParamValueId = request.getParameter("workflowParamValueId"); LaunchWorkflowUtil.saveSelectedWorkflowParamValue(request, workflowParamId, strWorkflowParamValueId); String displayName = getDisplayName(workflow, workflowParamId, strWorkflowParamValueId, workflowParamValueId); ModelAndView modelAndView = new ModelAndView("ResultChangeWorkflowParamValue"); // validation workflow for Launch workflow process Boolean isHasError = false; String errorMessage = ""; modelAndView.addObject("isHasError", isHasError); modelAndView.addObject("errorMessage", ModelUtil.forJSON(errorMessage)); modelAndView.addObject("displayName", ModelUtil.forJSON(displayName)); modelAndView.addObject("registration", registration); return modelAndView; } private String getDisplayName(Workflow workflow, Integer workflowParamId, String strWorkflowParamValueId, Integer workflowParamValueId) { String displayName = ""; String defaultValue = ""; if (workflow != null && workflowParamId != null && strWorkflowParamValueId != null) { // SortedSet<WorkflowParam> wps = workflow.getWorkflowParams(); SortedSet<WorkflowParam> wps = workflow.getVisibleWorkflowParams(); // Log.info(" workflow param id = " + workflowId); for (WorkflowParam param : wps) { // Log.info("strWorkflowParamValueId = " + strWorkflowParamValueId); if ("defaultValue".equals(strWorkflowParamValueId)) { // Log.info(" if Default Value"); displayName = param.getDisplayName(); defaultValue = param.getDefaultValue(); Log.info(" default value = " + defaultValue); if (workflowParamId.equals(param.getWorkflowParamId())) { Log.info(" Finded workflow param!!!"); // for Please select value if (param.getDefaultValue() == null || "".equals(param.getDefaultValue())) { return param.getDisplayName(); } SortedSet<WorkflowParamValue> wpvs = param.getValues(); for (WorkflowParamValue value : wpvs) { Log.info(" value = " + value.getValue()); if (defaultValue.equals(value.getValue())) { displayName = value.getDisplayName(); Log.info(" EQUALS. NAME = " + displayName); // return displayName; } } return displayName; } } else { // Integer workflowParamValueId = getRequestedWorkflowParamValueId(request); if (workflowParamId.equals(param.getWorkflowParamId())) { SortedSet<WorkflowParamValue> wpvs = param.getValues(); for (WorkflowParamValue value : wpvs) { if (workflowParamValueId.equals(value.getWorkflowParamValueId())) { displayName = value.getDisplayName(); return displayName; } } } } } } return displayName; } private Integer getRequestedWorflowId(HttpServletRequest request) { Integer workflowId = null; String strWorkflowId = request.getParameter("workflowId"); if (strWorkflowId != null && !strWorkflowId.equals("null")) { workflowId = Integer.parseInt(strWorkflowId); } return workflowId; } private Integer getRequestedWorkflowParamId(HttpServletRequest request) { Integer workflowParamId = null; String strWorkflowParamId = request.getParameter("workflowParamId"); if (strWorkflowParamId != null && !strWorkflowParamId.equals("null")) { workflowParamId = Integer.parseInt(strWorkflowParamId); } return workflowParamId; } private Integer getRequestedWorkflowParamValueId(HttpServletRequest request) { Integer workflowParamValueId = null; String strWorkflowParamValueId = request.getParameter("workflowParamValueId"); if (strWorkflowParamValueId != null && !strWorkflowParamValueId.equals("null") && !strWorkflowParamValueId.equals("defaultValue")) { workflowParamValueId = Integer.parseInt(strWorkflowParamValueId); } return workflowParamValueId; } /** * <p> * Getter for the field <code>workflowService</code>. * </p> * * @return a {@link net.sourceforge.seqware.common.business.WorkflowService} object. */ public WorkflowService getWorkflowService() { return workflowService; } /** * <p> * Setter for the field <code>workflowService</code>. * </p> * * @param workflowService * a {@link net.sourceforge.seqware.common.business.WorkflowService} object. */ public void setWorkflowService(WorkflowService workflowService) { this.workflowService = workflowService; } }