package org.genedb.web.tags.db; import org.genedb.web.mvc.controller.DbXRefListener; import java.io.IOException; import java.util.Map; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.SimpleTagSupport; public class DbXRefLinkTag extends SimpleTagSupport { private String dbXRef; public void setDbXRef(String dbXRef) { this.dbXRef = dbXRef; } @SuppressWarnings("unchecked") @Override public void doTag() throws JspException, IOException { // different class for internal, external URL String url = null; String[] parts = dbXRef.split(":"); if (parts.length > 1) { // db name should be in parts[0], the accession in parts[1] if (parts[0].equalsIgnoreCase("PUBMED")) { parts[0] = "PMID"; dbXRef = parts[0] + ":" + parts[1]; // So PMID gets displayed as well as linked } Map<String, String> dbUrlMap = (Map<String, String>) getJspContext().getAttribute(DbXRefListener.DB_URL_MAP, PageContext.APPLICATION_SCOPE); if (dbUrlMap.containsKey(parts[0])) { url = dbUrlMap.get(parts[0]) + parts[1]; } } JspWriter out = getJspContext().getOut(); if (url != null) { out.write(String.format("<a href=\"%s\">", url)); } out.write(dbXRef); if (url != null) { out.write("</a>"); } } }