Package net.sf.jasperreports.engine.fill
Class JRFillSubreport
- java.lang.Object
-
- net.sf.jasperreports.engine.fill.JRFillElement
-
- net.sf.jasperreports.engine.fill.JRFillSubreport
-
- All Implemented Interfaces:
Cloneable
,DynamicPropertiesHolder
,JRFillCloneable
,JRChild
,JRCloneable
,JRCommonElement
,JRElement
,JRIdentifiable
,JRPropertiesHolder
,JRStyleContainer
,JRStyleSetter
,JRSubreport
,JRVisitable
- Direct Known Subclasses:
ComponentFillSubreport
public class JRFillSubreport extends JRFillElement implements JRSubreport
- Author:
- Teodor Danciu (teodord@users.sourceforge.net)
-
-
Field Summary
Fields Modifier and Type Field Description static String
EXCEPTION_MESSAGE_KEY_NO_REWINDABLE_DATA_SOURCE
static String
EXCEPTION_MESSAGE_KEY_PROPERTY_NOT_SET
static String
EXCEPTION_MESSAGE_KEY_UNKNOWN_SOURCE_CLASS
static String
EXCEPTION_MESSAGE_KEY_UNSUPPORTED_SECTION_TYPE
protected JRPrintPage
printPage
static String
PROPERTY_SUBREPORT_GENERATE_RECTANGLE
Property used to specify when rectangle elements should be generated for subreports during the report filling.protected FillerSubreportParent
subFillerParent
static String
SUBREPORT_GENERATE_RECTANGLE_ALWAYS
protected JRBaseFiller
subreportFiller
-
Fields inherited from class net.sf.jasperreports.engine.fill.JRFillElement
band, conditionalStylesContainer, currentEvaluation, currentStyle, defaultPopulateTemplateStyle, defaultStyleProvider, delayedEvaluationsMap, dynamicProperties, dynamicTransferProperties, elementGroup, EXCEPTION_MESSAGE_KEY_INVALID_BOOKMARK_LEVEL, expressionEvaluator, exprStyle, fillContainerContext, filler, hasDynamicPopulateTemplateStyle, initStyle, mergedProperties, originProvider, parent, printElementOriginator, printWhenGroupChanges, propertyExpressions, providerStyle, staticProperties, staticTransferProperties, styleProviders, templates
-
Fields inherited from interface net.sf.jasperreports.engine.JRElement
PROPERTY_ELEMENT_TEMPLATE_POPULATE_STYLE
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
JRFillSubreport(JRBaseFiller filler, JRSubreport subreport, JRFillObjectFactory factory)
protected
JRFillSubreport(JRFillSubreport subreport, JRFillCloneFactory factory)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
cancelSubreportFill()
void
collectExpressions(JRExpressionCollector collector)
JRFillCloneable
createClone(JRFillCloneFactory factory)
Creates a working clone of itself.protected JRTemplateElement
createElementTemplate()
protected DatasetExpressionEvaluator
createEvaluator()
protected FillerSubreportParent
createFillerParent(DatasetExpressionEvaluator evaluator)
protected void
evaluate(byte evaluation)
protected Map<String,Object>
evaluateParameterValues(byte evaluation)
protected JasperReportSource
evaluateReportSource(byte evaluation)
protected void
evaluateSubreport(byte evaluation)
protected void
evictReportEvaluator()
protected JRPrintElement
fill()
protected void
fillSubreport()
protected String
generateRectangleOption()
JRExpression
getConnectionExpression()
protected int
getContentsStretchHeight()
JRExpression
getDataSourceExpression()
JRExpression
getExpression()
protected JRTemplateRectangle
getJRTemplateRectangle()
ModeEnum
getMode()
Returns the element transparency mode.OverflowType
getOverflowType()
JRSubreportParameter[]
getParameters()
JRExpression
getParametersMapExpression()
static Map<String,Object>
getParameterValues(BaseReportFiller filler, JRFillExpressionEvaluator expressionEvaluator, JRExpression parametersMapExpression, JRDatasetParameter[] subreportParameters, byte evaluation, boolean ignoreNullExpressions, boolean removeResourceBundle, boolean removeFormatFactory)
Utility method used for constructing a parameter values map for subreports, sub datasets and crosstabs.static Map<String,Object>
getParameterValues(BaseReportFiller filler, JRExpression parametersMapExpression, JRDatasetParameter[] subreportParameters, byte evaluation, boolean ignoreNullExpressions, boolean removeResourceBundle, boolean removeFormatFactory)
Utility method used for constructing a parameter values map for subreports, sub datasets and crosstabs.protected int
getPrintContentsWidth()
protected Collection<JRPrintElement>
getPrintElements()
protected JasperReport
getReport()
protected String
getReportLocation()
protected String
getReportName()
static JasperReportSource
getReportSource(Object source, Boolean isUsingCache, BaseReportFiller filler)
JRSubreportReturnValue[]
getReturnValues()
Returns the list of subreport copied values.protected JRSubreportRunnerFactory
getRunnerFactory()
Boolean
getUsingCache()
Indicates if the engine is loading the current subreport from cache.protected void
initSubreportFiller(DatasetExpressionEvaluator evaluator)
protected boolean
isReorderBandElements()
Boolean
isRunToBottom()
Specifies whether the subreport element will consume the entire vertical space available on the report page.protected boolean
isSplitTypePreventInhibited(boolean isTopLevelCall)
static JasperReport
loadReport(Object source, BaseReportFiller filler)
protected DatasetExpressionEvaluator
loadReportEvaluator()
protected static JasperReportSource
loadReportSource(Object reportSource, String contextLocation, BaseReportFiller filler)
protected boolean
prepare(int availableHeight, boolean isOverflow)
protected void
registerReportStyles(List<JRStyle> styles)
protected void
resolveElement(JRPrintElement element, byte evaluation)
Resolves an element.void
rewind()
protected void
setBand(JRFillBand band)
void
setOverflowType(OverflowType overflowType)
void
setRunToBottom(Boolean runToBottom)
Sets the flag that Specifies whether the subreport element will consume the entire vertical space available on the report page.void
setUsingCache(Boolean isUsingCache)
Specifies if the engine should be loading the current subreport from cache.void
subreportPageFilled()
boolean
usingCache()
protected void
validateReport()
protected void
verifyBandHeights()
void
visit(JRVisitor visitor)
-
Methods inherited from class net.sf.jasperreports.engine.fill.JRFillElement
addDependantElement, addDynamicProperty, clone, clone, clone, collectDelayedEvaluations, collectDelayedEvaluations, collectDelayedEvaluations, collectStyleDelayedEvaluations, collectStyleProviderDelayedEvaluations, delayedEvaluate, delayedEvaluationUpdatesTemplate, evaluateExpression, evaluatePrintWhenExpression, evaluateProperties, evaluateStyle, getBackcolor, getBand, getBookmarkLevel, getCollapsedHeightAbove, getCollapsedHeightBelow, getConditionalStylesContainer, getDefaultStyleProvider, getDependantElements, getDynamicProperties, getElementGroup, getElementOrigin, getElementTemplate, getEvaluatedProperties, getEvaluationTime, getField, getFiller, getForecolor, getGroupElements, getHeight, getInitStyle, getKey, getOwnBackcolor, getOwnForecolor, getOwnMode, getParent, getParentProperties, getPositionType, getPrepareHeight, getPrintWhenExpression, getPrintWhenGroupChanges, getPropertiesMap, getPropertyExpressions, getRelativeY, getStretchHeight, getStretchType, getStyle, getStyleExpression, getStyleNameReference, getStyleResolver, getTemplate, getTimeZone, getUUID, getVariable, getWidth, getX, getY, hasDynamicProperties, hasDynamicProperty, hasProperties, initDelayedEvaluationPrint, initDelayedEvaluations, initStyleProviders, isAlreadyPrinted, isAutoEvaluateNow, isDelayedStyleEvaluation, isEvaluateAuto, isEvaluateNow, isPrintInFirstWholeBand, isPrintRepeatedValues, isPrintWhenDetailOverflows, isPrintWhenExpressionNull, isPrintWhenTrue, isRemoveLineWhenBlank, isReprinted, isToPrint, isValueRepeating, moveDependantElements, performDelayedEvaluation, registerTemplate, reset, resolveElement, setAlreadyPrinted, setBackcolor, setCollapsedHeightAbove, setCollapsedHeightBelow, setConditionalStylesContainer, setCurrentEvaluation, setExpressionEvaluator, setForecolor, setHeight, setMode, setOriginProvider, setPositionType, setPrepareHeight, setPrintInFirstWholeBand, setPrintRepeatedValues, setPrintWhenDetailOverflows, setPrintWhenExpressionNull, setPrintWhenTrue, setRelativeY, setRemoveLineWhenBlank, setReprinted, setShrinkable, setStretchHeight, setStretchType, setStyle, setStyleNameReference, setToPrint, setValueRepeating, setWidth, setX, setY, stretchElement, stretchElementToContainer, stretchElementToElementGroup, stretchElementToHeight, toPopulateTemplateStyle, transferProperties, transferProperties
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.sf.jasperreports.engine.JRCloneable
clone
-
Methods inherited from interface net.sf.jasperreports.engine.JRCommonElement
getBackcolor, getForecolor, getHeight, getKey, getOwnBackcolor, getOwnForecolor, getOwnMode, getWidth, setBackcolor, setForecolor, setMode
-
Methods inherited from interface net.sf.jasperreports.engine.JRElement
clone, getElementGroup, getPositionType, getPrintWhenExpression, getPrintWhenGroupChanges, getPropertyExpressions, getStretchType, getStyleExpression, getX, getY, isPrintInFirstWholeBand, isPrintRepeatedValues, isPrintWhenDetailOverflows, isRemoveLineWhenBlank, setPositionType, setPrintInFirstWholeBand, setPrintRepeatedValues, setPrintWhenDetailOverflows, setRemoveLineWhenBlank, setStretchType, setWidth, setX
-
Methods inherited from interface net.sf.jasperreports.engine.JRIdentifiable
getUUID
-
Methods inherited from interface net.sf.jasperreports.engine.JRPropertiesHolder
getParentProperties, getPropertiesMap, hasProperties
-
Methods inherited from interface net.sf.jasperreports.engine.JRStyleContainer
getDefaultStyleProvider, getStyle, getStyleName, getStyleNameReference
-
-
-
-
Field Detail
-
EXCEPTION_MESSAGE_KEY_PROPERTY_NOT_SET
public static final String EXCEPTION_MESSAGE_KEY_PROPERTY_NOT_SET
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_NO_REWINDABLE_DATA_SOURCE
public static final String EXCEPTION_MESSAGE_KEY_NO_REWINDABLE_DATA_SOURCE
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_UNSUPPORTED_SECTION_TYPE
public static final String EXCEPTION_MESSAGE_KEY_UNSUPPORTED_SECTION_TYPE
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_UNKNOWN_SOURCE_CLASS
public static final String EXCEPTION_MESSAGE_KEY_UNKNOWN_SOURCE_CLASS
- See Also:
- Constant Field Values
-
PROPERTY_SUBREPORT_GENERATE_RECTANGLE
public static final String PROPERTY_SUBREPORT_GENERATE_RECTANGLE
Property used to specify when rectangle elements should be generated for subreports during the report filling. If the property value isalways
, rectangle elements will be always generated, otherwise they will be created only if the subreport element is not transparent or it has properties- See Also:
- Constant Field Values
-
SUBREPORT_GENERATE_RECTANGLE_ALWAYS
public static final String SUBREPORT_GENERATE_RECTANGLE_ALWAYS
- See Also:
- Constant Field Values
-
subreportFiller
protected JRBaseFiller subreportFiller
-
subFillerParent
protected FillerSubreportParent subFillerParent
-
printPage
protected JRPrintPage printPage
-
-
Constructor Detail
-
JRFillSubreport
protected JRFillSubreport(JRBaseFiller filler, JRSubreport subreport, JRFillObjectFactory factory)
-
JRFillSubreport
protected JRFillSubreport(JRFillSubreport subreport, JRFillCloneFactory factory)
-
-
Method Detail
-
setBand
protected void setBand(JRFillBand band)
- Overrides:
setBand
in classJRFillElement
-
getMode
public ModeEnum getMode()
Description copied from interface:JRCommonElement
Returns the element transparency mode. The default value depends on the type of the report element. Graphic elements like rectangles and lines are opaque by default, but the images are transparent. Both static texts and text fields are transparent by default, and so are the subreport elements.- Specified by:
getMode
in interfaceJRCommonElement
- Overrides:
getMode
in classJRFillElement
-
usingCache
public boolean usingCache()
-
isRunToBottom
public Boolean isRunToBottom()
Description copied from interface:JRSubreport
Specifies whether the subreport element will consume the entire vertical space available on the report page.- Specified by:
isRunToBottom
in interfaceJRSubreport
- Returns:
- whether the subreport element will consume the entire space down to the bottom of the page
- See Also:
JRSubreport.setRunToBottom(Boolean)
-
setRunToBottom
public void setRunToBottom(Boolean runToBottom)
Description copied from interface:JRSubreport
Sets the flag that Specifies whether the subreport element will consume the entire vertical space available on the report page.This flag should be set to
true
if the subreport needs to always print its column and page footers at the bottom of the report page, even when the subreport data does not stretch to the bottom.Note that when
isFloatColumnFooter
is set for the subreport, the column footers will not be printed at the bottom of the page even if this flag is set.- Specified by:
setRunToBottom
in interfaceJRSubreport
- Parameters:
runToBottom
- whether the subreport element will consume the entire space down to the bottom of the page
-
getOverflowType
public OverflowType getOverflowType()
- Specified by:
getOverflowType
in interfaceJRSubreport
-
setOverflowType
public void setOverflowType(OverflowType overflowType)
- Specified by:
setOverflowType
in interfaceJRSubreport
-
getParametersMapExpression
public JRExpression getParametersMapExpression()
- Specified by:
getParametersMapExpression
in interfaceJRSubreport
-
getParameters
public JRSubreportParameter[] getParameters()
- Specified by:
getParameters
in interfaceJRSubreport
-
getConnectionExpression
public JRExpression getConnectionExpression()
- Specified by:
getConnectionExpression
in interfaceJRSubreport
-
getDataSourceExpression
public JRExpression getDataSourceExpression()
- Specified by:
getDataSourceExpression
in interfaceJRSubreport
-
getExpression
public JRExpression getExpression()
- Specified by:
getExpression
in interfaceJRSubreport
-
getJRTemplateRectangle
protected JRTemplateRectangle getJRTemplateRectangle()
-
createElementTemplate
protected JRTemplateElement createElementTemplate()
- Specified by:
createElementTemplate
in classJRFillElement
-
getPrintElements
protected Collection<JRPrintElement> getPrintElements()
-
getPrintContentsWidth
protected int getPrintContentsWidth()
-
subreportPageFilled
public void subreportPageFilled()
-
evaluate
protected void evaluate(byte evaluation) throws JRException
- Specified by:
evaluate
in classJRFillElement
- Throws:
JRException
-
evaluateReportSource
protected JasperReportSource evaluateReportSource(byte evaluation) throws JRException
- Throws:
JRException
-
getReportSource
public static JasperReportSource getReportSource(Object source, Boolean isUsingCache, BaseReportFiller filler) throws JRException
- Throws:
JRException
-
loadReportSource
protected static JasperReportSource loadReportSource(Object reportSource, String contextLocation, BaseReportFiller filler) throws JRException
- Throws:
JRException
-
loadReport
public static JasperReport loadReport(Object source, BaseReportFiller filler) throws JRException
- Throws:
JRException
-
evaluateSubreport
protected void evaluateSubreport(byte evaluation) throws JRException
- Throws:
JRException
-
getReport
protected JasperReport getReport()
-
evaluateParameterValues
protected Map<String,Object> evaluateParameterValues(byte evaluation) throws JRException
- Throws:
JRException
-
loadReportEvaluator
protected DatasetExpressionEvaluator loadReportEvaluator() throws JRException
- Throws:
JRException
-
evictReportEvaluator
protected void evictReportEvaluator()
-
createEvaluator
protected DatasetExpressionEvaluator createEvaluator() throws JRException
- Throws:
JRException
-
isReorderBandElements
protected boolean isReorderBandElements()
-
initSubreportFiller
protected void initSubreportFiller(DatasetExpressionEvaluator evaluator) throws JRException
- Throws:
JRException
-
createFillerParent
protected FillerSubreportParent createFillerParent(DatasetExpressionEvaluator evaluator) throws JRException
- Throws:
JRException
-
getParameterValues
public static Map<String,Object> getParameterValues(BaseReportFiller filler, JRExpression parametersMapExpression, JRDatasetParameter[] subreportParameters, byte evaluation, boolean ignoreNullExpressions, boolean removeResourceBundle, boolean removeFormatFactory) throws JRException
Utility method used for constructing a parameter values map for subreports, sub datasets and crosstabs.- Parameters:
filler
- report fillerparametersMapExpression
- expression that yields bulk parameter values mapsubreportParameters
- list of individual parameter valuesevaluation
- evaluation typeignoreNullExpressions
- whether to ignore individual parameter value expressionsremoveResourceBundle
- whether to remove theREPORT_RESOURCE_BUNDLE
value from the bulk values map- Returns:
- the parameter values map
- Throws:
JRException
-
getParameterValues
public static Map<String,Object> getParameterValues(BaseReportFiller filler, JRFillExpressionEvaluator expressionEvaluator, JRExpression parametersMapExpression, JRDatasetParameter[] subreportParameters, byte evaluation, boolean ignoreNullExpressions, boolean removeResourceBundle, boolean removeFormatFactory) throws JRException
Utility method used for constructing a parameter values map for subreports, sub datasets and crosstabs.- Parameters:
filler
- report fillerexpressionEvaluator
- expression evaluatorparametersMapExpression
- expression that yields bulk parameter values mapsubreportParameters
- list of individual parameter valuesevaluation
- evaluation typeignoreNullExpressions
- whether to ignore individual parameter value expressionsremoveResourceBundle
- whether to remove theREPORT_RESOURCE_BUNDLE
value from the bulk values map- Returns:
- the parameter values map
- Throws:
JRException
-
fillSubreport
@continuable protected void fillSubreport() throws JRException
- Throws:
JRException
-
prepare
protected boolean prepare(int availableHeight, boolean isOverflow) throws JRException
- Overrides:
prepare
in classJRFillElement
- Throws:
JRException
-
rewind
public void rewind() throws JRException
- Specified by:
rewind
in classJRFillElement
- Throws:
JRException
-
cancelSubreportFill
protected void cancelSubreportFill() throws JRException
- Throws:
JRException
-
fill
protected JRPrintElement fill()
- Specified by:
fill
in classJRFillElement
-
generateRectangleOption
protected String generateRectangleOption()
-
collectExpressions
public void collectExpressions(JRExpressionCollector collector)
- Specified by:
collectExpressions
in interfaceJRElement
-
visit
public void visit(JRVisitor visitor)
- Specified by:
visit
in interfaceJRVisitable
-
getReturnValues
public JRSubreportReturnValue[] getReturnValues()
Description copied from interface:JRSubreport
Returns the list of subreport copied values.- Specified by:
getReturnValues
in interfaceJRSubreport
- Returns:
- the list of subreport copied values.
-
validateReport
protected void validateReport() throws JRException
- Throws:
JRException
-
verifyBandHeights
protected void verifyBandHeights() throws JRException
- Throws:
JRException
-
resolveElement
protected void resolveElement(JRPrintElement element, byte evaluation)
Description copied from class:JRFillElement
Resolves an element.- Specified by:
resolveElement
in classJRFillElement
- Parameters:
element
- the elementevaluation
- the evaluation type
-
getUsingCache
public Boolean getUsingCache()
Description copied from interface:JRSubreport
Indicates if the engine is loading the current subreport from cache. Implementations of this method return the actual value for the internal flag that was explicitly set on this subreport.- Specified by:
getUsingCache
in interfaceJRSubreport
- Returns:
- Boolean.TRUE if the subreport should be loaded from cache, Boolean.FALSE otherwise or null in case the flag was never explicitly set on this subreport element
-
setUsingCache
public void setUsingCache(Boolean isUsingCache)
Description copied from interface:JRSubreport
Specifies if the engine should be loading the current subreport from cache. If set to Boolean.TRUE, the reporting engine will try to recognize previously loaded subreports using their specified source. For example, it will recognize an subreport if the subreport source is a file name that it has already loaded, or if it is the same URL.If set to null, the engine will rely on some default value which depends on the type of the subreport expression. The cache is turned on by default only for subreports that have java.lang.String objects in their expressions.
- Specified by:
setUsingCache
in interfaceJRSubreport
-
createClone
public JRFillCloneable createClone(JRFillCloneFactory factory)
Description copied from interface:JRFillCloneable
Creates a working clone of itself.- Specified by:
createClone
in interfaceJRFillCloneable
- Parameters:
factory
- the clone factory to use while creating the clone- Returns:
- a working clone of itself
-
getRunnerFactory
protected JRSubreportRunnerFactory getRunnerFactory() throws JRException
- Throws:
JRException
-
getContentsStretchHeight
protected int getContentsStretchHeight()
-
getReportLocation
protected String getReportLocation()
-
getReportName
protected String getReportName()
-
isSplitTypePreventInhibited
protected boolean isSplitTypePreventInhibited(boolean isTopLevelCall)
-
-