Class EvaluationConditionalFormatRule

  • All Implemented Interfaces:
    java.lang.Comparable<EvaluationConditionalFormatRule>

    public class EvaluationConditionalFormatRule
    extends java.lang.Object
    implements java.lang.Comparable<EvaluationConditionalFormatRule>
    Abstracted and cached version of a Conditional Format rule for use with a ConditionalFormattingEvaluator. This references a rule, its owning ConditionalFormatting, its priority order (lower index = higher priority in Excel), and the information needed to evaluate the rule for a given cell.

    Having this all combined and cached avoids repeated access calls to the underlying structural objects, XSSF CT* objects and HSSF raw byte structures. Those objects can be referenced from here. This object will be out of sync if anything modifies the referenced structures' evaluation properties.

    The assumption is that consuming applications will read the display properties once and create whatever style objects they need, caching those at the application level. Thus this class only caches values needed for evaluation, not display.

    • Constructor Detail

      • EvaluationConditionalFormatRule

        public EvaluationConditionalFormatRule​(WorkbookEvaluator workbookEvaluator,
                                               Sheet sheet,
                                               ConditionalFormatting formatting,
                                               int formattingIndex,
                                               ConditionalFormattingRule rule,
                                               int ruleIndex,
                                               CellRangeAddress[] regions)
        Parameters:
        workbookEvaluator -
        sheet -
        formatting -
        formattingIndex - for priority, zero based
        rule -
        ruleIndex - for priority, zero based, if this is an HSSF rule. Unused for XSSF rules
        regions - could be read from formatting, but every call creates new objects in a new array. this allows calling it once per formatting instance, and re-using the array.
    • Method Detail

      • getSheet

        public Sheet getSheet()
        Returns:
        sheet
      • getFormattingIndex

        public int getFormattingIndex()
        Returns:
        conditional formatting index
      • getNumberFormat

        public ExcelNumberFormat getNumberFormat()
        Returns:
        Excel number format string to apply to matching cells, or null to keep the cell default
      • getRuleIndex

        public int getRuleIndex()
        Returns:
        rule index
      • getPriority

        public int getPriority()
        Returns:
        the priority
      • getFormula1

        public java.lang.String getFormula1()
        Returns:
        the formula1
      • getFormula2

        public java.lang.String getFormula2()
        Returns:
        the formula2
      • getText

        public java.lang.String getText()
        Returns:
        condition text if any, or null
      • equals

        public boolean equals​(java.lang.Object obj)
        Defined as equal sheet name and formatting and rule indexes
        Overrides:
        equals in class java.lang.Object
        See Also:
        Object.equals(java.lang.Object)
      • compareTo

        public int compareTo​(EvaluationConditionalFormatRule o)
        Per Excel Help, XSSF rule priority is sheet-wide, not just within the owning ConditionalFormatting object. This can be seen by creating 4 rules applying to two different ranges and examining the XML.

        HSSF priority is based on definition/persistence order.

        Specified by:
        compareTo in interface java.lang.Comparable<EvaluationConditionalFormatRule>
        Parameters:
        o -
        Returns:
        comparison based on sheet name, formatting index, and rule priority
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object