2013-03-22 5 views
5

Ich habe einige Daten in Form von XML, die wenige Datensätze enthält und auch eine RPT-Datei erstellt.Java-Code zum Erstellen von Bericht mit BIRT

Also, wie kann ich Birt aufrufen, um Bericht zu generieren, indem Sie XML und RPT als Eingabeparameter übergeben.

Ich bin komplett neu bei BIRT. Jedes Codebeispiel wird geschätzt.

+0

Es gibt gute Tutorien ls in den Hilfeinhalten der BIRT-Software. Auch überall, wo Sie Code schreiben (außer SQL), können Sie Java oder JavaScript schreiben. –

+0

Es gibt eine API, die das Generieren von BIRT-Berichten direkt aus Java unterstützt: https://mvnrepository.com/artifect/net.sf.automatic-report-generator/birt-generator. v1.0 funktioniert mit Log4j und v1.1 arbeitet mit Log4J2. Überprüfen Sie auch die Sourceforge-Seite hier: https://sourceforge.net/projects/automatic-report-generator/ –

Antwort

6

versuchen, dieses: BirtEngine.java:

public class BirtEngine { 
    private static IReportEngine birtEngine = null; 
    private static Properties configProps = new Properties(); 
    private final static String configFile = "BirtConfig.properties"; 
    public static synchronized void initBirtConfig() { 
     loadEngineProps(); 
    } 
    public static synchronized IReportEngine getBirtEngine(ServletContext sc) { 
     if (birtEngine == null) 
     { 
      EngineConfig config = new EngineConfig(); 
      if(configProps != null){ 
       String logLevel = configProps.getProperty("logLevel"); 
       Level level = Level.OFF; 
       if ("SEVERE".equalsIgnoreCase(logLevel)) 
       { 
        level = Level.SEVERE; 
       } else if ("WARNING".equalsIgnoreCase(logLevel)) 
       { 
        level = Level.WARNING; 
       } else if ("INFO".equalsIgnoreCase(logLevel)) 
       { 
        level = Level.INFO; 
       } else if ("CONFIG".equalsIgnoreCase(logLevel)) 
       { 
        level = Level.CONFIG; 
       } else if ("FINE".equalsIgnoreCase(logLevel)) 
       { 
        level = Level.FINE; 
       } else if ("FINER".equalsIgnoreCase(logLevel)) 
       { 
        level = Level.FINER; 
       } else if ("FINEST".equalsIgnoreCase(logLevel)) 
       { 
        level = Level.FINEST; 
       } else if ("OFF".equalsIgnoreCase(logLevel)) 
       { 
        level = Level.OFF; 
       } 

       config.setLogConfig(configProps.getProperty("logDirectory"), level); 
      } 

      config.setEngineHome(""); 
      IPlatformContext context = new PlatformServletContext(sc); 
      //IPlatformContext context = new PlatformFileContext(); 
      config.setPlatformContext(context); 
      //Create the report engine 
      //birtEngine = new ReportEngine(config); 
      //ReportEngine engine = new ReportEngine(null); 
      try 
      { 
       Platform.startup(config); 
      } 
      catch (BirtException e) 
      { 
       e.printStackTrace(); 
      } 
      IReportEngineFactory factory = (IReportEngineFactory) Platform 
      .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
      birtEngine = factory.createReportEngine(config); 
     } 
     return birtEngine; 
    } 
    public static synchronized void destroyBirtEngine() { 
     if (birtEngine == null) { 
      return; 
     }  
     birtEngine.destroy(); 
     Platform.shutdown(); 
     birtEngine = null; 
    } 
    public Object clone() throws CloneNotSupportedException { 
     throw new CloneNotSupportedException(); 
    } 
    private static void loadEngineProps() { 
     try { 
      //Config File must be in classpath 
      ClassLoader cl = Thread.currentThread().getContextClassLoader(); 
      InputStream in = null; 
      in = cl.getResourceAsStream (configFile); 
      configProps.load(in); 
      in.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

webreport.java:

public class WebReport extends HttpServlet { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    /** 
    * Constructor of the object. 
    */ 
    private IReportEngine birtReportEngine = null; 
    protected static Logger logger = Logger.getLogger("org.eclipse.birt"); 
    public WebReport() { 
     super(); 
    } 
    /** 
    * Destruction of the servlet. <br> 
    */ 
    public void destroy() { 
     super.destroy(); 
     BirtEngine.destroyBirtEngine(); 
    } 
    /** 
    * The doGet method of the servlet. <br> 
    * 
    */ 
    public void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     //get report name and launch the engine 
     //resp.setContentType("text/html"); 
     //resp.setContentType("application/pdf"); 
     resp.setContentType("application/msword"); 
     //resp.setHeader ("Content-Disposition","inline; filename=test.pdf"); 
     resp.setHeader("Content-disposition","attachment; filename=\"" +"test.doc" +"\""); 
     String reportName = req.getParameter("ReportName"); 
     ServletContext sc = req.getSession().getServletContext(); 
     this.birtReportEngine = BirtEngine.getBirtEngine(sc); 
     IReportRunnable design; 
     try 
     { 
      //Open report design 
      design = birtReportEngine.openReportDesign(sc.getRealPath("/Reports")+"/"+reportName); 
      //create task to run and render report 
      IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask(design);  
      task.getAppContext().put(EngineConstants.APPCONTEXT_CLASSLOADER_KEY, WebReport.class.getClassLoader()); 
      task.getAppContext().put("BIRT_VIEWER_HTTPSERVLET_REQUEST", req);   
      //set output options 
      //HTMLRenderOption options = new HTMLRenderOption(); 
      //options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML); 
      //options.setOutputStream(resp.getOutputStream()); 
      //options.setImageHandler(new HTMLServerImageHandler()); 
      //options.setBaseImageURL(req.getContextPath()+"/images"); 
      //options.setImageDirectory(sc.getRealPath("/images")); 
      /*PDFRenderOption options = new PDFRenderOption(); 
      options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);  
      options.setOutputStream(resp.getOutputStream()); 
      */ 
      RenderOption options = new RenderOption(); 
      options.setOutputFormat("doc"); 
      options.setOutputStream(resp.getOutputStream()); 
      //options.setEnableAgentStyleEngine(true); 
      //options.setEnableInlineStyle(true); 
      task.setRenderOption(options); 
      //run report 
      task.run(); 
      task.close(); 
     }catch (Exception e){ 
     e.printStackTrace(); 
      throw new ServletException(e); 
     } 
    } 
    /** 
    * The doPost method of the servlet. <br> 
    * 
    */ 
    public void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); 
     out.println("<HTML>"); 
     out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); 
     out.println(" <BODY>"); 
     out.println(" Post Not Supported"); 
     out.println(" </BODY>"); 
     out.println("</HTML>"); 
     out.flush(); 
     out.close(); 
    } 
    /** 
    * Initialization of the servlet. <br> 
    * 
    * @throws ServletException if an error occure 
    */ 
    public void init(ServletConfig sc) throws ServletException { 
     BirtEngine.initBirtConfig(); 
     this.birtReportEngine = BirtEngine.getBirtEngine(sc.getServletContext()); 
    } 
} 

birtconfigproperty:

ogDirectory=c:/temp 
logLevel=FINEST 
+0

keine Beschreibung überhaupt. y liefern Sie nicht einige Details. – vigamage

Verwandte Themen