⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ireportcompiler.java

📁 优秀的打印控件全源代码,类似水晶表的设计器!
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * IReportCompiler.java * *  iReport  --  Visual designer for generating JasperReports Documents *  Copyright (C) 2002-2003  Giulio Toffoli gt@businesslogic.it * *  This program is free software; you can redistribute  and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *  Giulio Toffoli *  Via T.Aspetti, 233 *  35100 Padova ITALY *  gt@businesslogic.it * * * Created on 6 giugno 2003, 0.44 */package it.businesslogic.ireport;import it.businesslogic.ireport.gui.*;import it.businesslogic.ireport.connection.*;import it.businesslogic.ireport.util.*;import java.util.*;import java.io.*;import java.net.MalformedURLException;import java.net.URL;import java.net.URLClassLoader;import dori.jasper.engine.*;import dori.jasper.engine.data.*;import dori.jasper.view.*;import dori.jasper.engine.export.*;/** * Please note that this class is totally different from the old IReportCompiler.class * shipped with iReport 1. * @author  Administrator */public class IReportCompiler implements Runnable, JRExportProgressMonitor{      public static final int CMD_COMPILE  = 0x01;   public static final int CMD_EXPORT   = 0x02;   public static final int CMD_COMPILE_SCRIPTLET = 0x04;      public static final String OUTPUT_DIRECTORY     = "OUTPUT_DIRECTORY";   public static final String OUTPUT_FORMAT        = "OUTPUT_FORMAT";   public static final String USE_EMPTY_DATASOURCE = "USE_EMPTY_DATASOURCE";   public static final String USE_CONNECTION = "USE_CONNECTION";   public static final String CONNECTION = "CONNECTION";      public static final String SCRIPTLET_OUTPUT_DIRECTORY = "SCRIPTLET_OUTPUT_DIRECTORY";      static PrintStream myPrintStream = null;   int filledpage=0;         private String status="";   private IReportConnection iReportConnection;      private JReportFrame jrf;      private MainFrame mainFrame;      private int command;      private HashMap properties;      private Thread thread;      private String javaFile = "";   static private String outputBuffer = "";      /** Creates a new instance of IReportCompiler */   public IReportCompiler()   {      properties = new HashMap();      command = 0;   }      /** When an object implementing interface <code>Runnable</code> is used    * to create a thread, starting the thread causes the object's    * <code>run</code> method to be called in that separately executing    * thread.    * <p>    * The general contract of the method <code>run</code> is that it may    * take any action whatsoever.    *    * @see     java.lang.Thread#run()    *    */   public void run()   {            long start = System.currentTimeMillis();      // Redirect output stream....      PrintStream out = System.out;      PrintStream err = System.err;      if (myPrintStream == null)         myPrintStream  =new PrintStream(new FilteredStream(new ByteArrayOutputStream()));            if (out != myPrintStream)         System.setOut(myPrintStream);      if (err != myPrintStream)         System.setErr(myPrintStream);            outputBuffer="";            	//by Egon - DEBUG: Something is wrong here, please check. ok? thx.	//1 - Line 148 - srcScriptletFileName = C:\jasperreports-0.5.3\demo\samples\jasper\FirstJasper.jrxmScriptlet.java -> scriptlet filename	//2 - Line 157 - Misc.nvl( new File(fileName).getParent(), ".") =>  .  -> report directory            // Add an entry in the thread list...    //by Egon - DEBUG: C:\jasperreports-0.5.3\demo\samples\jasper\FirstJasper.jrxml      String fileName = jrf.getReport().getFilename();      	//by Egon - DEBUG: C:\jasperreports-0.5.3\demo\samples\jasper\FirstJasper.jrxml      String srcFileName = jrf.getReport().getFilename();	//by Egon - DEBUG: C:\jasperreports-0.5.3\demo\samples\jasper\FirstJasper.jasper      fileName = Misc.changeFileExtension(fileName,"jasper");                  File f = new File(fileName);      if (properties.get(this.OUTPUT_DIRECTORY) != null)      {		//by Egon - DEBUG: .\FirstJasper.jasper         fileName = (String)properties.get(this.OUTPUT_DIRECTORY) + f.separatorChar + f.getName();      }      	//by Egon - DEBUG: C:\jasperreports-0.5.3\demo\samples\jasper\FirstJasper.jrxml      String scriptletFileName = jrf.getReport().getFilename();	//by Egon - DEBUG: C:\jasperreports-0.5.3\demo\samples\jasper\FirstJasper.jrxml      String srcScriptletFileName = jrf.getReport().getFilename();	//by Egon - DEBUG: .\FirstJasper.      //fileName = Misc.changeFileExtension(fileName,"");	//by Egon - DEBUG: C:\jasperreports-0.5.3\demo\samples\jasper\FirstJasper.jrxmScriptlet.java      scriptletFileName = srcScriptletFileName.substring(0,scriptletFileName.length()-1)+"Scriptlet.java";	//1 - by Egon - DEBUG: C:\jasperreports-0.5.3\demo\samples\jasper\FirstJasper.jrxmScriptlet.java      srcScriptletFileName = scriptletFileName;            File f2 = new File(scriptletFileName);      if (properties.get(this.SCRIPTLET_OUTPUT_DIRECTORY) != null)      {         scriptletFileName = (String)properties.get(this.SCRIPTLET_OUTPUT_DIRECTORY) + f2.separatorChar + f2.getName();      }                         String reportDirectory = new File(jrf.getReport().getFilename()).getParent();       String classpath = System.getProperty("jasper.reports.compile.class.path");       if(classpath != null){            classpath += File.pathSeparator + reportDirectory;             System.setProperty("jasper.reports.compile.class.path", classpath);       } else if (System.getProperty("java.class.path") != null){        classpath = System.getProperty("java.class.path");        classpath += File.pathSeparator + reportDirectory;         System.setProperty("java.class.path", classpath);        }       reportDirectory = reportDirectory.replace('\\', '/');       if(!reportDirectory.endsWith("/")){            reportDirectory += "/";//the file path separator must be present       }       if(!reportDirectory.startsWith("/")){            reportDirectory = "/" + reportDirectory;//it's important to JVM 1.4.2 especially if contains windows drive letter       }       ReportClassLoader reportClassLoader = new ReportClassLoader();       reportClassLoader.setRelodablePaths( reportDirectory );       reportClassLoader.rescanLibDirectory();              /******************/              try{            Thread.currentThread().setContextClassLoader(new URLClassLoader(new URL[]{new URL("file://"+reportDirectory)},  reportClassLoader));       } catch (MalformedURLException mue){            mue.printStackTrace();       }       /******************/              //.setContextClassLoader(reportClassLoader);              if ((command & CMD_COMPILE_SCRIPTLET) != 0)      {                   start = System.currentTimeMillis();               // Compile the scriptlet class...                  String tempDirStr = System.getProperty("jasper.reports.compile.temp");         String oldCompileTemp  = tempDirStr;         if (tempDirStr == null || tempDirStr.length() == 0 || mainFrame.isUsingCurrentFilesDirectoryForCompiles())         {            tempDirStr = mainFrame.getTranslatedCompileDirectory();         }         File tempDirFile = new File(tempDirStr);         javaFile = srcScriptletFileName;         javaFile = (new File(tempDirFile,javaFile)).getPath();                  javaFile = jrf.getReport().getScriptletFileName();                  status = "Compiling scriptlet";                  mainFrame.logOnConsole("</font><font face=\"SansSerif\" size=\"3\" color=\"#000000\">Compiling file... " + scriptletFileName + " -> "+javaFile+"</font><br><font face=\"Courier New\" size=\"3\">",true);                  try         {            /*            if( mainFrame.isUsingCurrentFilesDirectoryForCompiles() )            {               System.setProperty("jasper.reports.compile.temp", tempDirStr);            }            */                        //JasperCompileManager.compileReportToFile(srcFileName, fileName);            dori.jasper.engine.design.JRJdk13Compiler compiler = new dori.jasper.engine.design.JRJdk13Compiler();            compiler.compileClass( new File(javaFile),   Misc.getClassPath() );                      }          /*         catch (Exception jrex)         {                         mainFrame.logOnConsole("</font><font face=\"SansSerif\"  size=\"3\" color=\"#CC0000\"><b>Errors compiling "+scriptletFileName+"!</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 Scriptlet 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);         }         finally         {            if(mainFrame.isUsingCurrentFilesDirectoryForCompiles())            {                /*               if( oldCompileTemp != null )               {                  System.setProperty("jasper.reports.compile.temp", oldCompileTemp);               }               else               {                  System.setProperty("jasper.reports.compile.temp", "");               }                 */            }//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 ((command & CMD_COMPILE) != 0)      {         System.setProperty("jasper.reports.compile.keep.java.file", "true");         //System.setProperty("jasper.reports.compile.temp", "C:\\");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -