Class JRVerifier
The verifier checks that a report design meets certain rules in order to pass report compilation.
- Author:
- Teodor Danciu (teodord@users.sourceforge.net)
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
static final String
static final String
Property that determines whether elements positioned at negative Y offsets on bands, frames and other element containers are allowed in a report.static final String
A property that determines whether elements are allowed to overlap. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
JRVerifier
(JasperReportsContext jasperReportsContext, JasperDesign jasperDesign, JRExpressionCollector expressionCollector) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addBrokenRule
(Exception e, Object source) Logs a broken report rule which was caused by an exception.void
addBrokenRule
(String message, Object source) Logs a broken rule for the report.protected static void
addBrokenRule
(Collection<JRValidationFault> brokenRules, String message, Object source) protected boolean
allowElementNegativeX
(JRElement element) protected boolean
allowElementNegativeY
(JRElement element) protected JRDesignDataset
Returns the component element which is currently verified, if any.protected String
getElementPositionText
(JRElement element) protected boolean
isAllowedToOverlap
(JRElement element) protected void
void
protected void
void
pushSubdatasetContext
(String subdatasetName) protected boolean
void
verify
(MultiAxisData data) 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.protected void
verifyCommonReturnValue
(CommonReturnValue returnValue) protected void
verifyComponentElement
(JRComponentElement element) protected void
verifyCrosstab
(JRDesignCrosstab crosstab) protected void
verifyCrosstabNextGroup
(JRCrosstabGroup group, JRCrosstabGroup nextGroup) void
verifyDatasetRun
(JRDatasetRun datasetRun) Verifies a subdataset run object.protected Collection
<JRValidationFault> static Collection
<JRValidationFault> verifyDesign
(JasperDesign jasperDesign) Validates areport design
.static Collection
<JRValidationFault> verifyDesign
(JasperReportsContext jasperReportsContext, JasperDesign jasperDesign, JRExpressionCollector expressionCollector) Validates areport design
.void
verifyElement
(JRElement element) void
verifyElementDataset
(JRElementDataset dataset) protected void
verifyElementOverlap
(JRElement element1, JRElement element2) protected void
verifyElementsOverlap
(JRElement[] elements) protected void
void
verifyExpression
(JRExpression expression, Object parent, String mandatoryMessage) static void
verifyExpression
(JRExpression expression, Map<String, ? extends JRParameter> parametersMap, Map<String, JRField> fieldsMap, Map<String, JRVariable> variablesMap, Collection<JRValidationFault> brokenRules) protected void
protected void
verifyFrame
(JRFrame frame) protected void
verifyGenericElement
(JRGenericElement element) void
verifyHyperlink
(JRHyperlink hyperlink) protected void
verifyHyperlinkParameter
(JRHyperlinkParameter parameter) protected void
verifyImage
(JRImage image) protected void
verifyPart
(JRPart part) protected void
verifyPropertyExpression
(JRPropertyExpression propertyExpression) protected void
verifyProperyExpressions
(JRPropertyExpression[] propertyExpressions) void
verifyReportElement
(JRElement element) protected void
protected void
verifyReturnValue
(ExpressionReturnValue returnValue) protected void
verifyReturnValue
(VariableReturnValue returnValue) protected void
verifyStaticText
(JRStaticText staticText) protected void
verifySubreport
(JRSubreport subreport) protected void
verifyTemplate
(JRReportTemplate template) protected void
verifyTextField
(JRTextField textField)
-
Field Details
-
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 tofalse
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 tofalse
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
- See Also:
-
PROPERTY_ALLOW_ELEMENT_NEGATIVE_X
- See Also:
-
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
-
JRVerifier
protected JRVerifier(JasperReportsContext jasperReportsContext, JasperDesign jasperDesign, JRExpressionCollector expressionCollector)
-
-
Method Details
-
getReportDesign
-
addBrokenRule
Logs a broken rule for the report.- Parameters:
message
- the messagesource
- 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
Logs a broken report rule which was caused by an exception.- Parameters:
e
- the exception that caused the broken rulesource
- the source object if available
-
verifyDesign
public static Collection<JRValidationFault> verifyDesign(JasperReportsContext jasperReportsContext, JasperDesign jasperDesign, JRExpressionCollector expressionCollector) Validates areport design
.- Parameters:
jasperDesign
- the report designexpressionCollector
- 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
Validates areport 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
-
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 addedreport
- the report whose bands are to be validatedpageHeight
- the height of the pagetopMargin
- the page top marginbottomMargin
- 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
-
toVerifyElementOverlap
protected boolean toVerifyElementOverlap() -
isAllowedToOverlap
-
verifyElementOverlap
-
getElementPositionText
-
verifyElementsOverlap
-
verifyElement
-
verifyStaticText
-
verifyTextField
-
verifyHyperlink
-
verifyHyperlinkParameter
-
verifyImage
-
verifySubreport
-
verifyReturnValue
-
verifyReturnValue
-
verifyCommonReturnValue
-
verifyCrosstab
-
verifyCrosstabNextGroup
-
verifyElementDataset
-
verifyDatasetRun
Verifies a subdataset run object.- Parameters:
datasetRun
- the subdataset run
-
verifyFrame
-
verifyReportElement
-
allowElementNegativeX
-
allowElementNegativeY
-
verifyProperyExpressions
-
verifyPropertyExpression
-
verifyComponentElement
-
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
-
popCurrentComponentElement
protected void popCurrentComponentElement() -
verifyGenericElement
-
verifyExpression
-
verify
-
verifyPart
-
pushSubdatasetContext
-
popSubdatasetContext
public void popSubdatasetContext() -
currentDataset
-