使用Eclipse BIRT和POJO的報表教程

來源:互聯網
上載者:User

標籤:birt   pojo   報表   eclipse rcp   dataset   

Eclipse Birt

本教程介紹如何使用Eclipse BIRT和POJO來製作報表。本教程還介紹了如何部署所製作的BIRT報表到Web容器(Tomcat)中,以及如何把它運用到一個Eclipse RCP應用程式中。 本教程使用的是Eclipse 3.7 (Indigo)。

原文傳送門:http://www.vogella.com/tutorials/EclipseBIRT/article.html


1. Eclipse BIRT1.1. 概述

Eclipse BIRT允許建立基於來自不同資料來源資料的報表。

BIRT提供了以下資料來源: 

  • 資料庫(通過JDBC) 
  • 文字檔(CVS,XML) 
  • Web服務(WSDL通過檔案) 
  • 指令碼資料來源 

您使用BIRT的“資料集”來定義查詢的資料來源。這些資料集可以在報表中使用。 

在Java程式中,經常方便地使用Java對象作為資料來源的報表。本文將重點放在簡單Java對象(POJO)作為資料來源的BIRT報表的使用。

1.2.樣本 

在本教程中,我們將建立一個報表,該報表將顯示美國的股票市場資訊。我們從一個Java對象中擷取資料,該資料將顯示在一個圖表和詳細資料的表格中。其結果應該是這樣的:



2.安裝 

使用Eclipse Update Manager來安裝“Business Intelligence, Reporting and Charting” - > BIRT Framework。 


3.建立項目和報表 

建立一個新的Java項目名稱為“de.vogella.birt.stocks”。 

通過File -> New -> Other -> Business Intelligence and Reporting -> Report來建立一個新的報表“stock_report.rptdesign”。








新的報表顯示在“報表設計”的角度。刪除例子報表中的一切,除了報表的標題。結果應該像下面這樣。




4.Java類 

該報表將顯示股票資料。為了證明BIRT我們使用類比對象提供資料。 

建立包“de.vogella.birt.stocks.model”,然後在下面的類。這個類將代表領域模型。

package de.vogella.birt.stocks.model;import java.util.Date;/** * Domain model for stock data * @author Lars Vogel */public class StockData {  private Date date;  private double open;  private double high;  private double low;  private double close;  private long volume;  public double getClose() {    return close;  }  public void setClose(double close) {    this.close = close;  }  public Date getDate() {    return date;  }  public void setDate(Date date) {    this.date = date;  }  public double getHigh() {    return high;  }  public void setHigh(double high) {    this.high = high;  }  public double getLow() {    return low;  }  public void setLow(double low) {    this.low = low;  }  public double getOpen() {    return open;  }  public void setOpen(double open) {    this.open = open;  }  public long getVolume() {    return volume;  }  public void setVolume(long volume) {    this.volume = volume;  }} 
建立包“de.vogella.birt.stocks.daomock”,然後在下面的類“StockDaoMock”。這隻會類比/假資料並沒有真正從互連網上得到它,因為我們在這裡學習的BIRT這樣就應該可以了。

package de.vogella.birt.stocks.daomock;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import de.vogella.birt.stocks.model.StockData;public class StockDaoMock {  public List<StockData> getStockValues(String company) {    // Ignore the company and always return the data    // A real implementation would of course use the company string    List<StockData> history = new ArrayList<StockData>();    // We fake the values, we will return fake value for 01.01.2009 -    // 31.01.2009    double begin = 2.5;    for (int i = 1; i <= 31; i++) {      Calendar day = Calendar.getInstance();      day.set(Calendar.HOUR, 0);      day.set(Calendar.MINUTE, 0);      day.set(Calendar.SECOND, 0);      day.set(Calendar.MILLISECOND, 0);      day.set(Calendar.YEAR, 2009);      day.set(Calendar.MONTH, 0);      day.set(Calendar.DAY_OF_MONTH, i);      StockData data = new StockData();      data.setOpen(begin);      double close = Math.round(begin + Math.random() * begin * 0.1);      data.setClose(close);      data.setLow(Math.round(Math.min(begin, begin - Math.random() * begin * 0.1)));      data.setHigh(Math.round(Math.max(begin, close) + Math.random() * 2));      data.setVolume(1000 + (int) (Math.random() * 500));      begin = close;      data.setDate(day.getTime());      history.add(data);    }    return history;  }} 


5.資料來源和資料集 

使用Java對象(POJO的)作為資料來源在Eclipse BIRT你要映射的Java類的JavaScript的領域。這個JavaScript用於在您的報表,並會訪問Java對象。 

5.1.建立資料來源 

資料來源與報表串連您的資料。 BIRT提供不同類型的資料來源,我們使用“指令碼資料來源”。回到你的stocks_report,使用“Report Design”的角度來看,選擇“Data Explorer”查看。

建立一個新的資料來源,在您的報表名為“srcStocks”。





5.2.該資料集 

該資料集定義了資料來源的資料和BIRT的資料對應。建立一個名為“dataSetSocks”新的資料集。






按下一步,並定義報表的列。




5.3. JavaScript

現在我們就來編寫JavaScript做為我們的資料集。選擇資料集,然後選擇“open”的指令碼。開啟指令碼之前所述第一訪問的資料集調用。我們用它來裝載我們的名單與股票的對象。要訪問一個Java類,你只需要使用以下文法:Packages.myJavaClass其中myJavaClass是完整的Java類名。



count = 0;// create instance of// the GetStockHistory classgsh = new Packages.de.vogella.birt.stocks.daomock.StockDaoMock(); //Load the Liststock = gsh.getStockValues("Java"); 
複製下面的代碼到擷取指令碼。

if(count < stock.size()){       row["columnDate"] = stock.get(count).getDate();       row["columnOpen"] = stock.get(count).getOpen();       row["columnHigh"] = stock.get(count).getHigh();       row["columnLow"] = stock.get(count).getLow();       row["columnClose"] = stock.get(count).getClose();       row["columnVolume"] = stock.get(count).getVolume();       count++;       return true;}return false; 

通過雙擊dataset -> Preview Result來檢查您的指令碼



6.顯示表中的資料 6.1.概述 

現在,我們將在一個表中顯示資料。 

6.2.建立一個表 

從“Data Explorer”切換到“Palette”。選擇“Layout”標籤。



拖放報表上的表格元素。



為表定義以下設定。



返回到"Data Explorer"。然後,拖放資料集的列到表中的“Details row”。




結果應該像下面這樣。




完成。你可以看到這份報表的預覽,如果你點擊“Review”選項卡。結果應該如下所示:




7.圖7.1.建立圖表 

切換回調色盤中選擇一個圖表和拖放在您的報表。 

選擇折線圖的標準設定。




按下一步,選擇你的資料集。




在接下來的步驟中,我們必須分配列到軸線上。我們指定的時間作為x軸,然後通過拖放開啟值到y軸上。




一共定義5個系列。通過拖動列的總和符號指定的列到這些系列。




目前在x軸的第一顯示最新日期。反向x軸所必須的資料升序進行排序。按反白的按鈕。




轉到下一個標籤,並給你列給出的標題。隱藏在最後一個。




日期的顯示使用長格式,我們想改變這種情況。執行以下,並選擇“short”為日期類型的X軸




改變通過以下的線的顯示。




點擊Finish按鈕把圖表引入到您的報表中。


8.在Tomcat中部署 8.1.概述 

下面介紹如何使用Tomcat的BIRT報表。一般來說,你需要: 

  • 安裝BIRT Web查看器中的Tomcat 
  • 您的BIRT項目匯出到.jar檔案 
  • 移動.jar檔案到BIRT安裝目錄/ WEB-INF / lib目錄 
  • 將報表設計檔案為BIRT在Tomcat的根目錄 
  • 重新啟動Tomcat 

8.2.在Tomcat的安裝BIRT 

我們將利用我們假設已經安裝的獨立的Tomcat6.0。請參閱Apache Tomcat Tutorial的詳細資料。 

你需要http://download.eclipse.org/birt/downloads/的“BIRT部署的組件”。 

此下載的birt.war複製到Tomcat的webappsfolder。

BIRT的例子應該在http://localhost:8080/birt/中有效了。如果你看到這樣的事情,你的Tomcat的您的Web瀏覽器應該是正確的。



8.3.安裝在Tomcat中的BIRT報表 

要運行自己的報表,你必須在.rptdesign檔案複製在Tomcat中的BIRT檔案夾的根目錄。為了使您的Java類,可將項目匯出到一個jar檔案。








在那之後的jar檔案必須複製到Tomcat的webapps/ BIRT/ WEB-INF/ lib /目錄。重新啟動Tomcat,然後導航至您的報表。 

你的報表應該在HTTP上找到http://localhost:8080/birt/frameset?__report=stock_report.rptdesign




9.部署在Eclipse RCP應用程式 9.1. BIRT部署到RCP應用程式 

我們可以使用Birtviewer也在本地RCP的應用,這是不超過一個瀏覽器視圖,它示出了由一個整合的網路伺服器產生的HTML頁面。 

下面假設你已經熟悉的Eclipse RCP開發。請參閱Eclipse RCP的教程的情況下,你需要一個介紹。 

轉換“de.vogella.birt.stocks”到外掛程式項目,通過按右鍵 -> Configure -> "Convert to plug-in project"。 

建立一個新的外掛程式項目“de.vogella.birt.stocks.rcp”。選擇模板“RCP Application with a view”。 

添加以下外掛程式,dependendies為“de.vogella.birt.stocks.rcp”。

Manifest-Version: 1.0Bundle-ManifestVersion: 2Bundle-Name: RcpBundle-SymbolicName: de.vogella.birt.stocks.rcp; singleton:=trueBundle-Version: 1.0.0.qualifierBundle-Activator: de.vogella.birt.stocks.rcp.ActivatorRequire-Bundle: org.eclipse.ui, org.eclipse.core.runtime, org.eclipse.birt.report.viewer, org.eclipse.birt.report.engine.emitter.html, de.vogella.birt.stocks, org.eclipse.birt, org.eclipse.birt.chart.ui, org.eclipse.birt.chart.device.extension, org.eclipse.birt.chart.device.pdf, org.eclipse.birt.chart.device.svg, org.eclipse.birt.chart.device.swt, org.eclipse.birt.chart.engine.extension, org.eclipse.birt.chart.reportitem, org.eclipse.birt.chart.reportitem.ui, org.eclipse.birt.chart.ui.extension, org.eclipse.birt.core.script.function, org.eclipse.birt.report.engine.script.javascriptBundle-ActivationPolicy: lazyBundle-RequiredExecutionEnvironment: JavaSE-1.6 
複製你的報表到這個新項目,並重新命名為“stock_report_rcp.rptdesign”。開啟此報表,並將“open”指令碼更改為如下。

count = 0; /* * load and init data reader * import Platform from org.eclipse.core.runtime */importPackage(Packages.org.eclipse.core.runtime);/* load bundle with POJOs and data loading class */myBundle = Platform.getBundle("de.vogella.birt.stocks");/* load data reader class */readerClass = myBundle.loadClass("de.vogella.birt.stocks.daomock.StockDaoMock");/* create new instance of DataReader */readerInstance = readerClass.newInstance();/* read data */stock = readerInstance.getStockValues("Java"); 
使用下邊代碼做為View.java。

package de.vogella.birt.stocks.rcp;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import org.eclipse.birt.report.viewer.utilities.WebViewer;import org.eclipse.core.runtime.FileLocator;import org.eclipse.core.runtime.Path;import org.eclipse.core.runtime.Platform;import org.eclipse.swt.SWT;import org.eclipse.swt.browser.Browser;import org.eclipse.swt.widgets.Composite;import org.eclipse.ui.part.ViewPart;import org.osgi.framework.Bundle;public class View extends ViewPart {  public static final String ID = "de.vogella.birt.stocks.rcp.view";  public void createPartControl(Composite parent) {    String path = "";    try {      Bundle bundle = Platform.getBundle("de.vogella.birt.stocks.rcp");      URL url = FileLocator.find(bundle, new Path("stock_report_rcp.rptdesign"), null);      path = FileLocator.toFileURL(url).getPath();    } catch (MalformedURLException me) {      System.out.println("Fehler bei URL " + me.getStackTrace());    } catch (IOException e) {      e.printStackTrace();    }    Browser browser = new Browser(parent, SWT.NONE);    // use the filename of your report    WebViewer.display(path, WebViewer.HTML, browser, "frameset");  }  /**   * Passing the focus request to the viewer's control.   */  public void setFocus() {  }} 

10.支援這個網站 

本教程是根據CC BY-NC-SA 3.0 DE授權開放內容。在本教程中的原始碼是在Eclipse Public License下發布。請參閱重用的條款細節vogella License頁面。 

編寫和更新這些教程是一個大量的工作。如果這個免費的社區服務是有用的,你可以通過給小費以及報表拼字錯誤和事實錯誤支援的原因。 

10.1.謝謝 

如果這篇文章協助你,請考慮適當捐款。 



10.2.問題與討論 

如果您在本教程中發現錯誤,請通知我(見top of the page)。請確保您已經閱讀vogella FAQ,因為已經有解答,所以我不對這裡的問題作出回應。


11.連結與文獻11.1.原始碼 

樣本原始碼 

11.2. Eclipse的BIRT資源 

http://wiki.eclipse.org/index.php/BIRT_Project 

Eclipse BIRT Wiki

11.3. vogella資源 

vogella Training Android and Eclipse Training from the vogella team

Android Tutorial Introduction to Android Programming

GWT Tutorial Program in Java, compile to JavaScript and HTML

Eclipse RCP Tutorial Create native applications in Java

JUnit Tutorial Test your application

Git Tutorial Put all your files in a distributed version control system

註:本文對原文進行粗略翻譯和略微精簡,不足之處還請見諒。

BIRT相關

BIRT? vs JasperReports? vs Pentaho? http://www.innoventsolutions.com/comparison-matrix.htmlBIRT Home - Eclipse http://www.eclipse.org/birt/
Demos http://eclipse.org/birt/demos/
在 Eclipse 中用 Java 實現百靈報表(BIRT)的事件處理 http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-birtje/index.html
用 BIRT 實現進階圖表 http://www.ibm.com/developerworks/cn/education/opensource/os-eclipse-birt-advanced/index.html
BIRT中文指南 http://wenku.baidu.com/view/ba67857102768e9951e73869.htmlBIRT:基於 Eclipse 的報表 http://www.ibm.com/developerworks/cn/opensource/os-ecl-birt/

使用Eclipse BIRT和POJO的報表教程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.