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 Details

    • EXCEPTION_MESSAGE_KEY_PROPERTY_NOT_SET

      public static final String EXCEPTION_MESSAGE_KEY_PROPERTY_NOT_SET
      See Also:
    • EXCEPTION_MESSAGE_KEY_NO_REWINDABLE_DATA_SOURCE

      public static final String EXCEPTION_MESSAGE_KEY_NO_REWINDABLE_DATA_SOURCE
      See Also:
    • EXCEPTION_MESSAGE_KEY_UNSUPPORTED_SECTION_TYPE

      public static final String EXCEPTION_MESSAGE_KEY_UNSUPPORTED_SECTION_TYPE
      See Also:
    • EXCEPTION_MESSAGE_KEY_UNKNOWN_SOURCE_CLASS

      public static final String EXCEPTION_MESSAGE_KEY_UNKNOWN_SOURCE_CLASS
      See Also:
    • 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 is always, 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:
    • SUBREPORT_GENERATE_RECTANGLE_ALWAYS

      public static final String SUBREPORT_GENERATE_RECTANGLE_ALWAYS
      See Also:
    • subreportFiller

      protected JRBaseFiller subreportFiller
    • subFillerParent

      protected FillerSubreportParent subFillerParent
    • printPage

      protected JRPrintPage printPage
  • Constructor Details

  • Method Details

    • setBand

      protected void setBand(JRFillBand band)
      Overrides:
      setBand in class JRFillElement
    • 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 interface JRCommonElement
      Overrides:
      getMode in class JRFillElement
    • 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 interface JRSubreport
      Returns:
      whether the subreport element will consume the entire space down to the bottom of the page
      See Also:
    • 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 interface JRSubreport
      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 interface JRSubreport
    • setOverflowType

      public void setOverflowType(OverflowType overflowType)
      Specified by:
      setOverflowType in interface JRSubreport
    • getParametersMapExpression

      public JRExpression getParametersMapExpression()
      Specified by:
      getParametersMapExpression in interface JRSubreport
    • getParameters

      public JRSubreportParameter[] getParameters()
      Specified by:
      getParameters in interface JRSubreport
    • getConnectionExpression

      public JRExpression getConnectionExpression()
      Specified by:
      getConnectionExpression in interface JRSubreport
    • getDataSourceExpression

      public JRExpression getDataSourceExpression()
      Specified by:
      getDataSourceExpression in interface JRSubreport
    • getExpression

      public JRExpression getExpression()
      Specified by:
      getExpression in interface JRSubreport
    • getJRTemplateRectangle

      protected JRTemplateRectangle getJRTemplateRectangle()
    • createElementTemplate

      protected JRTemplateElement createElementTemplate()
      Specified by:
      createElementTemplate in class JRFillElement
    • 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 class JRFillElement
      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 filler
      parametersMapExpression - expression that yields bulk parameter values map
      subreportParameters - list of individual parameter values
      evaluation - evaluation type
      ignoreNullExpressions - whether to ignore individual parameter value expressions
      removeResourceBundle - whether to remove the REPORT_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 filler
      expressionEvaluator - expression evaluator
      parametersMapExpression - expression that yields bulk parameter values map
      subreportParameters - list of individual parameter values
      evaluation - evaluation type
      ignoreNullExpressions - whether to ignore individual parameter value expressions
      removeResourceBundle - whether to remove the REPORT_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, boolean isOverflowAllowed) throws JRException
      Overrides:
      prepare in class JRFillElement
      Throws:
      JRException
    • rewind

      public void rewind() throws JRException
      Specified by:
      rewind in class JRFillElement
      Throws:
      JRException
    • cancelSubreportFill

      protected void cancelSubreportFill() throws JRException
      Throws:
      JRException
    • fill

      protected JRPrintElement fill()
      Specified by:
      fill in class JRFillElement
    • generateRectangleOption

      protected String generateRectangleOption()
    • collectExpressions

      public void collectExpressions(JRExpressionCollector collector)
      Specified by:
      collectExpressions in interface JRElement
    • visit

      public void visit(JRVisitor visitor)
      Specified by:
      visit in interface JRVisitable
    • getReturnValues

      public JRSubreportReturnValue[] getReturnValues()
      Description copied from interface: JRSubreport
      Returns the list of subreport copied values.
      Specified by:
      getReturnValues in interface JRSubreport
      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 class JRFillElement
      Parameters:
      element - the element
      evaluation - 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 interface JRSubreport
      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 interface JRSubreport
    • createClone

      public JRFillCloneable createClone(JRFillCloneFactory factory)
      Description copied from interface: JRFillCloneable
      Creates a working clone of itself.
      Specified by:
      createClone in interface JRFillCloneable
      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()
    • registerReportStyles

      protected void registerReportStyles(List<JRStyle> styles)
    • getReportName

      protected String getReportName()
    • isSplitTypePreventInhibited

      protected boolean isSplitTypePreventInhibited(boolean isTopLevelCall)