package net.sourceforge.solexatools.util;
import java.util.Set;
import net.sourceforge.seqware.common.model.Experiment;
import net.sourceforge.seqware.common.model.Lane;
import net.sourceforge.seqware.common.model.Processing;
import net.sourceforge.seqware.common.model.Sample;
import net.sourceforge.seqware.common.model.SequencerRun;
import net.sourceforge.seqware.common.model.Study;
import net.sourceforge.seqware.common.util.Log;
/**
* <p>
* FindRootUtil class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
public class FindRootUtil {
/**
* <p>
* getStudy.
* </p>
*
* @param experiment
* a {@link net.sourceforge.seqware.common.model.Experiment} object.
* @return a {@link net.sourceforge.seqware.common.model.Study} object.
*/
public static Study getStudy(Experiment experiment) {
Study study = experiment.getStudy();
return study;
}
/**
* <p>
* getStudy.
* </p>
*
* @param sample
* a {@link net.sourceforge.seqware.common.model.Sample} object.
* @return a {@link net.sourceforge.seqware.common.model.Study} object.
*/
public static Study getStudy(Sample sample) {
Study study = getStudy(sample.getExperiment());
return study;
}
/**
* <p>
* getStudy.
* </p>
*
* @param lane
* a {@link net.sourceforge.seqware.common.model.Lane} object.
* @return a {@link net.sourceforge.seqware.common.model.Study} object.
*/
public static Study getStudy(Lane lane) {
Study study = getStudy(lane.getSample());
return study;
}
/**
* <p>
* getStudy.
* </p>
*
* @param processing
* a {@link net.sourceforge.seqware.common.model.Processing} object.
* @return a {@link net.sourceforge.seqware.common.model.Study} object.
*/
public static Study getStudy(Processing processing) {
// Study study = getStudy(lane.getSample());
Set<Lane> lanes = processing.getLanes();
if (lanes != null && lanes.size() > 0) {
Log.info("Lane!=null");
for (Lane lane : lanes) {
Log.info("Lane_ID = " + lane.getLaneId());
return getStudy(lane);
}
} else {
Log.info("Lane==null");
Set<Processing> parents = processing.getParents();
for (Processing parent : parents) {
return getStudy(parent);
}
}
Log.info("RETURN NULL");
return null;
}
// FOR SEQUENCER RUN
/**
* <p>
* getSequencerRun.
* </p>
*
* @param lane
* a {@link net.sourceforge.seqware.common.model.Lane} object.
* @return a {@link net.sourceforge.seqware.common.model.SequencerRun} object.
*/
public static SequencerRun getSequencerRun(Lane lane) {
SequencerRun sequencerRun = lane.getSequencerRun();
return sequencerRun;
}
/**
* <p>
* getSequencerRun.
* </p>
*
* @param processing
* a {@link net.sourceforge.seqware.common.model.Processing} object.
* @return a {@link net.sourceforge.seqware.common.model.SequencerRun} object.
*/
public static SequencerRun getSequencerRun(Processing processing) {
// Study study = getStudy(lane.getSample());
Set<Lane> lanes = processing.getLanes();
if (lanes != null && lanes.size() > 0) {
for (Lane lane : lanes) {
return getSequencerRun(lane);
}
} else {
Set<Processing> parents = processing.getParents();
for (Processing parent : parents) {
return getSequencerRun(parent);
}
}
return null;
}
// FOR ANALYSIS WORKFLOW
}