Как скопировать OdadataSourceHandle из одного отчета о дизайне в другой отчет о дизайне? - PullRequest
0 голосов
/ 25 октября 2018

String targetRptFile = System.getenv ("LOCAL_BIRT_INPUT") + "/"+report.getMergeRptTemplates().getTargetTemplate()+".rptdesign";Строка attachRptFile = System.getenv ("LOCAL_BIRT_INPUT") + "/" + report.getMergeRptTemplates () .getAttachTemplate () + ". Rptdesign";

    DesignConfig dConfig = new DesignConfig();
    IDesignEngineFactory factory = (IDesignEngineFactory) Platform.createFactoryObject(IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY);
    IDesignEngine dEngine = factory.createDesignEngine(dConfig);
    SessionHandle session = dEngine.newSessionHandle(null);
    ReportDesignHandle targetRptDesignHandle = null;
    ReportDesignHandle attachRptDesignHandle = null;
    try {
        targetRptDesignHandle = session.openDesign(targetRptFile);
        attachRptDesignHandle = session.openDesign(attachRptFile);
    } catch (DesignFileException e) {
        e.printStackTrace();
    }


    OdaDataSourceHandle attachOdaDataSourceHandle = (OdaDataSourceHandle)attachRptDesignHandle.getAllDataSources()
            .get(0);
    targetRptDesignHandle.getAllDataSources().add(attachOdaDataSourceHandle);


    String newTargetRptFile = System.getenv("LOCAL_BIRT_INPUT") + "/"+report
            .getMergeRptTemplates().getTargetTemplate()+"-merge"+".rptdesign";

    try {
        targetRptDesignHandle.saveAs(newTargetRptFile);
        targetRptDesignHandle.close();
        attachRptDesignHandle.close();
        session.closeAll(true);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

1 Ответ

0 голосов
/ 29 октября 2018

Никогда не делал этого, но я помню похожую проблему, когда хотел скопировать JDBCDataSource.Я работал над этим, устанавливая все свойства вручную, а не пытаясь скопировать весь DS.

...