Class JRVerifier

java.lang.Object
net.sf.jasperreports.engine.design.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 Details

    • 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:
    • PROPERTY_ALLOW_ELEMENT_NEGATIVE_WIDTH

      public static final String PROPERTY_ALLOW_ELEMENT_NEGATIVE_WIDTH
      See Also:
    • PROPERTY_ALLOW_ELEMENT_NEGATIVE_X

      public static final String PROPERTY_ALLOW_ELEMENT_NEGATIVE_X
      See Also:
    • 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:
  • Constructor Details

  • Method Details

    • getReportDesign

      public JasperDesign getReportDesign()
    • 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

      protected static void addBrokenRule(Collection<JRValidationFault> brokenRules, String message, Object source)
    • 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
    • verifyDesign

      public static Collection<JRValidationFault> verifyDesign(JasperDesign jasperDesign)
      Validates a report design.
      Parameters:
      jasperDesign - the report design
      Returns:
      a list of design faults; the report design is valid if and only if the list is empty
    • verifyDesign

      protected Collection<JRValidationFault> verifyDesign()
    • 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()
    • verifyExpression

      public static void verifyExpression(JRExpression expression, Map<String,? extends JRParameter> parametersMap, Map<String,JRField> fieldsMap, Map<String,JRVariable> variablesMap, Collection<JRValidationFault> brokenRules)
    • verifyReportTemplates

      protected void verifyReportTemplates()
    • verifyTemplate

      protected void verifyTemplate(JRReportTemplate template)
    • 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)
    • verifyReturnValue

      protected void verifyReturnValue(VariableReturnValue returnValue)
    • verifyReturnValue

      protected void verifyReturnValue(ExpressionReturnValue returnValue)
    • verifyCommonReturnValue

      protected void verifyCommonReturnValue(CommonReturnValue returnValue)
    • verifyCrosstab

      protected void verifyCrosstab(JRDesignCrosstab crosstab)
    • verifyCrosstabNextGroup

      protected void verifyCrosstabNextGroup(JRCrosstabGroup group, JRCrosstabGroup nextGroup)
    • 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)
    • verify

      public void verify(MultiAxisData data)
    • verifyPart

      protected void verifyPart(JRPart part)
    • pushSubdatasetContext

      public void pushSubdatasetContext(String subdatasetName)
    • popSubdatasetContext

      public void popSubdatasetContext()
    • currentDataset

      protected JRDesignDataset currentDataset()