package org.genedb.web.tags.db; import static javax.servlet.jsp.PageContext.APPLICATION_SCOPE; import static org.genedb.web.mvc.controller.TaxonManagerListener.TAXON_NODE_MANAGER; import org.genedb.db.taxon.TaxonNode; import org.genedb.db.taxon.TaxonNodeManager; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.SimpleTagSupport; public abstract class AbstractHomepageTag extends SimpleTagSupport { private static final String DEFAULT_TOP = "Root"; private String top = DEFAULT_TOP; @Override public void doTag() throws JspException, IOException { TaxonNodeManager tnm = (TaxonNodeManager) getJspContext().getAttribute(TAXON_NODE_MANAGER, APPLICATION_SCOPE); TaxonNode topNode = tnm.getTaxonNodeForLabel(top); if (topNode == null) { throw new JspException("Homepage Tag: Can't identify taxonNode for '"+top+"'"); } display(topNode, getJspContext().getOut()); } abstract protected void display(TaxonNode node, JspWriter out) throws IOException; public void setTop(String top) { this.top = top; } }