net.sf.jasperreports.engine.JasperFillManager Maven / Gradle / Ivy
/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see .
*/
package net.sf.jasperreports.engine;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.util.Arrays;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import net.sf.jasperreports.annotations.properties.Property;
import net.sf.jasperreports.annotations.properties.PropertyScope;
import net.sf.jasperreports.engine.fill.JRFiller;
import net.sf.jasperreports.engine.fill.JasperReportSource;
import net.sf.jasperreports.engine.fill.SimpleJasperReportSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.util.JRSaver;
import net.sf.jasperreports.properties.PropertyConstants;
import net.sf.jasperreports.repo.RepositoryResourceContext;
import net.sf.jasperreports.repo.RepositoryUtil;
import net.sf.jasperreports.repo.ResourceInfo;
import net.sf.jasperreports.repo.SimpleRepositoryResourceContext;
/**
* Facade class for filling compiled report designs with data from report data sources,
* in order to produce page-oriented documents, ready-to-print.
*
* It exposes a variety of methods that receive a report template in the form of an object, file,
* or input stream, and also produces a document in various output forms (object, file, or
* output stream).
*
* All methods receive a Map object that should contain the values for the report parameters.
* These values are retrieved by the engine using the corresponding report parameter name as the key.
*
* There are two types of method signatures with regards to the data source
* provided for filling the report:
*
* - Methods that receive an instance of the {@link net.sf.jasperreports.engine.JRDataSource} interface
* and use it directly for retrieving report data;
*
- Methods that receive an instance of the
java.sql.Connection
interface and retrieve
* the report data by executing the report internal SQL query through this JDBC connection and wrapping
* the returned java.sql.ResultSet
object inside a {@link net.sf.jasperreports.engine.JRResultSetDataSource}
* instance.
*
*
* @see net.sf.jasperreports.engine.JasperReport
* @see net.sf.jasperreports.engine.JRDataSource
* @see net.sf.jasperreports.engine.fill.JRFiller
* @see net.sf.jasperreports.engine.JasperPrint
* @author Teodor Danciu ([email protected])
*/
public final class JasperFillManager
{
private static final Log log = LogFactory.getLog(JasperFillManager.class);
/**
* Property that determines whether resource paths in subreports, style templates and data adapters
* should be interpreted as relative to the master report location.
*
* Starting with version 6.6.0, relative paths in subreports, style templates and data adapters are
* resolved as relative to the resource that contains them.
* Prior to version 6.6.0, relative paths in subreports, style templates and data adapters were
* resolved as relative to the master report resource.
* This property can be set to true
to restore the pre 6.6.0 functionality.
*
* The default value of the property is false
.
*
*
* @deprecated The property should only be set when upgrading from a version older than 6.6.0 with a repository
* that relied on the fact that paths were relative to the master report.
* The property might be removed at some point in the future.
*/
@Property(
category = PropertyConstants.CATEGORY_REPOSITORY,
defaultValue = PropertyConstants.BOOLEAN_FALSE,
scopes = {PropertyScope.CONTEXT, PropertyScope.REPORT},
sinceVersion = PropertyConstants.VERSION_6_6_0,
valueType = Boolean.class
)
@Deprecated
public static final String PROPERTY_LEGACY_RELATIVE_PATH_ENABLED = JRPropertiesUtil.PROPERTY_PREFIX
+ "legacy.relative.path.enabled";
private final JasperReportsContext jasperReportsContext;
/**
*
*/
private JasperFillManager(JasperReportsContext jasperReportsContext)
{
this.jasperReportsContext = jasperReportsContext;
}
/**
*
*/
private static JasperFillManager getDefaultInstance()
{
return new JasperFillManager(DefaultJasperReportsContext.getInstance());
}
/**
*
*/
public static JasperFillManager getInstance(JasperReportsContext jasperReportsContext)
{
return new JasperFillManager(jasperReportsContext);
}
/**
* Fills the compiled report design loaded from the specified file.
* The result of this operation is another file that will contain the serialized
* {@link JasperPrint} object representing the generated document,
* having the same name as the report design as declared in the source file,
* plus the *.jrprint
extension, located in the same directory as the source file.
*
* @param sourceFileName source file containing the compiled report design
* @param params report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
*/
public String fillToFile(
String sourceFileName,
Map params,
Connection connection
) throws JRException
{
File sourceFile = new File(sourceFileName);
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile);
File destFile = new File(sourceFile.getParent(), jasperReport.getName() + ".jrprint");
String destFileName = destFile.toString();
JasperPrint jasperPrint = JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile, jasperReport),
params, connection);
JRSaver.saveObject(jasperPrint, destFileName);
return destFileName;
}
/**
* Fills the compiled report design loaded from the specified file.
* The result of this operation is another file that will contain the serialized
* {@link JasperPrint} object representing the generated document,
* having the same name as the report design as declared in the source file,
* plus the *.jrprint
extension, located in the same directory as the source file.
*
* @param sourceFileName source file containing the compiled report design
* @param params report parameters map
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public String fillToFile(
String sourceFileName,
Map params
) throws JRException
{
File sourceFile = new File(sourceFileName);
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile);
File destFile = new File(sourceFile.getParent(), jasperReport.getName() + ".jrprint");
String destFileName = destFile.toString();
JasperPrint jasperPrint = JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile, jasperReport),
params);
JRSaver.saveObject(jasperPrint, destFileName);
return destFileName;
}
/**
* Fills the compiled report design loaded from the file received as the first parameter
* and places the result in the file specified by the second parameter.
*
* @param sourceFileName source file containing the compiled report design
* @param destFileName file name to place the generated report into
* @param params report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
*/
public void fillToFile(
String sourceFileName,
String destFileName,
Map params,
Connection connection
) throws JRException
{
File sourceFile = new File(sourceFileName);
JasperPrint jasperPrint = JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile),
params, connection);
JRSaver.saveObject(jasperPrint, destFileName);
}
/**
* Fills the compiled report design loaded from the file received as the first parameter
* and places the result in the file specified by the second parameter.
*
* @param sourceFileName source file containing the compiled report design
* @param destFileName file name to place the generated report into
* @param params report parameters map
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public void fillToFile(
String sourceFileName,
String destFileName,
Map params
) throws JRException
{
File sourceFile = new File(sourceFileName);
JasperPrint jasperPrint = JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile),
params);
JRSaver.saveObject(jasperPrint, destFileName);
}
/**
* Fills the compiled report design received as the first parameter
* and places the result in the file specified by the second parameter.
*
* @param jasperReport compiled report design object to use for filling
* @param destFileName file name to place the generated report into
* @param parameters report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
*/
public void fillToFile(
JasperReport jasperReport,
String destFileName,
Map parameters,
Connection connection
) throws JRException
{
JasperPrint jasperPrint = fill(jasperReport, parameters, connection);
JRSaver.saveObject(jasperPrint, destFileName);
}
/**
* Fills the compiled report design received as the first parameter
* and places the result in the file specified by the second parameter.
*
* @param jasperReport compiled report design object to use for filling
* @param destFileName file name to place the generated report into
* @param parameters report parameters map
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public void fillToFile(
JasperReport jasperReport,
String destFileName,
Map parameters
) throws JRException
{
JasperPrint jasperPrint = fill(jasperReport, parameters);
JRSaver.saveObject(jasperPrint, destFileName);
}
/**
* Fills the compiled report design loaded from the specified file and returns
* the generated report object.
*
* @param sourceFileName source file containing the compiled report design
* @param params report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
* @return generated report object
*/
public JasperPrint fill(
String sourceFileName,
Map params,
Connection connection
) throws JRException
{
File sourceFile = new File(sourceFileName);
return JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile),
params, connection);
}
/**
* Fills the compiled report design loaded from the specified file and returns
* the generated report object.
*
* @param reportLocation the repository location of the compiled report
* @param params report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
* @return generated report object
*/
public JasperPrint fillFromRepo(
String reportLocation,
Map params,
Connection connection
) throws JRException
{
return JRFiller.fill(jasperReportsContext,
getReportSource(reportLocation),
params, connection);
}
/**
* Fills the compiled report design loaded from the specified file and returns
* the generated report object.
*
* @param sourceFileName source file containing the compiled report design
* @param params report parameters map
* @return generated report object
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public JasperPrint fill(
String sourceFileName,
Map params
) throws JRException
{
File sourceFile = new File(sourceFileName);
return JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile),
params);
}
/**
* Fills the compiled report design loaded from the specified file and returns
* the generated report object.
*
* @param reportLocation the repository location of the compiled report
* @param params report parameters map
* @return generated report object
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public JasperPrint fillFromRepo(
String reportLocation,
Map params
) throws JRException
{
return JRFiller.fill(jasperReportsContext,
getReportSource(reportLocation),
params);
}
/**
* Fills the compiled report design loaded from the supplied input stream and writes
* the generated report object to the output stream specified by the second parameter.
*
* @param inputStream input stream to read the compiled report design object from
* @param outputStream output stream to write the generated report object to
* @param parameters report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
*/
public void fillToStream(
InputStream inputStream,
OutputStream outputStream,
Map parameters,
Connection connection
) throws JRException
{
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream);
fillToStream(jasperReport, outputStream, parameters, connection);
}
/**
* Fills the compiled report design loaded from the supplied input stream and writes
* the generated report object to the output stream specified by the second parameter.
*
* @param inputStream input stream to read the compiled report design object from
* @param outputStream output stream to write the generated report object to
* @param parameters report parameters map
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public void fillToStream(
InputStream inputStream,
OutputStream outputStream,
Map parameters
) throws JRException
{
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream);
fillToStream(jasperReport, outputStream, parameters);
}
/**
* Fills the compiled report design supplied as the first parameter and writes
* the generated report object to the output stream specified by the second parameter.
*
* @param jasperReport compiled report design object to use for filling
* @param outputStream output stream to write the generated report object to
* @param parameters report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
*/
public void fillToStream(
JasperReport jasperReport,
OutputStream outputStream,
Map parameters,
Connection connection
) throws JRException
{
JasperPrint jasperPrint = fill(jasperReport, parameters, connection);
JRSaver.saveObject(jasperPrint, outputStream);
}
/**
* Fills the compiled report design supplied as the first parameter and writes
* the generated report object to the output stream specified by the second parameter.
*
* @param jasperReport compiled report design object to use for filling
* @param outputStream output stream to write the generated report object to
* @param parameters report parameters map
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public void fillToStream(
JasperReport jasperReport,
OutputStream outputStream,
Map parameters
) throws JRException
{
JasperPrint jasperPrint = fill(jasperReport, parameters);
JRSaver.saveObject(jasperPrint, outputStream);
}
/**
* Fills the compiled report design loaded from the supplied input stream and returns
* the generated report object.
*
* @param inputStream input stream to read the compiled report design object from
* @param parameters report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
* @return generated report object
*/
public JasperPrint fill(
InputStream inputStream,
Map parameters,
Connection connection
) throws JRException
{
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream);
return fill(jasperReport, parameters, connection);
}
/**
* Fills the compiled report design loaded from the supplied input stream and returns
* the generated report object.
*
* @param inputStream input stream to read the compiled report design object from
* @param parameters report parameters map
* @return generated report object
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public JasperPrint fill(
InputStream inputStream,
Map parameters
) throws JRException
{
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream);
return fill(jasperReport, parameters);
}
/**
* Fills the compiled report design supplied as the first parameter and returns
* the generated report object.
*
* @param jasperReport compiled report design object to use for filling
* @param parameters report parameters map
* @param connection JDBC connection object to use for executing the report internal SQL query
* @return generated report object
*/
public JasperPrint fill(
JasperReport jasperReport,
Map parameters,
Connection connection
) throws JRException
{
return JRFiller.fill(jasperReportsContext, jasperReport, parameters, connection);
}
/**
* Fills the compiled report design supplied as the first parameter and returns
* the generated report object.
*
* @param jasperReport compiled report design object to use for filling
* @param parameters report parameters map
* @return generated report object
* @see JRFiller#fill(JasperReportsContext, JasperReport, Map)
*/
public JasperPrint fill(
JasperReport jasperReport,
Map parameters
) throws JRException
{
return JRFiller.fill(jasperReportsContext, jasperReport, parameters);
}
/**
* Fills the compiled report design loaded from the specified file.
* The result of this operation is another file that will contain the serialized
* {@link JasperPrint} object representing the generated document,
* having the same name as the report design as declared in the source file,
* plus the *.jrprint
extension, located in the same directory as the source file.
*
* @param sourceFileName source file containing the compiled report design
* @param params report parameters map
* @param dataSource data source object
*/
public String fillToFile(
String sourceFileName,
Map params,
JRDataSource dataSource
) throws JRException
{
File sourceFile = new File(sourceFileName);
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(sourceFile);
File destFile = new File(sourceFile.getParent(), jasperReport.getName() + ".jrprint");
String destFileName = destFile.toString();
JasperPrint jasperPrint = JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile, jasperReport),
params, dataSource);
JRSaver.saveObject(jasperPrint, destFileName);
return destFileName;
}
/**
* Fills the compiled report design loaded from the file received as the first parameter
* and places the result in the file specified by the second parameter.
*
* @param sourceFileName source file containing the compiled report design
* @param destFileName file name to place the generated report into
* @param params report parameters map
* @param dataSource data source object
*/
public void fillToFile(
String sourceFileName,
String destFileName,
Map params,
JRDataSource dataSource
) throws JRException
{
File sourceFile = new File(sourceFileName);
JasperPrint jasperPrint = JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile),
params, dataSource);
JRSaver.saveObject(jasperPrint, destFileName);
}
/**
* Fills the compiled report design received as the first parameter
* and places the result in the file specified by the second parameter.
*
* @param jasperReport compiled report design object to use for filling
* @param destFileName file name to place the generated report into
* @param parameters report parameters map
* @param dataSource data source object
*/
public void fillToFile(
JasperReport jasperReport,
String destFileName,
Map parameters,
JRDataSource dataSource
) throws JRException
{
JasperPrint jasperPrint = fill(jasperReport, parameters, dataSource);
JRSaver.saveObject(jasperPrint, destFileName);
}
/**
* Fills the compiled report design loaded from the specified file and returns
* the generated report object.
*
* @param sourceFileName source file containing the compiled report design
* @param params report parameters map
* @param dataSource data source object
* @return generated report object
*/
public JasperPrint fill(
String sourceFileName,
Map params,
JRDataSource dataSource
) throws JRException
{
File sourceFile = new File(sourceFileName);
return JRFiller.fill(jasperReportsContext,
getReportSource(sourceFile),
params, dataSource);
}
/**
* Fills the compiled report design loaded from the specified file and returns
* the generated report object.
*
* @param reportLocation the repository location of the compiled report
* @param params report parameters map
* @param dataSource data source object
* @return generated report object
*/
public JasperPrint fillFromRepo(
String reportLocation,
Map params,
JRDataSource dataSource
) throws JRException
{
return JRFiller.fill(jasperReportsContext,
getReportSource(reportLocation),
params, dataSource);
}
/**
* Fills the compiled report design loaded from the supplied input stream and writes
* the generated report object to the output stream specified by the second parameter.
*
* @param inputStream input stream to read the compiled report design object from
* @param outputStream output stream to write the generated report object to
* @param parameters report parameters map
* @param dataSource data source object
*/
public void fillToStream(
InputStream inputStream,
OutputStream outputStream,
Map parameters,
JRDataSource dataSource
) throws JRException
{
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream);
fillToStream(jasperReport, outputStream, parameters, dataSource);
}
/**
* Fills the compiled report design supplied as the first parameter and writes
* the generated report object to the output stream specified by the second parameter.
*
* @param jasperReport compiled report design object to use for filling
* @param outputStream output stream to write the generated report object to
* @param parameters report parameters map
* @param dataSource data source object
*/
public void fillToStream(
JasperReport jasperReport,
OutputStream outputStream,
Map parameters,
JRDataSource dataSource
) throws JRException
{
JasperPrint jasperPrint = fill(jasperReport, parameters, dataSource);
JRSaver.saveObject(jasperPrint, outputStream);
}
/**
* Fills the compiled report design loaded from the supplied input stream and returns
* the generated report object.
*
* @param inputStream input stream to read the compiled report design object from
* @param parameters report parameters map
* @param dataSource data source object
* @return generated report object
*/
public JasperPrint fill(
InputStream inputStream,
Map parameters,
JRDataSource dataSource
) throws JRException
{
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(inputStream);
return fill(jasperReport, parameters, dataSource);
}
/**
* Fills the compiled report design supplied as the first parameter and returns
* the generated report object.
*
* @param jasperReport compiled report design object to use for filling
* @param parameters report parameters map
* @param dataSource data source object
* @return generated report object
*/
public JasperPrint fill(
JasperReport jasperReport,
Map parameters,
JRDataSource dataSource
) throws JRException
{
return JRFiller.fill(jasperReportsContext, jasperReport, parameters, dataSource);
}
/**
* @see #fillToFile(String, Map, Connection)
*/
public static String fillReportToFile(
String sourceFileName,
Map params,
Connection connection
) throws JRException
{
return getDefaultInstance().fillToFile(sourceFileName, params, connection);
}
/**
* @see #fillToFile(String, Map)
*/
public static String fillReportToFile(
String sourceFileName,
Map params
) throws JRException
{
return getDefaultInstance().fillToFile(sourceFileName, params);
}
/**
* @see #fillToFile(String, String, Map, Connection)
*/
public static void fillReportToFile(
String sourceFileName,
String destFileName,
Map params,
Connection connection
) throws JRException
{
getDefaultInstance().fillToFile(sourceFileName, destFileName, params, connection);
}
/**
* @see #fillToFile(String, String, Map)
*/
public static void fillReportToFile(
String sourceFileName,
String destFileName,
Map params
) throws JRException
{
getDefaultInstance().fillToFile(sourceFileName, destFileName, params);
}
/**
* @see #fillToFile(JasperReport, String, Map, Connection)
*/
public static void fillReportToFile(
JasperReport jasperReport,
String destFileName,
Map parameters,
Connection connection
) throws JRException
{
getDefaultInstance().fillToFile(jasperReport, destFileName, parameters, connection);
}
/**
* @see #fillToFile(JasperReport, String, Map)
*/
public static void fillReportToFile(
JasperReport jasperReport,
String destFileName,
Map parameters
) throws JRException
{
getDefaultInstance().fillToFile(jasperReport, destFileName, parameters);
}
/**
* @see #fill(String, Map, Connection)
*/
public static JasperPrint fillReport(
String sourceFileName,
Map params,
Connection connection
) throws JRException
{
return getDefaultInstance().fill(sourceFileName, params, connection);
}
/**
* @see #fill(String, Map)
*/
public static JasperPrint fillReport(
String sourceFileName,
Map params
) throws JRException
{
return getDefaultInstance().fill(sourceFileName, params);
}
/**
* @see #fillToStream(InputStream, OutputStream, Map, Connection)
*/
public static void fillReportToStream(
InputStream inputStream,
OutputStream outputStream,
Map parameters,
Connection connection
) throws JRException
{
getDefaultInstance().fillToStream(inputStream, outputStream, parameters, connection);
}
/**
* @see #fillToStream(InputStream, OutputStream, Map)
*/
public static void fillReportToStream(
InputStream inputStream,
OutputStream outputStream,
Map parameters
) throws JRException
{
getDefaultInstance().fillToStream(inputStream, outputStream, parameters);
}
/**
* @see #fillToStream(JasperReport, OutputStream, Map, Connection)
*/
public static void fillReportToStream(
JasperReport jasperReport,
OutputStream outputStream,
Map parameters,
Connection connection
) throws JRException
{
getDefaultInstance().fillToStream(jasperReport, outputStream, parameters, connection);
}
/**
* @see #fillToStream(JasperReport, OutputStream, Map)
*/
public static void fillReportToStream(
JasperReport jasperReport,
OutputStream outputStream,
Map parameters
) throws JRException
{
getDefaultInstance().fillToStream(jasperReport, outputStream, parameters);
}
/**
* @see #fill(InputStream, Map, Connection)
*/
public static JasperPrint fillReport(
InputStream inputStream,
Map parameters,
Connection connection
) throws JRException
{
return getDefaultInstance().fill(inputStream, parameters, connection);
}
/**
* @see #fill(InputStream, Map)
*/
public static JasperPrint fillReport(
InputStream inputStream,
Map parameters
) throws JRException
{
return getDefaultInstance().fill(inputStream, parameters);
}
/**
* @see #fill(JasperReport, Map, Connection)
*/
public static JasperPrint fillReport(
JasperReport jasperReport,
Map parameters,
Connection connection
) throws JRException
{
return getDefaultInstance().fill(jasperReport, parameters, connection);
}
/**
* @see #fill(JasperReport, Map)
*/
public static JasperPrint fillReport(
JasperReport jasperReport,
Map parameters
) throws JRException
{
return getDefaultInstance().fill(jasperReport, parameters);
}
/**
* @see #fillToFile(String, Map, JRDataSource)
*/
public static String fillReportToFile(
String sourceFileName,
Map params,
JRDataSource dataSource
) throws JRException
{
return getDefaultInstance().fillToFile(sourceFileName, params, dataSource);
}
/**
* @see #fillToFile(String, String, Map, JRDataSource)
*/
public static void fillReportToFile(
String sourceFileName,
String destFileName,
Map params,
JRDataSource dataSource
) throws JRException
{
getDefaultInstance().fillToFile(sourceFileName, destFileName, params, dataSource);
}
/**
* @see #fillToFile(JasperReport, String, Map, JRDataSource)
*/
public static void fillReportToFile(
JasperReport jasperReport,
String destFileName,
Map parameters,
JRDataSource dataSource
) throws JRException
{
getDefaultInstance().fillToFile(jasperReport, destFileName, parameters, dataSource);
}
/**
* @see #fill(String, Map, JRDataSource)
*/
public static JasperPrint fillReport(
String sourceFileName,
Map params,
JRDataSource dataSource
) throws JRException
{
return getDefaultInstance().fill(sourceFileName, params, dataSource);
}
/**
* @see #fillToStream(InputStream, OutputStream, Map, JRDataSource)
*/
public static void fillReportToStream(
InputStream inputStream,
OutputStream outputStream,
Map parameters,
JRDataSource dataSource
) throws JRException
{
getDefaultInstance().fillToStream(inputStream, outputStream, parameters, dataSource);
}
/**
* @see #fillToStream(JasperReport, OutputStream, Map, JRDataSource)
*/
public static void fillReportToStream(
JasperReport jasperReport,
OutputStream outputStream,
Map parameters,
JRDataSource dataSource
) throws JRException
{
getDefaultInstance().fillToStream(jasperReport, outputStream, parameters, dataSource);
}
/**
* @see #fill(InputStream, Map, JRDataSource)
*/
public static JasperPrint fillReport(
InputStream inputStream,
Map parameters,
JRDataSource dataSource
) throws JRException
{
return getDefaultInstance().fill(inputStream, parameters, dataSource);
}
/**
* @see #fill(JasperReport, Map, JRDataSource)
*/
public static JasperPrint fillReport(
JasperReport jasperReport,
Map parameters,
JRDataSource dataSource
) throws JRException
{
return getDefaultInstance().fill(jasperReport, parameters, dataSource);
}
/**
* @deprecated replaced by {@link JasperReportSource}
*/
@Deprecated
protected JasperReportsContext getLocalJasperReportsContext(File file)
{
net.sf.jasperreports.engine.util.SimpleFileResolver fileResolver =
new net.sf.jasperreports.engine.util.SimpleFileResolver(
Arrays.asList(new File[]{file.getParentFile(), new File(".")})
);
fileResolver.setResolveAbsolutePath(true);
net.sf.jasperreports.engine.util.LocalJasperReportsContext localJasperReportsContext =
new net.sf.jasperreports.engine.util.LocalJasperReportsContext(jasperReportsContext);
localJasperReportsContext.setFileResolver(fileResolver);
return localJasperReportsContext;
}
protected static JasperReportSource getReportSource(JasperReportsContext jasperReportsContext,
File reportFile) throws JRException
{
JasperFillManager manager = getInstance(jasperReportsContext);
return manager.getReportSource(reportFile);
}
protected JasperReportSource getReportSource(File reportFile) throws JRException
{
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile);
return getReportSource(reportFile, jasperReport);
}
protected JasperReportSource getReportSource(File reportFile, JasperReport jasperReport)
{
//attempting resolve absolute paths as relative, that's what SimpleFileResolver(".") did
RepositoryResourceContext fallbackContext = SimpleRepositoryResourceContext.of(".");
SimpleRepositoryResourceContext reportContext = SimpleRepositoryResourceContext.of(
reportFile.getParent(), fallbackContext);
boolean legacyRelativePath = JRPropertiesUtil.getInstance(jasperReportsContext).getBooleanProperty(jasperReport,
PROPERTY_LEGACY_RELATIVE_PATH_ENABLED, false);
if (legacyRelativePath)
{
//attempt to resolve paths as relative to the master report for backward compatibility
reportContext.setSelfAsDerivedFallback(true);
}
return SimpleJasperReportSource.from(jasperReport, reportFile.getPath(), reportContext);
}
protected JasperReportSource getReportSource(String location) throws JRException
{
RepositoryUtil repository = RepositoryUtil.getInstance(jasperReportsContext);
ResourceInfo resourceInfo = repository.getResourceInfo(location);
JasperReportSource source;
if (resourceInfo == null)
{
JasperReport report = repository.getReport(null, location);
source = SimpleJasperReportSource.from(report, location, null);
}
else
{
String reportLocation = resourceInfo.getRepositoryResourceLocation();
String contextLocation = resourceInfo.getRepositoryContextLocation();
if (log.isDebugEnabled())
{
log.debug("report location " + location + " resolved to " + reportLocation
+ ", context " + contextLocation);
}
JasperReport report = repository.getReport(null, reportLocation);
source = SimpleJasperReportSource.from(report, reportLocation,
SimpleRepositoryResourceContext.of(contextLocation));
}
return source;
}
}