1 28 package net.sf.jasperreports.engine.design; 29 30 import java.io.File ; 31 32 import net.sf.jasperreports.engine.JRException; 33 import net.sf.jasperreports.engine.JRReport; 34 import net.sf.jasperreports.engine.util.JRLoader; 35 36 37 41 public abstract class JRAbstractClassCompiler extends JRAbstractJavaCompiler implements JRMultiClassCompiler 42 { 43 44 45 protected JRAbstractClassCompiler() 46 { 47 super(true); 48 } 49 50 51 protected String compileUnits(JRCompilationUnit[] units, String classpath, File tempDirFile) throws JRException 52 { 53 File [] sources = new File [units.length]; 54 for (int i = 0; i < sources.length; i++) 55 { 56 sources[i] = units[i].getSourceFile(); 57 } 58 59 File [] classFiles = new File [units.length]; 60 for (int i = 0; i < classFiles.length; i++) 61 { 62 classFiles[i] = new File (tempDirFile, units[i].getName() + ".class"); 63 } 64 65 try 66 { 67 String errors = compileClasses(sources, classpath); 68 69 if (errors == null) 70 { 71 for (int i = 0; i < units.length; i++) 72 { 73 byte[] classBytes = JRLoader.loadBytes(classFiles[i]); 74 units[i].setCompileData(classBytes); 75 } 76 } 77 78 return errors; 79 } 80 finally 81 { 82 for (int i = 0; i < classFiles.length; i++) 83 { 84 if (classFiles[i].exists()) 85 { 86 classFiles[i].delete(); 87 } 88 } 89 } 90 } 91 92 93 protected void checkLanguage(String language) throws JRException 94 { 95 if (!JRReport.LANGUAGE_JAVA.equals(language)) 96 { 97 throw 98 new JRException( 99 "Language \"" + language 100 + "\" not supported by this report compiler.\n" 101 + "Expecting \"java\" instead." 102 ); 103 } 104 } 105 106 107 protected String generateSourceCode(JRSourceCompileTask sourceTask) throws JRException 108 { 109 return JRClassGenerator.generateClass(sourceTask); 110 } 111 112 113 protected String getSourceFileName(String unitName) 114 { 115 return unitName + ".java"; 116 } 117 } 118 | Popular Tags |