Class JRVerifier


  • public class JRVerifier
    extends Object
    A report verifier.

    The verifier checks that a report design meets certain rules in order to pass report compilation.

    Author:
    Teodor Danciu (teodord@users.sourceforge.net)
    • Field Detail

      • PROPERTY_ALLOW_ELEMENT_OVERLAP

        public static final String PROPERTY_ALLOW_ELEMENT_OVERLAP
        A property that determines whether elements are allowed to overlap.

        If this value is set to false, the report is verified not to contain elements that overlap. This is useful when the report is meant to be exported to grid-based formats such as HTML, XLS or CSV. Setting this property to false ensures that element overlap issues are caught at report compile time.

        Additionally, when this property is set to false false, the report is verified not to have any content in the background section as this content would likely be overlapped by other sections and would not show in grid-based exporters.

        By default, the property is set to true which means that no element overlap checks are performed.

        The property can be set at the following levels:

        • At global level (in jasperreports.properties) to provide a default value.
        • At report level, to indicate whether element overlap checks are to be performed for the report. If not set, the global property value is used.
        • At report element level to specify that the particular element is allowed to overlap or be overlapped by other elements, when the report or global property determines report element overlap verification. The element level property is only effective when set to true; setting the property to false does not make the verifier check for overlaps when the report is not set to be checked for element overlaps.

        Note that print when expressions or export filters cannot be taken into consideration while checking for overlapping elements as this check is performed at report compilation time. If a report contains two elements that overlap but have print when expressions that guarantee that only one of them will be printed, or if export filters are in place to exclude one of the elements, one of them should be explicitly marked to allow element overlap when the report is configured to check for overlaps.

        See Also:
        Constant Field Values
      • PROPERTY_ALLOW_ELEMENT_NEGATIVE_WIDTH

        public static final String PROPERTY_ALLOW_ELEMENT_NEGATIVE_WIDTH
        See Also:
        Constant Field Values
      • PROPERTY_ALLOW_ELEMENT_NEGATIVE_Y

        public static final String PROPERTY_ALLOW_ELEMENT_NEGATIVE_Y
        Property that determines whether elements positioned at negative Y offsets on bands, frames and other element containers are allowed in a report.

        Elements placed at negative Y offsets can cause unexpected problems in grid-based exporters where they can overlap elements from previous bands/element containers.

        If the property is set to false, elements in the report are verified to have positive Y offsets. Otherwise, no check is performed on element Y offsets.

        The property can be set at element, report and global levels. By default the property is set to true.

        Since:
        3.7.3
        See Also:
        JRElement.getY(), Constant Field Values
    • Method Detail

      • addBrokenRule

        public void addBrokenRule​(String message,
                                  Object source)
        Logs a broken rule for the report.
        Parameters:
        message - the message
        source - the source object to which the rule applies; can be null if not available
      • addBrokenRule

        public void addBrokenRule​(Exception e,
                                  Object source)
        Logs a broken report rule which was caused by an exception.
        Parameters:
        e - the exception that caused the broken rule
        source - the source object if available
      • verifyDesign

        public static Collection<JRValidationFault> verifyDesign​(JasperReportsContext jasperReportsContext,
                                                                 JasperDesign jasperDesign,
                                                                 JRExpressionCollector expressionCollector)
        Validates a report design.
        Parameters:
        jasperDesign - the report design
        expressionCollector - a collector which was used to collect expressions from the report design; if null, a new collector will be created and used to collect the expressions
        Returns:
        a list of design faults; the report design is valid if and only if the list is empty
      • verifyEmptyBackground

        protected void verifyEmptyBackground()
      • verifyBandHeights

        public static void verifyBandHeights​(Collection<JRValidationFault> brokenRules,
                                             JRReport report,
                                             int pageHeight,
                                             int topMargin,
                                             int bottomMargin)
        Validates that the report band heights fit on a page of certain size.
        Parameters:
        brokenRules - the list of rules to which the validation failures are to be added
        report - the report whose bands are to be validated
        pageHeight - the height of the page
        topMargin - the page top margin
        bottomMargin - the page bottom margin
      • verifyFormatFactoryClass

        protected void verifyFormatFactoryClass()
      • verifyReportTemplates

        protected void verifyReportTemplates()
      • toVerifyElementOverlap

        protected boolean toVerifyElementOverlap()
      • isAllowedToOverlap

        protected boolean isAllowedToOverlap​(JRElement element)
      • verifyElementOverlap

        protected void verifyElementOverlap​(JRElement element1,
                                            JRElement element2)
      • getElementPositionText

        protected String getElementPositionText​(JRElement element)
      • verifyElementsOverlap

        protected void verifyElementsOverlap​(JRElement[] elements)
      • verifyElement

        public void verifyElement​(JRElement element)
      • verifyStaticText

        protected void verifyStaticText​(JRStaticText staticText)
      • verifyTextField

        protected void verifyTextField​(JRTextField textField)
      • verifyHyperlink

        public void verifyHyperlink​(JRHyperlink hyperlink)
      • verifyHyperlinkParameter

        protected void verifyHyperlinkParameter​(JRHyperlinkParameter parameter)
      • verifyImage

        protected void verifyImage​(JRImage image)
      • verifySubreport

        protected void verifySubreport​(JRSubreport subreport)
      • verifyCommonReturnValue

        protected void verifyCommonReturnValue​(CommonReturnValue returnValue)
      • verifyElementDataset

        public void verifyElementDataset​(JRElementDataset dataset)
      • verifyDatasetRun

        public void verifyDatasetRun​(JRDatasetRun datasetRun)
        Verifies a subdataset run object.
        Parameters:
        datasetRun - the subdataset run
      • verifyFrame

        protected void verifyFrame​(JRFrame frame)
      • verifyReportElement

        public void verifyReportElement​(JRElement element)
      • allowElementNegativeX

        protected boolean allowElementNegativeX​(JRElement element)
      • allowElementNegativeY

        protected boolean allowElementNegativeY​(JRElement element)
      • verifyProperyExpressions

        protected void verifyProperyExpressions​(JRPropertyExpression[] propertyExpressions)
      • verifyPropertyExpression

        protected void verifyPropertyExpression​(JRPropertyExpression propertyExpression)
      • verifyComponentElement

        protected void verifyComponentElement​(JRComponentElement element)
      • getCurrentComponentElement

        public JRComponentElement getCurrentComponentElement()
        Returns the component element which is currently verified, if any.

        This method can be used in the ComponentCompiler.verify(Component, JRVerifier) method to get a handle of the wrapping componenet element.

        Returns:
        the currently verified component element
      • pushCurrentComponentElement

        protected void pushCurrentComponentElement​(JRComponentElement element)
      • popCurrentComponentElement

        protected void popCurrentComponentElement()
      • verifyGenericElement

        protected void verifyGenericElement​(JRGenericElement element)
      • verifyExpression

        public void verifyExpression​(JRExpression expression,
                                     Object parent,
                                     String mandatoryMessage)
      • verifyPart

        protected void verifyPart​(JRPart part)
      • pushSubdatasetContext

        public void pushSubdatasetContext​(String subdatasetName)
      • popSubdatasetContext

        public void popSubdatasetContext()