package org.genedb.web.tags.db;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.jsp.JspWriter;
import org.genedb.db.taxon.TaxonNameType;
import org.genedb.db.taxon.TaxonNode;
public class PhylonodeHomePageListTag extends AbstractHomepageTag {
private String baseUrl;
private boolean leafOnly = false;
@Override
protected void display(TaxonNode root, JspWriter out) throws IOException {
List<TaxonNode> nodes = new ArrayList<TaxonNode>();
getAllChildren(root, nodes);
out.write("<ul>");
for (TaxonNode node : nodes) {
if (node == root)
continue;
out.write(String.format("<li><a href=\"%s\">%s</a></li>", this.baseUrl + node.getLabel(), node.getName(TaxonNameType.FULL)));
}
out.write("</ul>");
}
private void getAllChildren(TaxonNode node, List<TaxonNode> list) {
if (node.isLeaf()) {
if (node.isPopulated()) {
list.add(node);
}
} else {
if (!leafOnly && node.isChildrenPopulated()) {
list.add(node);
}
}
for (TaxonNode child : node.getChildren()) {
getAllChildren(child, list);
}
}
public void setBaseUrl(String baseUrl) {
this.baseUrl = baseUrl;
}
public void setLeafOnly(boolean leafOnly) {
this.leafOnly = leafOnly;
}
}