Class JRAbstractCompiler

java.lang.Object
net.sf.jasperreports.engine.design.JRAbstractCompiler
All Implemented Interfaces:
JRCompiler
Direct Known Subclasses:
JavaScriptCompilerBase, JRAbstractJavaCompiler

public abstract class JRAbstractCompiler extends Object implements JRCompiler
Base class for report compilers.
Author:
Lucian Chirita (lucianc@users.sourceforge.net)
  • Field Details

    • EXCEPTION_MESSAGE_KEY_CROSSTAB_ID_NOT_FOUND

      public static final String EXCEPTION_MESSAGE_KEY_CROSSTAB_ID_NOT_FOUND
      See Also:
    • EXCEPTION_MESSAGE_KEY_DESIGN_COMPILE_ERROR

      public static final String EXCEPTION_MESSAGE_KEY_DESIGN_COMPILE_ERROR
      See Also:
    • EXCEPTION_MESSAGE_KEY_LANGUAGE_NOT_SUPPORTED

      public static final String EXCEPTION_MESSAGE_KEY_LANGUAGE_NOT_SUPPORTED
      See Also:
    • EXCEPTION_MESSAGE_KEY_REPORT_EXPRESSIONS_COMPILE_ERROR

      public static final String EXCEPTION_MESSAGE_KEY_REPORT_EXPRESSIONS_COMPILE_ERROR
      See Also:
    • EXCEPTION_MESSAGE_KEY_TEMP_DIR_NOT_FOUND

      public static final String EXCEPTION_MESSAGE_KEY_TEMP_DIR_NOT_FOUND
      See Also:
    • jasperReportsContext

      protected final JasperReportsContext jasperReportsContext
    • reportClassFilter

      protected ReportClassFilter reportClassFilter
  • Constructor Details

    • JRAbstractCompiler

      protected JRAbstractCompiler(JasperReportsContext jasperReportsContext, boolean needsSourceFiles)
      Constructor.
      Parameters:
      needsSourceFiles - whether the compiler needs source files or is able to do in memory compilation

      If true, the generated code is saved in source files to be used by the compiler.

  • Method Details

    • getUnitName

      public static String getUnitName(JasperReport report, JRDataset dataset)
      Returns the name of the expression evaluator unit for a dataset of a report.
      Parameters:
      report - the report
      dataset - the dataset
      Returns:
      the generated expression evaluator unit name
    • getUnitName

      protected static String getUnitName(JRReport report, JRDataset dataset, String nameSuffix)
    • getUnitName

      public static String getUnitName(JasperReport report, JRCrosstab crosstab)
      Returns the name of the expression evaluator unit for a crosstab of a report.
      Parameters:
      report - the report
      crosstab - the crosstab
      Returns:
      the generated expression evaluator unit name
    • getUnitName

      protected static String getUnitName(JRReport report, JRCrosstab crosstab, JRExpressionCollector expressionCollector, String nameSuffix)
    • getUnitName

      protected static String getUnitName(JRReport report, int crosstabId, String nameSuffix)
    • compileReport

      public final JasperReport compileReport(JasperDesign jasperDesign) throws JRException
      Description copied from interface: JRCompiler
      Compiles a report design.

      The compilation consists of verification of the design, generation of expression evaluators and construction of a serializable read-only version of the report.

      A report compiler should usually extend JRAbstractCompiler.

      Specified by:
      compileReport in interface JRCompiler
      Parameters:
      jasperDesign - the report design
      Returns:
      the compiled report
      Throws:
      JRException
    • createCompileData

      protected ReportExpressionEvaluationData createCompileData(JRCompilationUnit unit)
    • getCompilerClass

      protected String getCompilerClass()
    • getSourceFile

      protected File getSourceFile(File saveSourceDir, String unitName, JRCompilationSourceCode sourceCode)
    • loadEvaluator

      public JREvaluator loadEvaluator(JasperReport jasperReport) throws JRException
      Description copied from interface: JRCompiler
      Loads the evaluator for a report's main dataset.
      Specified by:
      loadEvaluator in interface JRCompiler
      Parameters:
      jasperReport - the report
      Returns:
      the evaluator for the report's main dataset
      Throws:
      JRException
    • loadEvaluator

      public JREvaluator loadEvaluator(JasperReport jasperReport, JRDataset dataset) throws JRException
      Description copied from interface: JRCompiler
      Loads a expression evaluator class for a dataset of a report.
      Specified by:
      loadEvaluator in interface JRCompiler
      Parameters:
      jasperReport - the report
      dataset - the dataset
      Returns:
      an instance of the dataset evaluator class
      Throws:
      JRException
    • loadEvaluator

      public JREvaluator loadEvaluator(JasperReport jasperReport, JRCrosstab crosstab) throws JRException
      Description copied from interface: JRCompiler
      Loads a expression evaluator class for a crosstab of a report.
      Specified by:
      loadEvaluator in interface JRCompiler
      Parameters:
      jasperReport - the report
      crosstab - the crosstab
      Returns:
      an instance of the dataset evaluator class
      Throws:
      JRException
    • createEvaluator

      protected JREvaluator createEvaluator(Serializable compileData, String unitName) throws JRException
      Throws:
      JRException
    • effectiveDirectValueFilter

      protected DirectExpressionValueFilter effectiveDirectValueFilter()
    • directValueFilter

      protected DirectExpressionValueFilter directValueFilter()
    • loadEvaluator

      protected abstract JREvaluator loadEvaluator(Serializable compileData, String unitName) throws JRException
      Creates an expression evaluator instance from data saved when the report was compiled.
      Parameters:
      compileData - the data saved when the report was compiled
      unitName - the evaluator unit name
      Returns:
      an expression evaluator instance
      Throws:
      JRException
    • checkLanguage

      protected abstract void checkLanguage(String language) throws JRException
      Checks that the report language is supported by the compiler.
      Parameters:
      language - the report language
      Throws:
      JRException
    • generateSourceCode

      protected abstract JRCompilationSourceCode generateSourceCode(JRSourceCompileTask sourceTask) throws JRException
      Generates expression evaluator code.
      Parameters:
      sourceTask - the source code generation information
      Returns:
      generated expression evaluator code
      Throws:
      JRException
    • compileUnits

      protected abstract String compileUnits(JRCompilationUnit[] units, String classpath, File tempDirFile) throws JRException
      Compiles several expression evaluator units.

      The result of the compilation should be set by calling setCompileData on all compile units.

      Parameters:
      units - the compilation units
      classpath - the compilation classpath
      tempDirFile - temporary directory
      Returns:
      a string containing compilation errors, or null if the compilation was successfull
      Throws:
      JRException
    • getSourceFileName

      protected abstract String getSourceFileName(String unitName)
      Returns the name of the source file where generated source code for an unit is saved.

      If the compiler needs source files for compilation or COMPILER_KEEP_JAVA_FILE is set, the generated source will be saved in a file having the name returned by this method.

      Parameters:
      unitName - the unit name
      Returns:
      the source file name