package net.techreadiness.plugin.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; import org.apache.commons.lang3.StringUtils; import org.apache.struts2.components.template.TemplateRenderingContext; import org.apache.struts2.views.java.Attributes; import org.apache.struts2.views.java.TagSerializer; import org.apache.struts2.views.java.XHTMLTagSerializer; public class StatusColorTag extends SimpleTagSupport { private String status; private String size; @Override public void doTag() throws JspException, IOException { TagSerializer s = new XHTMLTagSerializer(); TemplateRenderingContext renderingContext = new TemplateRenderingContext(null, getJspContext().getOut(), null, null, null); s.setup(renderingContext); Attributes attrs = new Attributes(); StringBuilder sb = new StringBuilder(); sb.append("color"); sb.append(" "); sb.append(getPercentColor(status)); if (StringUtils.isNotBlank(size)) { sb.append(" "); sb.append(size); } attrs.add("class", sb.toString()); s.start("span", attrs); s.end("span"); } public String getColor(Long percentage) { if (percentage < 26) { return "report-level1"; } else if (percentage < 51) { return "report-level2"; } else if (percentage < 76) { return "report-level3"; } else { return "report-level4"; } } public String getPercentColor(String value) { String percent = StringUtils.defaultString(value).replaceAll("[>%]", ""); try { return getColor(Long.valueOf(percent)); } catch (Exception e) { return "report-level-null"; } } public void setStatus(String status) { this.status = status; } public void setSize(String size) { this.size = size; } }