package net.sourceforge.solexatools.webapp.metamodel; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import net.sourceforge.seqware.common.model.IUS; import net.sourceforge.seqware.common.model.Processing; import net.sourceforge.seqware.common.model.Sample; import net.sourceforge.seqware.common.model.WorkflowRun; /** * <p> * SampleDetailsWorkflowLineItems class. * </p> * * @author boconnor * @version $Id: $Id */ public class SampleDetailsWorkflowLineItems { private HashMap<WorkflowRun, List<Processing>> workFlowMap = new HashMap<>(); private WorkflowRun dummyWf = new WorkflowRun(); /** * <p> * Constructor for SampleDetailsWorkflowLineItems. * </p> * * @param sample * a {@link net.sourceforge.seqware.common.model.Sample} object. */ public SampleDetailsWorkflowLineItems(Sample sample) { init(); if (sample.getProcessings() != null) { for (Processing processing : sample.getProcessings()) { appendProcessing(processing); } } } /** * <p> * Constructor for SampleDetailsWorkflowLineItems. * </p> * * @param processing * a {@link net.sourceforge.seqware.common.model.Processing} object. */ public SampleDetailsWorkflowLineItems(Processing processing) { init(); if (processing != null) { appendProcessing(processing); } } private void init() { dummyWf.setName("N/A"); } /** * <p> * addProcessings. * </p> * * @param ius * a {@link net.sourceforge.seqware.common.model.IUS} object. */ public void addProcessings(IUS ius) { if (ius.getProcessings() != null) { for (Processing processing : ius.getProcessings()) { appendProcessing(processing); } } } private void appendProcessing(Processing processing) { if (processing.getChildren() != null) { for (Processing childProcessing : processing.getChildren()) { appendProcessing(childProcessing); } } List<Processing> processings = workFlowMap.get(processing.getWorkflowRun()); if (processings == null) { processings = new ArrayList<>(); } processings.add(processing); if (processing.getWorkflowRun() == null) { workFlowMap.put(dummyWf, processings); } else { workFlowMap.put(processing.getWorkflowRun(), processings); } } /** * <p> * getProcessingsByWorkflow. * </p> * * @param wfRun * a {@link net.sourceforge.seqware.common.model.WorkflowRun} object. * @return a {@link java.util.List} object. */ public List<Processing> getProcessingsByWorkflow(WorkflowRun wfRun) { return workFlowMap.get(wfRun); } /** * <p> * getWorkflowsRun. * </p> * * @return a {@link java.util.List} object. */ public List<WorkflowRun> getWorkflowsRun() { return new ArrayList<>(workFlowMap.keySet()); } }