2

データソースを使用して BIRT API をコーディングするための方向性を探しています。作成したデータソースにアクセスするようにアプリケーションを構成する方法がわかりません。これで助けを得ることができれば、それは素晴らしいことです。ここにいます。BIRT RCP を使用してレポートを作成済みです。現在、通常の Java アプリケーションと Web アプリケーションを使用してレポートを生成しようとしています。どちらも、これから作成する GUI を介して日付パラメーターを渡します。どちらにもデータソースが必要です。ここでレポート デザイナーを使用する例をいくつか見てきましたが、私はそれを使用していません。また、これを生成するために BIRT Report Creator (RCP) GUI を使用していません。

ありがとう

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();
        }
    }
}
4

1 に答える 1

7

これをさらに深く調査したところ、私は自分の質問に対する解決策を見つけ、その答えを共有したいと思いました.

datasource明確にするために、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();
    }
}
}
于 2012-05-24T14:28:08.920 に答える