0

Vaadinポートレットは初めてです。Vaadinを使用していくつかのポートレットを開発しましたが、BirtレポートをVaadinポートレットに追加したいのですが、これを行う方法がわからないので、これについて助けてください。または、これに関するヘルプドキュメントがある場合は、本当に役に立ちます

前もって感謝します!

アザド

4

1 に答える 1

0

Vaadin は Swing とほぼ同じです。次に、インターネットhttp://www.eclipse.org/forums/index.php/mv/msg/119253/721257/でコードを見つけ、Vaadin ウィンドウで実行するためだけにいくつかの小さな適応を行いました。

package com.example.testejanelas;

import java.io.ByteArrayOutputStream;
import java.net.URL;
import java.net.URLClassLoader; 
import java.util.HashMap;

import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
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;

import com.vaadin.ui.Label;
import com.vaadin.ui.Window;

public class ViewParaBIRT extends Window {

private static final long serialVersionUID = 1L;

IReportEngine engine = null;
EngineConfig config = null;
Label label;

public ViewParaBIRT(){
    setSizeFull();
    startPlatform();
    System.out.println("Started");
    runReport();
    stopPlatform();
    System.out.println("Finished");
    center();
}

public void runReport() {
    try {
        IReportRunnable design = null;
        design = engine
                .openReportDesign("D:\\workspace.carlos\\TesteJanelas\\src\\com\\example\\birt\\new_report.rptdesign");
        IRunAndRenderTask task = engine.createRunAndRenderTask(design);
        HTMLRenderOption options = new HTMLRenderOption();
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        bos.toString("ISO-8859-1");
        options.setOutputStream(bos);
        options.setOutputFormat("html");
        options.setEmbeddable(true);
        task.setRenderOption(options);
        task.run();
        task.close();
        label = new Label(bos.toString(),Label.CONTENT_XHTML);
        addComponent(label);
        System.out.println("Finished Gen");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

public void startPlatform() {
    try {
        config = new EngineConfig();
        HashMap context = new HashMap();
        URLClassLoader cl = (URLClassLoader) TestBirtViewer.class
                .getClassLoader();
        URL[] myurls = cl.getURLs();
        Class cl1 = cl.loadClass("com.mysql.jdbc.Driver");
        context.put("PARENT_CLASSLOADER", cl);
        config.setAppContext(context);
        Platform.startup(config);
        IReportEngineFactory factory = (IReportEngineFactory) Platform
                .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
        engine = factory.createReportEngine(config);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void stopPlatform() {
    engine.destroy();
    Platform.shutdown();
}

}
于 2012-06-12T00:42:09.383 に答える