Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/JasperCompileManager.java
2025-07-28 13:56:49 +05:30

184 lines
7.6 KiB
Java

package net.sf.jasperreports.engine;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collection;
import net.sf.jasperreports.crosstabs.JRCrosstab;
import net.sf.jasperreports.engine.design.JRCompiler;
import net.sf.jasperreports.engine.design.JRJavacCompiler;
import net.sf.jasperreports.engine.design.JRJdk13Compiler;
import net.sf.jasperreports.engine.design.JRJdtCompiler;
import net.sf.jasperreports.engine.design.JRVerifier;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.fill.JREvaluator;
import net.sf.jasperreports.engine.util.JRClassLoader;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.util.JRProperties;
import net.sf.jasperreports.engine.util.JRSaver;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.xml.JRXmlWriter;
public class JasperCompileManager {
public static String compileReportToFile(String sourceFileName) throws JRException {
File sourceFile = new File(sourceFileName);
JasperDesign jasperDesign = JRXmlLoader.load(sourceFileName);
File destFile = new File(sourceFile.getParent(), jasperDesign.getName() + ".jasper");
String destFileName = destFile.toString();
compileReportToFile(jasperDesign, destFileName);
return destFileName;
}
public static void compileReportToFile(String sourceFileName, String destFileName) throws JRException {
JasperDesign jasperDesign = JRXmlLoader.load(sourceFileName);
compileReportToFile(jasperDesign, destFileName);
}
public static void compileReportToFile(JasperDesign jasperDesign, String destFileName) throws JRException {
JasperReport jasperReport = compileReport(jasperDesign);
JRSaver.saveObject(jasperReport, destFileName);
}
public static JasperReport compileReport(String sourceFileName) throws JRException {
JasperDesign jasperDesign = JRXmlLoader.load(sourceFileName);
return compileReport(jasperDesign);
}
public static void compileReportToStream(InputStream inputStream, OutputStream outputStream) throws JRException {
JasperDesign jasperDesign = JRXmlLoader.load(inputStream);
compileReportToStream(jasperDesign, outputStream);
}
public static void compileReportToStream(JasperDesign jasperDesign, OutputStream outputStream) throws JRException {
JasperReport jasperReport = compileReport(jasperDesign);
JRSaver.saveObject(jasperReport, outputStream);
}
public static JasperReport compileReport(InputStream inputStream) throws JRException {
JasperDesign jasperDesign = JRXmlLoader.load(inputStream);
return compileReport(jasperDesign);
}
public static JasperReport compileReport(JasperDesign jasperDesign) throws JRException {
return getCompiler(jasperDesign).compileReport(jasperDesign);
}
public static Collection verifyDesign(JasperDesign jasperDesign) {
return JRVerifier.verifyDesign(jasperDesign);
}
public static JREvaluator loadEvaluator(JasperReport jasperReport, JRDataset dataset) throws JRException {
JRCompiler compiler = getCompiler(jasperReport);
return compiler.loadEvaluator(jasperReport, dataset);
}
public static JREvaluator loadEvaluator(JasperReport jasperReport, JRCrosstab crosstab) throws JRException {
JRCompiler compiler = getCompiler(jasperReport);
return compiler.loadEvaluator(jasperReport, crosstab);
}
public static JREvaluator loadEvaluator(JasperReport jasperReport) throws JRException {
return loadEvaluator(jasperReport, jasperReport.getMainDataset());
}
public static String writeReportToXmlFile(String sourceFileName) throws JRException {
File sourceFile = new File(sourceFileName);
JRReport report = (JRReport)JRLoader.loadObject(sourceFile);
File destFile = new File(sourceFile.getParent(), report.getName() + ".jasper.jrxml");
String destFileName = destFile.toString();
writeReportToXmlFile(report, destFileName);
return destFileName;
}
public static void writeReportToXmlFile(String sourceFileName, String destFileName) throws JRException {
JRReport report = (JRReport)JRLoader.loadObject(sourceFileName);
writeReportToXmlFile(report, destFileName);
}
public static void writeReportToXmlFile(JRReport report, String destFileName) throws JRException {
JRXmlWriter.writeReport(report, destFileName, "UTF-8");
}
public static void writeReportToXmlStream(InputStream inputStream, OutputStream outputStream) throws JRException {
JRReport report = (JRReport)JRLoader.loadObject(inputStream);
writeReportToXmlStream(report, outputStream);
}
public static void writeReportToXmlStream(JRReport report, OutputStream outputStream) throws JRException {
JRXmlWriter.writeReport(report, outputStream, "UTF-8");
}
public static String writeReportToXml(JRReport report) {
return JRXmlWriter.writeReport(report, "UTF-8");
}
private static JRCompiler getJavaCompiler() {
JRJdtCompiler jRJdtCompiler;
JRJdk13Compiler jRJdk13Compiler;
JRJavacCompiler jRJavacCompiler;
JRCompiler compiler = null;
try {
JRClassLoader.loadClassForRealName("org.eclipse.jdt.internal.compiler.Compiler");
jRJdtCompiler = new JRJdtCompiler();
} catch (Exception e) {}
if (jRJdtCompiler == null)
try {
JRClassLoader.loadClassForRealName("com.sun.tools.javac.Main");
jRJdk13Compiler = new JRJdk13Compiler();
} catch (Exception e) {}
if (jRJdk13Compiler == null)
jRJavacCompiler = new JRJavacCompiler();
return (JRCompiler)jRJavacCompiler;
}
private static JRCompiler getCompiler(JasperReport jasperReport) throws JRException {
JRCompiler compiler = null;
String compilerClassName = jasperReport.getCompilerClass();
Class compilerClass = null;
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
if (classLoader != null)
try {
compilerClass = classLoader.loadClass(compilerClassName);
} catch (ClassNotFoundException e) {}
if (compilerClass == null) {
classLoader = JasperCompileManager.class.getClassLoader();
try {
if (classLoader == null) {
compilerClass = Class.forName(compilerClassName);
} else {
compilerClass = classLoader.loadClass(compilerClassName);
}
} catch (ClassNotFoundException e) {
throw new JRException("Report compiler class not found : " + compilerClassName);
}
}
try {
compiler = (JRCompiler)compilerClass.newInstance();
} catch (Exception e) {
throw new JRException("Could not instantiate report compiler : " + compilerClassName, e);
}
return compiler;
}
private static JRCompiler getCompiler(JasperDesign jasperDesign) throws JRException {
JRCompiler compiler = null;
String compilerClassName = JRProperties.getProperty("net.sf.jasperreports.compiler.class");
if (compilerClassName == null || compilerClassName.trim().length() == 0) {
String language = jasperDesign.getLanguage();
compilerClassName = JRProperties.getProperty("net.sf.jasperreports.compiler." + language);
if (compilerClassName == null || compilerClassName.trim().length() == 0) {
if ("java".equals(language))
return getJavaCompiler();
throw new JRException("No report compiler set for language : " + language);
}
}
try {
Class clazz = JRClassLoader.loadClassForName(compilerClassName);
compiler = clazz.newInstance();
} catch (Exception e) {
throw new JRException("Could not instantiate report compiler : " + compilerClassName, e);
}
return compiler;
}
}