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

49 lines
1.7 KiB
Java

package net.sf.jasperreports.engine.design;
import java.io.File;
import java.io.Serializable;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.util.JRLoader;
public abstract class JRAbstractClassCompiler extends JRAbstractJavaCompiler implements JRMultiClassCompiler {
protected JRAbstractClassCompiler() {
super(true);
}
protected String compileUnits(JRCompilationUnit[] units, String classpath, File tempDirFile) throws JRException {
File[] sources = new File[units.length];
for (int i = 0; i < sources.length; i++)
sources[i] = units[i].getSourceFile();
File[] classFiles = new File[units.length];
for (int j = 0; j < classFiles.length; j++)
classFiles[j] = new File(tempDirFile, units[j].getName() + ".class");
try {
String errors = compileClasses(sources, classpath);
if (errors == null)
for (int m = 0; m < units.length; m++) {
byte[] classBytes = JRLoader.loadBytes(classFiles[m]);
units[m].setCompileData((Serializable)classBytes);
}
return errors;
} finally {
for (int k = 0; k < classFiles.length; k++) {
if (classFiles[k].exists())
classFiles[k].delete();
}
}
}
protected void checkLanguage(String language) throws JRException {
if (!"java".equals(language))
throw new JRException("Language \"" + language + "\" not supported by this report compiler.\n" + "Expecting \"java\" instead.");
}
protected JRCompilationSourceCode generateSourceCode(JRSourceCompileTask sourceTask) throws JRException {
return JRClassGenerator.generateClass(sourceTask);
}
protected String getSourceFileName(String unitName) {
return unitName + ".java";
}
}