package net.sourceforge.solexatools.webapp.controller; import java.util.HashMap; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sourceforge.seqware.common.business.RegistrationService; import net.sourceforge.seqware.common.business.ShareWorkflowRunService; import net.sourceforge.seqware.common.business.WorkflowRunService; import net.sourceforge.seqware.common.model.Registration; import net.sourceforge.seqware.common.model.ShareWorkflowRun; import net.sourceforge.seqware.common.model.WorkflowRun; import io.seqware.common.model.WorkflowRunStatus; import net.sourceforge.seqware.common.util.Bool; import net.sourceforge.solexatools.Security; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; /** * StudyController * * @author boconnor * @version $Id: $Id */ public class AnalisysEventController extends MultiActionController { private WorkflowRunService workflowRunService; private ShareWorkflowRunService shareWorkflowRunService; private RegistrationService registrationService; /** * <p> * Constructor for AnalisysEventController. * </p> */ public AnalisysEventController() { super(); } /** * <p> * Constructor for AnalisysEventController. * </p> * * @param delegate * a {@link java.lang.Object} object. */ public AnalisysEventController(Object delegate) { super(delegate); } /** * <p> * Getter for the field <code>shareWorkflowRunService</code>. * </p> * * @return a {@link net.sourceforge.seqware.common.business.ShareWorkflowRunService} object. */ public ShareWorkflowRunService getShareWorkflowRunService() { return shareWorkflowRunService; } /** * <p> * Setter for the field <code>shareWorkflowRunService</code>. * </p> * * @param shareWorkflowRunService * a {@link net.sourceforge.seqware.common.business.ShareWorkflowRunService} object. */ public void setShareWorkflowRunService(ShareWorkflowRunService shareWorkflowRunService) { this.shareWorkflowRunService = shareWorkflowRunService; } /** * <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; } /** * <p> * Setter for the field <code>registrationService</code>. * </p> * * @param registrationService * a {@link net.sourceforge.seqware.common.business.RegistrationService} object. */ public void setRegistrationService(RegistrationService registrationService) { this.registrationService = registrationService; } /** * Handles the user's request to delete their study. * * @param command * Study command object * @param request * a {@link javax.servlet.http.HttpServletRequest} object. * @param response * a {@link javax.servlet.http.HttpServletResponse} object. * @return a {@link org.springframework.web.servlet.ModelAndView} object. * @throws java.lang.Exception * if any. */ public ModelAndView handleDelete(HttpServletRequest request, HttpServletResponse response, WorkflowRun command) 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<>(); WorkflowRun workflowRun = getRequestedWorkflowRun(request); ServletContext context = this.getServletContext(); boolean deleteRealFiles = Bool.parse(context.getInitParameter("delete.files.for.node.deletion")); if (workflowRun != null) { if (registration.equals(workflowRun.getOwner()) || registration.isLIMSAdmin()) { getWorkflowRunService().delete(workflowRun, deleteRealFiles); } } modelAndView = new ModelAndView("redirect:/myAnalisysList.htm", model); return modelAndView; } /** * Handles the user's request to share their WorkflowRun. * * @param command * WorkflowRun command object * @param request * a {@link javax.servlet.http.HttpServletRequest} object. * @param response * a {@link javax.servlet.http.HttpServletResponse} object. * @return a {@link org.springframework.web.servlet.ModelAndView} object. * @throws java.lang.Exception * if any. */ public ModelAndView handleShare(HttpServletRequest request, HttpServletResponse response, WorkflowRun command) 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<>(); WorkflowRun workflowRun = getRequestedWorkflowRun(request); if (workflowRun != null) { Integer ownerId = workflowRun.getOwner().getRegistrationId(); Integer registrationId = registration.getRegistrationId(); String[] emails = getRequestedEmails(request); if (registrationId.equals(ownerId)) { for (String email : emails) { // if(!getShareWorkflowRunService().isExistsShare(workflowRun.getWorkflowRunId(), email)){ ShareWorkflowRun shareWorkflowRun = new ShareWorkflowRun(); Registration shareReg = registrationService.findByEmailAddress(email); shareWorkflowRun.setRegistration(shareReg); shareWorkflowRun.setActive(true); // shareStudy.setEmail(email); shareWorkflowRun.setWorkflowRunId(workflowRun.getWorkflowRunId()); getShareWorkflowRunService().insert(shareWorkflowRun); // } } } } modelAndView = new ModelAndView("redirect:/myAnalisysList.htm", model); return modelAndView; } /** * Handles the user's request to delete their study. * * @param command * Study command object * @param request * a {@link javax.servlet.http.HttpServletRequest} object. * @param response * a {@link javax.servlet.http.HttpServletResponse} object. * @return a {@link org.springframework.web.servlet.ModelAndView} object. * @throws java.lang.Exception * if any. */ public ModelAndView handleCancel(HttpServletRequest request, HttpServletResponse response, WorkflowRun command) 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<>(); WorkflowRun workflowRun = getRequestedWorkflowRun(request); if (workflowRun != null) { Integer ownerId = workflowRun.getOwner().getRegistrationId(); Integer registrationId = registration.getRegistrationId(); if (registrationId.equals(ownerId)) { workflowRun.setStatus(WorkflowRunStatus.cancelled); getWorkflowRunService().update(workflowRun); } } modelAndView = new ModelAndView("redirect:/myAnalisysList.htm", model); return modelAndView; } 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; } private String[] getRequestedEmails(HttpServletRequest request) { String[] emails = (String[]) request.getParameterValues("emails[]"); return emails; } }