2012-05-21 1 views
2

Я ищу какое-то направление для кодирования BIRT API с источником данных. Я не знаю, как настроить приложение для доступа к созданному источнику данных. Если мне удастся помочь, это будет здорово. Вот где я. Я уже создал отчет через RIR RIRT. Теперь я хочу сгенерировать отчет с помощью обычного Java-приложения и веб-приложения. Оба будут передавать параметры даты через графический интерфейс, который я буду создавать. Оба должны иметь источник данных. Я видел здесь несколько примеров, которые используют Report Designer, но я не использую это. Я также НЕ использую GUI Report Creator (RCP) для создания этого.Настройка источника данных BIRT через его API

Благодаря

import java.util.logging.Level; 
import org.eclipse.birt.core.framework.Platform; 
import org.eclipse.birt.report.engine.api.EngineConfig; 
import org.eclipse.birt.report.engine.api.EngineException; 
import org.eclipse.birt.report.engine.api.HTMLRenderOption; 
import org.eclipse.birt.report.engine.api.IReportEngine; 
import org.eclipse.birt.report.engine.api.IReportEngineFactory; 
import org.eclipse.birt.report.engine.api.IReportRunnable; 
import org.eclipse.birt.report.engine.api.IRunAndRenderTask; 

public class ReportGenerator { 
    public static void main(String args[]) throws EngineException { 
     ReportGenerator reportGenerator = new ReportGenerator(); 
     reportGenerator.executeReport(); 
    } 

    public void executeReport() throws EngineException { 

     IReportEngine engine=null; 
     EngineConfig config = null; 

     try{ 
      config = new EngineConfig();   
      config.setBIRTHome("C:\\birt-rcp-report-designer-3_7_2\\ReportEngine"); 
      config.setLogConfig("c:/temp/test", Level.FINEST); 
      Platform.startup(config); 
      IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
      engine = factory.createReportEngine(config);  

      IReportRunnable design = null; 
      //Open the report design 
      design = engine.openReportDesign("ReportTemplates/testNoData.rptdesign"); 
      IRunAndRenderTask task = engine.createRunAndRenderTask(design); 
      task.setParameterValue("AuthorName", "Dale DeMott"); 
      HTMLRenderOption options = new HTMLRenderOption();  
      options.setOutputFileName("output/resample/Parmdisp.html"); 
      options.setOutputFormat("html"); 

      task.setRenderOption(options); 

      //Looking to create and insert a datasource here. 
      //task.setDataSource(some parameters here that represent the ds); 

      task.run(); 
      task.close(); 
      engine.destroy(); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } finally { 
      Platform.shutdown(); 
     } 
    } 
} 

ответ

7

Исследуя это глубже, я нашел решение мой собственный вопрос и подумал, что я разделю ответ. Чтобы уточнить, я искал способ подключения моего кода к источнику данных, чтобы мои запросы отчета BIRT выполнялись. Я обнаружил, что могу передать соединение через объект IGetParameterDefinitionTask, получив контекст приложения, а затем установив соединение в этом объекте с помощью пары значений значения ключа.

См. Эту строку в коде ниже ... 'task.getAppContext(). Put ("OdaJDBCDriverPassInConnection", conn);'

public class ReportGenerator { 
public static void main(String args[]) throws EngineException { 
    ReportGenerator reportGenerator = new ReportGenerator(); 
    reportGenerator.executeReport(); 
} 

public void executeReport() throws EngineException { 

    IReportEngine engine=null; 
    EngineConfig config = null; 

    try{ 
     config = new EngineConfig();   
     config.setBIRTHome("C:\\birt-rcp-report-designer-3_7_2\\ReportEngine"); 
     config.setLogConfig("c:/temp/test", Level.FINEST); 
     Platform.startup(config); 
     IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
     engine = factory.createReportEngine(config);  

     IReportRunnable design = null; 
     //Open the report design 
     design = engine.openReportDesign("ReportTemplates/testNoData.rptdesign"); 
     IRunAndRenderTask task = engine.createRunAndRenderTask(design); 
     task.setParameterValue("AuthorName", "Dale DeMott"); 
     HTMLRenderOption options = new HTMLRenderOption();  
     options.setOutputFileName("output/resample/Parmdisp.html"); 
     options.setOutputFormat("html"); 

     task.setRenderOption(options); 

     //Connection helper is a utility class used to create a connection to your 
     //database and return it. 
     ConnectionHelper connectionHelper = new ConnectionHelper(); 
     Connection conn = connectionHelper.getConnection(); 
     task.getAppContext().put("OdaJDBCDriverPassInConnection", conn); 

     task.run(); 
     task.close(); 
     engine.destroy(); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } finally { 
     Platform.shutdown(); 
    } 
} 

}

 Смежные вопросы

  • Нет связанных вопросов^_^