📄 ireportcompiler.java
字号:
{
tempDirStr = mainFrame.getTranslatedCompileDirectory();
}
File tempDirFile = new File(tempDirStr);
javaFile = (new File(tempDirFile,javaFile)).getPath();
mainFrame.logOnConsole("</font><font face=\"SansSerif\" size=\"3\" color=\"#000000\">Compiling to file... " + fileName + " -> "+javaFile+"</font><br><font face=\"Courier New\" size=\"3\">",true);
try
{
if( mainFrame.isUsingCurrentFilesDirectoryForCompiles() )
{
System.setProperty("jasper.reports.compile.temp", tempDirStr);
}
String old_jr_classpath = Misc.nvl( System.getProperty("jasper.reports.compile.class.path"), "");
System.setProperty("jasper.reports.compile.class.path", Misc.nvl( new File(fileName).getParent(), ".") + File.pathSeparator + System.getProperty("java.class.path") + File.pathSeparator + System.getProperty("java.class.path"));
String old_defaul_compiler = Misc.nvl( System.getProperty("jasper.reports.compiler.class"), "");
String compiler_name = "JasperReports default compiler";
String compiler_code = mainFrame.getProperties().getProperty("DefaultCompiler");
if (compiler_code != null && !compiler_code.equals("0") && !compiler_code.equals(""))
{
if (compiler_code.equals("1"))
{
System.setProperty("jasper.reports.compiler.class","net.sf.jasperreports.engine.design.JRJdk13Compiler" );
compiler_name = "Java Compiler";
}
else if (compiler_code.equals("2"))
{
System.setProperty("jasper.reports.compiler.class","net.sf.jasperreports.engine.design.JRJdtCompiler" );
compiler_name = "JDT Compiler";
}
else if (compiler_code.equals("3"))
{
System.setProperty("jasper.reports.compiler.class","net.sf.jasperreports.engine.design.JRBshCompiler" );
compiler_name = "BeanShell Compiler";
}
else if (compiler_code.equals("4"))
{
System.setProperty("jasper.reports.compiler.class","net.sf.jasperreports.engine.design.JRJikesCompiler" );
compiler_name = "Jikes Compiler";
}
}
else
{
System.setProperty("jasper.reports.compiler.class","" );
}
// mainFrame.logOnConsole("</font><font face=\"SansSerif\" size=\"3\" color=\"#000000\"><b>Using compiler "+ compiler_name + " (" + System.getProperty("jasper.reports.compiler.class","" ) +")</b></font><br><font face=\"Courier New\" size=\"3\">",true);
JasperCompileManager.compileReportToFile(srcFileName, fileName);
System.setProperty("jasper.reports.compile.class.path", old_jr_classpath);
System.setProperty("jasper.reports.compiler.class", old_defaul_compiler);
} catch (JRException jrex)
{
compilation_ok = false;
mainFrame.logOnConsole("</font><font face=\"SansSerif\" size=\"3\" color=\"#CC0000\"><b>Errors compiling "+fileName+"!</b></font><br><font face=\"Courier New\" size=\"3\">",true);
//1. load the java file
Vector source = new Vector();
try
{
java.io.BufferedReader is = new java.io.BufferedReader(new java.io.FileReader( javaFile ));
while (true)
{
String line = is.readLine();
if (line == null) break;
source.addElement(line);
}
is.close();
} catch (Exception ioex)
{
// No file readed....
}
//2. write exception in a string
StringWriter sw = new StringWriter(0);
jrex.printStackTrace(new PrintWriter(sw));
System.out.println("\n\n\n");
myPrintStream.flush();
parseException( outputBuffer+sw.getBuffer()+"", source);
}
catch (Exception ex)
{
mainFrame.logOnConsole("</font><font face=\"SansSerif\" size=\"3\" color=\"#CC0000\"><b>Error compiling the report java source!</b></font><br><font face=\"Courier New\" size=\"3\">",true);
StringWriter sw = new StringWriter(0);
ex.printStackTrace(new PrintWriter(sw));
myPrintStream.flush();
parseException( outputBuffer+sw.getBuffer()+"", null);
compilation_ok = false;
}
catch (Throwable ext)
{
mainFrame.logOnConsole("</font><font face=\"SansSerif\" size=\"3\" color=\"#CC0000\"><b>Error compiling the report java source!</b></font><br><font face=\"Courier New\" size=\"3\">",true);
StringWriter sw = new StringWriter(0);
ext.printStackTrace(new PrintWriter(sw));
myPrintStream.flush();
parseException( outputBuffer+sw.getBuffer()+"", null);
compilation_ok = false;
}
finally
{
if(mainFrame.isUsingCurrentFilesDirectoryForCompiles())
{
if( oldCompileTemp != null )
{
System.setProperty("jasper.reports.compile.temp", oldCompileTemp);
}
else
{
System.setProperty("jasper.reports.compile.temp", "");
}
File javaSrcFile = new File(javaFile);
if ( javaSrcFile.exists() )
if (mainFrame.getProperties().getProperty("KeepJavaFile","true").equals("false") )
{
javaSrcFile.delete();
}
}//end if using current files directory for compiles
}//end finally
mainFrame.logOnConsole(outputBuffer);
outputBuffer="";
mainFrame.logOnConsole("</font><hr><font face=\"SansSerif\" size=\"3\" color=\"#0000CC\"><b>Compilation running time : " + (System.currentTimeMillis() - start) + "</b></font><br><hr><font face=\"Courier New\" size=\"3\">",true);
}
if (!compilation_ok) {
removeThread();
return;
}
if ((command & CMD_EXPORT) != 0)
{
status ="generating report";
updateThreadList();
// Compile report....
JasperPrint print = null;
mainFrame.logOnConsole("</font><font face=\"SansSerif\" size=\"3\" color=\"#000000\">Filling report... </font><br><font face=\"Courier New\" size=\"3\">",true);
statusLevel = 5;
if (properties.get(USE_EMPTY_DATASOURCE) != null && properties.get(USE_EMPTY_DATASOURCE).equals("true"))
{
try
{
print = JasperFillManager.fillReport(fileName,new HashMap(),new JREmptyDataSource());
} catch (Exception ex)
{
mainFrame.logOnConsole("Error filling print...\n");
ex.printStackTrace();
mainFrame.logOnConsole(outputBuffer);
outputBuffer ="";
}
}
else if (properties.get(USE_CONNECTION) != null && properties.get(USE_CONNECTION).equals("true"))
{
try
{
IReportConnection connection = (IReportConnection)properties.get(CONNECTION);
HashMap hm = new HashMap();
if (connection.isJDBCConnection())
{
print = JasperFillManager.fillReport(fileName,hm, connection.getConnection());
}
else
{
JRDataSource ds = (JRDataSource)connection.getJRDataSource();
print = JasperFillManager.fillReport(fileName,hm,ds);
}
} catch (Exception ex)
{
mainFrame.logOnConsole("Error filling print...\n");
ex.printStackTrace();
mainFrame.logOnConsole(outputBuffer);
outputBuffer ="";
}
catch (Throwable ext)
{
mainFrame.logOnConsole("Error filling print...\n");
ext.printStackTrace();
mainFrame.logOnConsole(outputBuffer);
outputBuffer ="";
}
}
net.sf.jasperreports.view.JRViewer jrv = null;
net.sf.jasperreports.engine.JRExporter exporter=null;
if (print != null)
{
status ="exporting report";
updateThreadList();
String format = Misc.nvl(properties.get(OUTPUT_FORMAT),"pdf");
String viewer_program = "";
mainFrame.logOnConsole(properties.get(OUTPUT_FORMAT) + "Exporting\n");
try
{
if (format.equalsIgnoreCase("pdf"))
{
exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
fileName = Misc.changeFileExtension(fileName,"pdf");
mainFrame.logOnConsole("Exporting pdf to file... \""+fileName+"\"\n");
viewer_program = mainFrame.getProperties().getProperty("ExternalPDFViewer");
}
else if (format.equalsIgnoreCase("csv"))
{
exporter = new net.sf.jasperreports.engine.export.JRCsvExporter();
fileName = Misc.changeFileExtension(fileName,"csv");
mainFrame.logOnConsole("Exporting CSV to file... "+fileName+"\n");
viewer_program = Misc.nvl( mainFrame.getProperties().getProperty("ExternalCSVViewer"), "");
}
else if (format.equalsIgnoreCase("html"))
{
exporter = new net.sf.jasperreports.engine.export.JRHtmlExporter();
fileName = Misc.changeFileExtension(fileName,"html");
mainFrame.logOnConsole("Exporting HTML to file... "+fileName+"\n");
viewer_program = Misc.nvl( mainFrame.getProperties().getProperty("ExternalHTMLViewer"), "");
}
else if (format.equalsIgnoreCase("xls"))
{
exporter = new net.sf.jasperreports.engine.export.JRXlsExporter();
fileName = Misc.changeFileExtension(fileName,"xls");
mainFrame.logOnConsole("Exporting xls to file... "+fileName+"\n");
viewer_program = Misc.nvl( mainFrame.getProperties().getProperty("ExternalXLSViewer"), "");
}
else if (format.equalsIgnoreCase("java2D"))
{
exporter = new net.sf.jasperreports.engine.export.JRGraphics2DExporter();
mainFrame.logOnConsole("Exporting to Java2D \n");
viewer_program = null;
}
else if (format.equalsIgnoreCase("jrviewer"))
{
mainFrame.logOnConsole("Viewing with JasperReports Viewer\n");
exporter = null;
viewer_program = null;
}
else if (format.equalsIgnoreCase("txt"))
{
exporter = new it.businesslogic.ireport.export.JRTxtExporter();
fileName = Misc.changeFileExtension(fileName,"txt");
mainFrame.logOnConsole("Exporting txt (experimental) to file... "+fileName+"\n");
viewer_program = Misc.nvl( mainFrame.getProperties().getProperty("ExternalEditor"), "");
}
if (exporter != null)
{
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,fileName);
exporter.setParameter(JRExporterParameter.JASPER_PRINT,print);
exporter.setParameter(JRExporterParameter.PROGRESS_MONITOR, this);
exporter.exportReport();
}
else if (format.equalsIgnoreCase("jrviewer"))
{
//jrv = new net.sf.jasperreports.view.JRViewer(print);
JasperViewer jasperViewer =
new JasperViewer(print,false);
jasperViewer.setTitle("iReport JasperViewer");
// Find JRViewer...
/*
javax.swing.JComponent button = searchButton( (javax.swing.JComponent)jasperViewer.getRootPane() , "Print");
if (button != null) ((javax.swing.JButton)button).setText("Ciccio");
button = searchButton( (javax.swing.JComponent)jasperViewer.getRootPane() , "Reload");
if (button != null) ((javax.swing.JButton)button).setText("Ricarica");
*/
jasperViewer.show();
//net.sf.jasperreports.view.JasperViewer.viewReport( print, false);
}
} catch (Exception ex2)
{
mainFrame.logOnConsole("Error exporting print...\n");
ex2.printStackTrace();
mainFrame.logOnConsole(outputBuffer);
outputBuffer ="";
}
mainFrame.logOnConsole("Running time : " + (System.currentTimeMillis() - start)+"\n");
// Export using the rigth program....
Runtime rt = Runtime.getRuntime();
if (viewer_program == null || viewer_program.equals(""))
{
if (format.equalsIgnoreCase("jrviewer"))
{
}
else
mainFrame.logOnConsole("No external viewer specified for this type of print. Set it in the options frame!\n");
}
else
{
try
{
String execute_string = viewer_program + " "+fileName+"";
mainFrame.logOnConsole("Executing: "+ execute_string + "\n");
rt.exec( execute_string );
} catch (Exception ex)
{
mainFrame.logOnConsole("Error viewing report...\n");
ex.printStackTrace();
mainFrame.logOnConsole(outputBuffer+"\n");
outputBuffer ="";
}
mainFrame.logOnConsole("Finished...\n");
}
}
else
{
mainFrame.logOnConsole("Print not filled. Try to use an EmptyDataSource...!\n");
}
}
removeThread();
System.gc();
//System.setOut(out);
//System.setErr(err);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -