155fc38afc375e326656f121770305376b6239659jamesrenpackage autotest.common; 255fc38afc375e326656f121770305376b6239659jamesren 355fc38afc375e326656f121770305376b6239659jamesren 455fc38afc375e326656f121770305376b6239659jamesrenpublic abstract class AbstractStatusSummary { 555fc38afc375e326656f121770305376b6239659jamesren public static final String BLANK_COLOR = "status_blank"; 655fc38afc375e326656f121770305376b6239659jamesren private static final ColorMapping[] CELL_COLOR_MAP = { 755fc38afc375e326656f121770305376b6239659jamesren // must be in descending order of percentage 855fc38afc375e326656f121770305376b6239659jamesren new ColorMapping(95, "status_95"), 955fc38afc375e326656f121770305376b6239659jamesren new ColorMapping(90, "status_90"), 1055fc38afc375e326656f121770305376b6239659jamesren new ColorMapping(85, "status_85"), 1155fc38afc375e326656f121770305376b6239659jamesren new ColorMapping(75, "status_75"), 1255fc38afc375e326656f121770305376b6239659jamesren new ColorMapping(1, "status_bad"), 1355fc38afc375e326656f121770305376b6239659jamesren new ColorMapping(0, "status_none"), 1455fc38afc375e326656f121770305376b6239659jamesren }; 1555fc38afc375e326656f121770305376b6239659jamesren 1655fc38afc375e326656f121770305376b6239659jamesren /** 1755fc38afc375e326656f121770305376b6239659jamesren * Stores a CSS class for pass rates and the minimum passing percentage required 1855fc38afc375e326656f121770305376b6239659jamesren * to have that class. 1955fc38afc375e326656f121770305376b6239659jamesren */ 2055fc38afc375e326656f121770305376b6239659jamesren private static class ColorMapping { 2155fc38afc375e326656f121770305376b6239659jamesren // store percentage as int so we can reprint it consistently 2255fc38afc375e326656f121770305376b6239659jamesren public int minPercent; 2355fc38afc375e326656f121770305376b6239659jamesren public String cssClass; 2455fc38afc375e326656f121770305376b6239659jamesren 2555fc38afc375e326656f121770305376b6239659jamesren public ColorMapping(int minPercent, String cssClass) { 2655fc38afc375e326656f121770305376b6239659jamesren this.minPercent = minPercent; 2755fc38afc375e326656f121770305376b6239659jamesren this.cssClass = cssClass; 2855fc38afc375e326656f121770305376b6239659jamesren } 2955fc38afc375e326656f121770305376b6239659jamesren 3055fc38afc375e326656f121770305376b6239659jamesren public boolean matches(double ratio) { 3155fc38afc375e326656f121770305376b6239659jamesren return ratio * 100 >= minPercent; 3255fc38afc375e326656f121770305376b6239659jamesren } 3355fc38afc375e326656f121770305376b6239659jamesren } 3455fc38afc375e326656f121770305376b6239659jamesren 3555fc38afc375e326656f121770305376b6239659jamesren public String formatStatusCounts() { 3655fc38afc375e326656f121770305376b6239659jamesren String text = getPassed() + " / " + getComplete(); 3755fc38afc375e326656f121770305376b6239659jamesren if (getIncomplete() > 0) { 3855fc38afc375e326656f121770305376b6239659jamesren text += " (" + getIncomplete() + " incomplete)"; 3955fc38afc375e326656f121770305376b6239659jamesren } 4055fc38afc375e326656f121770305376b6239659jamesren return text; 4155fc38afc375e326656f121770305376b6239659jamesren } 4255fc38afc375e326656f121770305376b6239659jamesren 4355fc38afc375e326656f121770305376b6239659jamesren public String getCssClass() { 4455fc38afc375e326656f121770305376b6239659jamesren if (getComplete() == 0) { 4555fc38afc375e326656f121770305376b6239659jamesren return BLANK_COLOR; 4655fc38afc375e326656f121770305376b6239659jamesren } 4755fc38afc375e326656f121770305376b6239659jamesren double ratio = (double) getPassed() / getComplete(); 4855fc38afc375e326656f121770305376b6239659jamesren for (ColorMapping mapping : CELL_COLOR_MAP) { 4955fc38afc375e326656f121770305376b6239659jamesren if (mapping.matches(ratio)) 5055fc38afc375e326656f121770305376b6239659jamesren return mapping.cssClass; 5155fc38afc375e326656f121770305376b6239659jamesren } 5255fc38afc375e326656f121770305376b6239659jamesren throw new RuntimeException("No color map match for ratio " + ratio); 5355fc38afc375e326656f121770305376b6239659jamesren } 5455fc38afc375e326656f121770305376b6239659jamesren 5555fc38afc375e326656f121770305376b6239659jamesren protected abstract int getPassed(); 5655fc38afc375e326656f121770305376b6239659jamesren protected abstract int getComplete(); 5755fc38afc375e326656f121770305376b6239659jamesren protected abstract int getIncomplete(); 5855fc38afc375e326656f121770305376b6239659jamesren} 59