package net.sourceforge.solexatools.util;
import java.util.List;
import java.util.Set;
import net.sourceforge.seqware.common.model.IUS;
import net.sourceforge.seqware.common.model.Lane;
import net.sourceforge.seqware.common.model.Processing;
import net.sourceforge.seqware.common.model.Registration;
import net.sourceforge.seqware.common.model.SequencerRun;
import net.sourceforge.seqware.common.util.Log;
/**
* <p>
* SequencerRunHtmlUtil class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
public class SequencerRunHtmlUtil {
/** Constant <code>TYPE_TREE="sr"</code> */
public static final String TYPE_TREE = "sr";
/**
* <p>
* getHtml.
* </p>
*
* @param obj
* a {@link java.lang.Object} object.
* @param registration
* a {@link net.sourceforge.seqware.common.model.Registration} object.
* @param listSeqencerRunNodeId
* a {@link java.util.List} object.
* @param treeType
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String getHtml(Object obj, Registration registration, List<String> listSeqencerRunNodeId, String treeType) {
String html = "";
if (obj instanceof SequencerRun) {
html = getAllHtml((SequencerRun) obj, registration, null, treeType);
}
if (obj instanceof Lane) {
html = getAllHtml((Lane) obj, registration, null, treeType);
}
if (obj instanceof IUS) {
Log.info("ius call");
html = getAllHtml((IUS) obj, registration, null, false, false, treeType);
}
if (obj instanceof Processing) {
html = getAllHtml((Processing) obj, registration, null, 0, listSeqencerRunNodeId, true, false, treeType);
}
return html;
}
/**
* <p>
* getFileHtml.
* </p>
*
* @param proc
* a {@link net.sourceforge.seqware.common.model.Processing} object.
* @param registration
* a {@link net.sourceforge.seqware.common.model.Registration} object.
* @return a {@link java.lang.String} object.
*/
public static String getFileHtml(Processing proc, Registration registration) {
// return getAllHtml(proc, registration, null, true, true);
return "";
}
private static String getAllHtml(SequencerRun sequencerRun, Registration registration, String openingNodeId, String treeType) {
return NodeHtmlUtil.getSequencerRunHtml(sequencerRun, registration, openingNodeId, treeType);
}
/**
* <p>
* getAllHtml.
* </p>
*
* @param lane
* a {@link net.sourceforge.seqware.common.model.Lane} object.
* @param registration
* a {@link net.sourceforge.seqware.common.model.Registration} object.
* @param openingNodeId
* a {@link java.lang.String} object.
* @param treeType
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String getAllHtml(Lane lane, Registration registration, String openingNodeId, String treeType) {
String childHtml = NodeHtmlUtil.getLaneHtml(lane, registration, TYPE_TREE, openingNodeId, treeType);
String parentHtml = getAllHtml(lane.getSequencerRun(), registration, Constant.LANE_PREFIX + lane.getLaneId(), treeType);
String parentId = Constant.LANE_PREFIX + lane.getLaneId();
return NodeHtmlUtil.pasteHtmlIntoParentNode(childHtml, parentHtml, parentId, true);
}
/**
* <p>
* getAllHtml.
* </p>
*
* @param ius
* a {@link net.sourceforge.seqware.common.model.IUS} object.
* @param registration
* a {@link net.sourceforge.seqware.common.model.Registration} object.
* @param openingNodeId
* a {@link java.lang.String} object.
* @param isOpenProc
* a boolean.
* @param isVisibleProc
* a boolean.
* @param treeType
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String getAllHtml(IUS ius, Registration registration, String openingNodeId, boolean isOpenProc, boolean isVisibleProc,
String treeType) {
// Log.info("ius call All html");
String childHtml = NodeHtmlUtil.getIUSHtml(ius, registration, TYPE_TREE, openingNodeId, isOpenProc, isVisibleProc, treeType);
String parentHtml = getAllHtml(ius.getLane(), registration, Constant.IUS_PREFIX + ius.getIusId(), treeType);
String parentId = Constant.IUS_PREFIX + ius.getIusId();
return NodeHtmlUtil.pasteHtmlIntoParentNode(childHtml, parentHtml, parentId, true);
}
/**
* <p>
* getAllHtml.
* </p>
*
* @param processing
* a {@link net.sourceforge.seqware.common.model.Processing} object.
* @param registration
* a {@link net.sourceforge.seqware.common.model.Registration} object.
* @param openingNodeId
* a {@link java.lang.String} object.
* @param currPosId
* a {@link java.lang.Integer} object.
* @param listNodeId
* a {@link java.util.List} object.
* @param isFirstCall
* a boolean.
* @param isViewCurrentNode
* a boolean.
* @param treeType
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String getAllHtml(Processing processing, Registration registration, String openingNodeId, Integer currPosId,
List<String> listNodeId, boolean isFirstCall, boolean isViewCurrentNode, String treeType) {
currPosId++;
String id = getParentId(currPosId, listNodeId);
if (id.indexOf("wfr_") != -1) {
currPosId++;
id = getParentId(currPosId, listNodeId);
}
if (id.indexOf("sr_") != -1 && !isViewCurrentNode) {
SequencerRun sequencerRun = getParentSequencerRun(processing, Constant.getId(id));
if (sequencerRun == null) {
return "";
}
Log.info("openingNodeId = " + openingNodeId);
return getAllHtml(sequencerRun, registration, openingNodeId/* processing.getProcessingId() */, treeType);
} else if (id.indexOf("seq_") != -1 && !isViewCurrentNode) {
Lane lane = getParentLane(processing, Constant.getId(id));
if (lane == null) {
return "";
}
return getAllHtml(lane, registration, openingNodeId, treeType);
// 1 return getAllHtml(lane, registration, processing.getProcessingId());
// 2 return getAllHtml(lane, registration, processing.getProcessingId(), isOpenProc, true);
} else if (id.indexOf("ius_") != -1 && !isViewCurrentNode) {
Log.info("Proc IUS HTML");
IUS ius = getParentIUS(processing, Constant.getId(id));
if (ius == null) {
return "";
}
return getAllHtml(ius, registration, openingNodeId, !isFirstCall, true, treeType);
} else {
Processing currProc;
if (isFirstCall) {
currProc = processing;
} else {
currProc = getParentProcessing(processing, Constant.getId(id));
if (currProc == null) {
return "";
}
openingNodeId = getParentId(currPosId - 1, listNodeId);
if (openingNodeId.indexOf("wfr_") != -1) {
openingNodeId = getParentId(currPosId - 2, listNodeId);
}
}
Log.info(" -> openingNodeId Proc = " + openingNodeId);
String childHtml = NodeHtmlUtil.getProcessingHtml(currProc, registration, TYPE_TREE, openingNodeId, treeType);
String parentHtml = getAllHtml(currProc, registration, id, currPosId, listNodeId, false, false, treeType);
String parentId = Constant.PROCESSING_PREFIX + currProc.getProcessingId();
return NodeHtmlUtil.pasteHtmlIntoParentNode(childHtml, parentHtml, parentId, true);
// Log.info("currProcId = " + currProc.getProcessingId());
// String childHtml = NodeHtmlUtil.getProcessingHtml(currProc, registration, TYPE_TREE, openingNodeId);
// String parentHtml = getAllHtml(currProc, registration, currProc.getProcessingId(), currPosId, listNodeId, false, false);
// String parentId = Constant.PROCESSING_PREFIX + currProc.getProcessingId();
// return NodeHtmlUtil.pasteHtmlIntoParentNode(childHtml, parentHtml, parentId, true);
}
}
private static String getParentId(Integer currPosId, List<String> listNodeId) {
return listNodeId.get(currPosId);
}
private static SequencerRun getParentSequencerRun(Processing processing, Integer parentId) {
SequencerRun parentSequencerRun = null;
Set<SequencerRun> sequencerRuns = processing.getSequencerRuns();
for (SequencerRun sr : sequencerRuns) {
if (parentId.equals(sr.getSequencerRunId())) {
parentSequencerRun = sr;
}
}
return parentSequencerRun;
}
/**
* <p>
* getParentLane.
* </p>
*
* @param processing
* a {@link net.sourceforge.seqware.common.model.Processing} object.
* @param parentId
* a {@link java.lang.Integer} object.
* @return a {@link net.sourceforge.seqware.common.model.Lane} object.
*/
public static Lane getParentLane(Processing processing, Integer parentId) {
Lane parentLane = null;
// Log.info(" LANE PARENT ID = " + parentId);
Set<Lane> lanes = processing.getLanes();
for (Lane l : lanes) {
if (parentId.equals(l.getLaneId())) {
parentLane = l;
}
}
return parentLane;
}
private static IUS getParentIUS(Processing processing, Integer parentId) {
IUS parentIUS = null;
Set<IUS> ius = processing.getIUS();
for (IUS i : ius) {
if (parentId.equals(i.getIusId())) {
parentIUS = i;
}
}
return parentIUS;
}
/**
* <p>
* getParentProcessing.
* </p>
*
* @param processing
* a {@link net.sourceforge.seqware.common.model.Processing} object.
* @param parentId
* a {@link java.lang.Integer} object.
* @return a {@link net.sourceforge.seqware.common.model.Processing} object.
*/
public static Processing getParentProcessing(Processing processing, Integer parentId) {
Processing parentProcessing = null;
Set<Processing> processings = processing.getParents();
for (Processing p : processings) {
if (parentId.equals(p.getProcessingId())) {
parentProcessing = p;
}
}
return parentProcessing;
}
}