package net.sourceforge.solexatools.webapp.controller; import java.util.Arrays; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sourceforge.seqware.common.business.ExperimentService; import net.sourceforge.seqware.common.business.FileService; import net.sourceforge.seqware.common.business.LaneService; import net.sourceforge.seqware.common.business.ProcessingService; import net.sourceforge.seqware.common.business.SampleService; import net.sourceforge.seqware.common.model.Registration; import net.sourceforge.seqware.common.util.Log; import net.sourceforge.solexatools.Security; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.BaseCommandController; /** * <p> * SaveOpenNodeController class. * </p> * * @author boconnor * @version $Id: $Id */ public class SaveOpenNodeController extends BaseCommandController { private ExperimentService experimentService; private SampleService sampleService; private LaneService laneService; private ProcessingService processingService; private FileService fileService; /** * <p> * Constructor for SaveOpenNodeController. * </p> */ public SaveOpenNodeController() { super(); setSupportedMethods(new String[] { METHOD_POST }); } /** * {@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"); String typeTree = request.getParameter("tt"); String listNodeId = request.getParameter("listNodeId"); List<String> ids = Arrays.asList(listNodeId.split(",")); Log.info("AJAX tt = " + typeTree); Log.info("AJAX listNodeId = " + listNodeId); String rootId = getEndId(ids); String openNodeId = getFirstId(ids); Log.info("AJAX ROOT ID = " + rootId); Log.info("AJAX openNodeId = " + openNodeId); /* * if(typeTree == null || typeTree.equals("")){ if(rootId.indexOf("study_") != -1){ typeTree = "st"; } if(rootId.indexOf("wfr_") != * -1){ typeTree = "wfr"; } if(rootId.indexOf("sr_") != -1){ typeTree = "sr"; } } */ // if(typeTree.equals("wfrr")){ request.getSession(false).setAttribute("typeTree", typeTree); if (typeTree != null && openNodeId != null) { // if Study Tree if (typeTree.equals("st")) { if (openNodeId.indexOf("study_") != -1) { Log.info("Remove STUDY"); request.getSession(false).removeAttribute("listStudyNodeId"); } else { Log.info("Add List Node for Study"); request.getSession(false).setAttribute("listStudyNodeId", ids); } } // if Workflow Run Tree if (typeTree.equals("wfr")) { if (openNodeId.indexOf("wfr_") != -1 && ids.size() == 1) { Log.info("Remove Workflow Run"); request.getSession(false).removeAttribute("listWorkflowRunNodeId"); } else { Log.info("Add List Node for Workflwo Run"); request.getSession(false).setAttribute("listWorkflowRunNodeId", ids); } } // if Workflow Run Running Tree if (typeTree.equals("wfrr")) { if (openNodeId.indexOf("wfr_") != -1 && ids.size() == 1) { Log.info("Remove Workflow Run Running"); request.getSession(false).removeAttribute("listWorkflowRunRunningNodeId"); } else { Log.info("Add List Node for Workflow Run Running"); request.getSession(false).setAttribute("listWorkflowRunRunningNodeId", ids); } } // if Sequencer Run if (typeTree.equals("sr")) { if (openNodeId.indexOf("sr_") != -1 && ids.size() == 1) { Log.info("Remove Sequencer Run"); request.getSession(false).removeAttribute("listSequencerRunNodeId"); } else { Log.info("Add List Node for Sequencer Run"); request.getSession(false).setAttribute("listSequencerRunNodeId", ids); } } } return null; } private String getFirstId(List<String> ids) { return ids.get(0); } private String getEndId(List<String> ids) { return ids.get(ids.size() - 1); } /** * <p> * Getter for the field <code>experimentService</code>. * </p> * * @return a {@link net.sourceforge.seqware.common.business.ExperimentService} object. */ public ExperimentService getExperimentService() { return experimentService; } /** * <p> * Setter for the field <code>experimentService</code>. * </p> * * @param experimentService * a {@link net.sourceforge.seqware.common.business.ExperimentService} object. */ public void setExperimentService(ExperimentService experimentService) { this.experimentService = experimentService; } /** * <p> * Getter for the field <code>sampleService</code>. * </p> * * @return a {@link net.sourceforge.seqware.common.business.SampleService} object. */ public SampleService getSampleService() { return sampleService; } /** * <p> * Setter for the field <code>sampleService</code>. * </p> * * @param sampleService * a {@link net.sourceforge.seqware.common.business.SampleService} object. */ public void setSampleService(SampleService sampleService) { this.sampleService = sampleService; } /** * <p> * Getter for the field <code>laneService</code>. * </p> * * @return a {@link net.sourceforge.seqware.common.business.LaneService} object. */ public LaneService getLaneService() { return laneService; } /** * <p> * Setter for the field <code>laneService</code>. * </p> * * @param laneService * a {@link net.sourceforge.seqware.common.business.LaneService} object. */ public void setLaneService(LaneService laneService) { this.laneService = laneService; } /** * <p> * Getter for the field <code>processingService</code>. * </p> * * @return a {@link net.sourceforge.seqware.common.business.ProcessingService} object. */ public ProcessingService getProcessingService() { return processingService; } /** * <p> * Setter for the field <code>processingService</code>. * </p> * * @param processingService * a {@link net.sourceforge.seqware.common.business.ProcessingService} object. */ public void setProcessingService(ProcessingService processingService) { this.processingService = processingService; } /** * <p> * Getter for the field <code>fileService</code>. * </p> * * @return a {@link net.sourceforge.seqware.common.business.FileService} object. */ public FileService getFileService() { return fileService; } /** * <p> * Setter for the field <code>fileService</code>. * </p> * * @param fileService * a {@link net.sourceforge.seqware.common.business.FileService} object. */ public void setFileService(FileService fileService) { this.fileService = fileService; } }