first commit
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
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";
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user