Class PercentageColumn

  • All Implemented Interfaces:
    IColumnRenderer

    public class PercentageColumn
    extends java.lang.Object
    implements IColumnRenderer
    Column that prints the coverage percentage for each item and the total percentage in the footer. The implementation is stateless, instances might be used in parallel.
    • Field Detail

      • percentageFormat

        private final java.text.NumberFormat percentageFormat
      • comparator

        private final java.util.Comparator<ITableItem> comparator
    • Constructor Detail

      • PercentageColumn

        public PercentageColumn​(ICoverageNode.CounterEntity entity,
                                java.util.Locale locale)
        Creates a new column that is based on the ICounter for the given entity.
        Parameters:
        entity - counter entity for this column
        locale - locale for rendering numbers
    • Method Detail

      • init

        public boolean init​(java.util.List<? extends ITableItem> items,
                            ICoverageNode total)
        Description copied from interface: IColumnRenderer
        Initializes the column before any output method is called.
        Specified by:
        init in interface IColumnRenderer
        Parameters:
        items - all items that will be displayed in the table
        total - the summary of all coverage data items in the table
        Returns:
        true if the column should be visible
      • footer

        public void footer​(HTMLElement td,
                           ICoverageNode total,
                           Resources resources,
                           ReportOutputFolder base)
                    throws java.io.IOException
        Description copied from interface: IColumnRenderer
        Renders the footer for this column.
        Specified by:
        footer in interface IColumnRenderer
        Parameters:
        td - the parent table cell
        total - the summary of all coverage data items in the table
        resources - static resources that might be referenced
        base - base folder of the table
        Throws:
        java.io.IOException - in case of IO problems with the element output
      • item

        public void item​(HTMLElement td,
                         ITableItem item,
                         Resources resources,
                         ReportOutputFolder base)
                  throws java.io.IOException
        Description copied from interface: IColumnRenderer
        Renders a single item in this column.
        Specified by:
        item in interface IColumnRenderer
        Parameters:
        td - the parent table cell
        item - the item to display
        resources - static resources that might be referenced
        base - base folder of the table
        Throws:
        java.io.IOException - in case of IO problems with the element output
      • cell

        private void cell​(HTMLElement td,
                          ICoverageNode node)
                   throws java.io.IOException
        Throws:
        java.io.IOException
      • format

        private java.lang.String format​(double ratio)
        Ratio 199/(1+199)=0.995 must be displayed as "99%", not as "100%". Unfortunately NumberFormat uses RoundingMode.HALF_EVEN by default and ability to change available only starting from JDK 6, so perform rounding using RoundingMode.FLOOR before formatting.
      • getComparator

        public java.util.Comparator<ITableItem> getComparator()
        Description copied from interface: IColumnRenderer
        Returns the comparator to sort this table column.
        Specified by:
        getComparator in interface IColumnRenderer
        Returns:
        comparator for this column