net.sf.jasperreports.engine.design
Class JRVerifier

java.lang.Object
  extended by net.sf.jasperreports.engine.design.JRVerifier

public class JRVerifier
extends java.lang.Object

A report verifier.

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

Version:
$Id: JRVerifier.java 5180 2012-03-29 13:23:12Z teodord $
Author:
Teodor Danciu (teodord@users.sourceforge.net)

Field Summary
static java.lang.String PROPERTY_ALLOW_ELEMENT_NEGATIVE_WIDTH
           
static java.lang.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.
static java.lang.String PROPERTY_ALLOW_ELEMENT_OVERLAP
          A property that determines whether elements are allowed to overlap.
 
Constructor Summary
protected JRVerifier(JasperDesign jasperDesign)
          Deprecated. Replaced by JRVerifier(JasperReportsContext, JasperDesign, JRExpressionCollector).
protected JRVerifier(JasperDesign jasperDesign, JRExpressionCollector expressionCollector)
          Deprecated. Replaced by JRVerifier(JasperReportsContext, JasperDesign, JRExpressionCollector).
protected JRVerifier(JasperReportsContext jasperReportsContext, JasperDesign jasperDesign, JRExpressionCollector expressionCollector)
           
 
Method Summary
protected static void addBrokenRule(java.util.Collection<JRValidationFault> brokenRules, java.lang.String message, java.lang.Object source)
           
 void addBrokenRule(java.lang.Exception e, java.lang.Object source)
          Logs a broken report rule which was caused by an exception.
 void addBrokenRule(java.lang.String message, java.lang.Object source)
          Logs a broken rule for the report.
protected  boolean allowElementNegativeY(JRElement element)
           
 JRComponentElement getCurrentComponentElement()
          Returns the component element which is currently verified, if any.
protected  java.lang.String getElementPositionText(JRElement element)
           
 JasperDesign getReportDesign()
           
protected  boolean isAllowedToOverlap(JRElement element)
           
protected  void popCurrentComponentElement()
           
protected  void pushCurrentComponentElement(JRComponentElement element)
           
protected  boolean toVerifyElementOverlap()
           
 void verify(JRCategoryDataset dataset)
           
protected  void verify(JRCategorySeries series)
           
 void verify(JRGanttDataset dataset)
           
protected  void verify(JRGanttSeries series)
           
 void verify(JRHighLowDataset dataset)
           
 void verify(JRPieDataset dataset)
           
protected  void verify(JRPieSeries series)
           
 void verify(JRTimePeriodDataset dataset)
           
protected  void verify(JRTimePeriodSeries series)
           
protected  void verify(JRTimeSeries series)
           
 void verify(JRTimeSeriesDataset dataset)
           
 void verify(JRValueDataset dataset)
          Verify the design of a value dataset.
 void verify(JRXyDataset dataset)
           
protected  void verify(JRXySeries series)
           
 void verify(JRXyzDataset dataset)
           
protected  void verify(JRXyzSeries series)
           
static void verifyBandHeights(java.util.Collection<JRValidationFault> brokenRules, JRReport report, int pageHeight, int topMargin, int bottomMargin)
          Validates that the report band heights fit on a page of certain size.
protected  void verifyComponentElement(JRComponentElement element)
           
 void verifyDatasetRun(JRDatasetRun datasetRun)
          Verifies a subdataset run object.
protected  java.util.Collection<JRValidationFault> verifyDesign()
           
static java.util.Collection<JRValidationFault> verifyDesign(JasperDesign jasperDesign)
          Validates a report design.
static java.util.Collection<JRValidationFault> verifyDesign(JasperDesign jasperDesign, JRExpressionCollector expressionCollector)
          Deprecated. Replaced by verifyDesign(JasperReportsContext, JasperDesign, JRExpressionCollector).
static java.util.Collection<JRValidationFault> verifyDesign(JasperReportsContext jasperReportsContext, JasperDesign jasperDesign, JRExpressionCollector expressionCollector)
          Validates a report design.
 void verifyElement(JRElement element)
           
 void verifyElementDataset(JRElementDataset dataset)
           
protected  void verifyElementOverlap(JRElement element1, JRElement element2)
           
protected  void verifyElementsOverlap(JRElement[] elements)
           
protected  void verifyEmptyBackground()
           
 void verifyExpression(JRExpression expression, java.lang.Object parent, java.lang.String mandatoryMessage)
           
protected  void verifyFormatFactoryClass()
           
protected  void verifyGenericElement(JRGenericElement element)
           
 void verifyHyperlink(JRHyperlink hyperlink)
           
protected  void verifyHyperlinkParameter(JRHyperlinkParameter parameter)
           
protected  void verifyPropertyExpression(JRPropertyExpression propertyExpression)
           
protected  void verifyProperyExpressions(JRPropertyExpression[] propertyExpressions)
           
protected  void verifyReportElement(JRElement element)
           
protected  void verifyReportTemplates()
           
protected  void verifyTemplate(JRReportTemplate template)
           
protected  boolean verifyTemplateSourceType(java.lang.Class<?> valueClass)
          Deprecated. To be removed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROPERTY_ALLOW_ELEMENT_OVERLAP

public static final java.lang.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:

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 java.lang.String PROPERTY_ALLOW_ELEMENT_NEGATIVE_WIDTH
See Also:
Constant Field Values

PROPERTY_ALLOW_ELEMENT_NEGATIVE_Y

public static final java.lang.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
Constructor Detail

JRVerifier

protected JRVerifier(JasperDesign jasperDesign)
Deprecated. Replaced by JRVerifier(JasperReportsContext, JasperDesign, JRExpressionCollector).


JRVerifier

protected JRVerifier(JasperDesign jasperDesign,
                     JRExpressionCollector expressionCollector)
Deprecated. Replaced by JRVerifier(JasperReportsContext, JasperDesign, JRExpressionCollector).


JRVerifier

protected JRVerifier(JasperReportsContext jasperReportsContext,
                     JasperDesign jasperDesign,
                     JRExpressionCollector expressionCollector)
Method Detail

getReportDesign

public JasperDesign getReportDesign()

addBrokenRule

public void addBrokenRule(java.lang.String message,
                          java.lang.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(java.util.Collection<JRValidationFault> brokenRules,
                                    java.lang.String message,
                                    java.lang.Object source)

addBrokenRule

public void addBrokenRule(java.lang.Exception e,
                          java.lang.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 java.util.Collection<JRValidationFault> verifyDesign(JasperDesign jasperDesign,
                                                                   JRExpressionCollector expressionCollector)
Deprecated. Replaced by verifyDesign(JasperReportsContext, JasperDesign, JRExpressionCollector).


verifyDesign

public static java.util.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 java.util.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 java.util.Collection<JRValidationFault> verifyDesign()

verifyEmptyBackground

protected void verifyEmptyBackground()

verifyBandHeights

public static void verifyBandHeights(java.util.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()

verifyTemplate

protected void verifyTemplate(JRReportTemplate template)

verifyTemplateSourceType

protected boolean verifyTemplateSourceType(java.lang.Class<?> valueClass)
Deprecated. To be removed.


toVerifyElementOverlap

protected boolean toVerifyElementOverlap()

isAllowedToOverlap

protected boolean isAllowedToOverlap(JRElement element)

verifyElementOverlap

protected void verifyElementOverlap(JRElement element1,
                                    JRElement element2)

getElementPositionText

protected java.lang.String getElementPositionText(JRElement element)

verifyElementsOverlap

protected void verifyElementsOverlap(JRElement[] elements)

verifyElement

public void verifyElement(JRElement element)

verifyHyperlink

public void verifyHyperlink(JRHyperlink hyperlink)

verifyHyperlinkParameter

protected void verifyHyperlinkParameter(JRHyperlinkParameter parameter)

verifyElementDataset

public void verifyElementDataset(JRElementDataset dataset)

verifyDatasetRun

public void verifyDatasetRun(JRDatasetRun datasetRun)
Verifies a subdataset run object.

Parameters:
datasetRun - the subdataset run

verify

public void verify(JRCategoryDataset dataset)

verify

protected void verify(JRCategorySeries series)

verify

public void verify(JRPieDataset dataset)

verify

protected void verify(JRPieSeries series)

verify

public void verify(JRHighLowDataset dataset)

verify

public void verify(JRTimePeriodDataset dataset)

verify

protected void verify(JRTimePeriodSeries series)

verify

public void verify(JRTimeSeriesDataset dataset)

verify

protected void verify(JRTimeSeries series)

verify

public void verify(JRValueDataset dataset)
Verify the design of a value dataset. Since value dataset's only contain a single value and do not support hyperlinks there is nothing to verify.


verify

public void verify(JRXyDataset dataset)

verify

protected void verify(JRXySeries series)

verify

protected void verify(JRGanttSeries series)

verify

public void verify(JRXyzDataset dataset)

verify

public void verify(JRGanttDataset dataset)

verify

protected void verify(JRXyzSeries series)

verifyReportElement

protected void verifyReportElement(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,
                             java.lang.Object parent,
                             java.lang.String mandatoryMessage)


© 2001-2010 Jaspersoft Corporation www.jaspersoft.com