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 Stringstatic final Stringstatic final StringProperty that determines whether elements positioned at negative Y offsets on bands, frames and other element containers are allowed in a report.static final StringA property that determines whether elements are allowed to overlap. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedJRVerifier(JasperReportsContext jasperReportsContext, JasperDesign jasperDesign, JRExpressionCollector expressionCollector) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddBrokenRule(Exception e, Object source) Logs a broken report rule which was caused by an exception.voidaddBrokenRule(String message, Object source) Logs a broken rule for the report.protected static voidaddBrokenRule(Collection<JRValidationFault> brokenRules, String message, Object source) protected booleanallowElementNegativeX(JRElement element) protected booleanallowElementNegativeY(JRElement element) protected JRDesignDatasetReturns the component element which is currently verified, if any.protected StringgetElementPositionText(JRElement element) protected booleanisAllowedToOverlap(JRElement element) protected voidvoidprotected voidvoidpushSubdatasetContext(String subdatasetName) protected booleanvoidverify(MultiAxisData data) static voidverifyBandHeights(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 voidverifyCommonReturnValue(CommonReturnValue returnValue) protected voidverifyComponentElement(JRComponentElement element) protected voidverifyCrosstab(JRDesignCrosstab crosstab) protected voidverifyCrosstabNextGroup(JRCrosstabGroup group, JRCrosstabGroup nextGroup) voidverifyDatasetRun(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.voidverifyElement(JRElement element) voidverifyElementDataset(JRElementDataset dataset) protected voidverifyElementOverlap(JRElement element1, JRElement element2) protected voidverifyElementsOverlap(JRElement[] elements) protected voidvoidverifyExpression(JRExpression expression, Object parent, String mandatoryMessage) static voidverifyExpression(JRExpression expression, Map<String, ? extends JRParameter> parametersMap, Map<String, JRField> fieldsMap, Map<String, JRVariable> variablesMap, Collection<JRValidationFault> brokenRules) protected voidprotected voidverifyFrame(JRFrame frame) protected voidverifyGenericElement(JRGenericElement element) voidverifyHyperlink(JRHyperlink hyperlink) protected voidverifyHyperlinkParameter(JRHyperlinkParameter parameter) protected voidverifyImage(JRImage image) protected voidverifyPart(JRPart part) protected voidverifyPropertyExpression(JRPropertyExpression propertyExpression) protected voidverifyProperyExpressions(JRPropertyExpression[] propertyExpressions) voidverifyReportElement(JRElement element) protected voidprotected voidverifyReturnValue(ExpressionReturnValue returnValue) protected voidverifyReturnValue(VariableReturnValue returnValue) protected voidverifyStaticText(JRStaticText staticText) protected voidverifySubreport(JRSubreport subreport) protected voidverifyTemplate(JRReportTemplate template) protected voidverifyTextField(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 tofalseensures 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
truewhich 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 tofalsedoes 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
-