![BIRT使用xml動態(tài)數(shù)據(jù)源總結(jié)_第1頁](http://file4.renrendoc.com/view/279a128963bd3037f351f4dd58476952/279a128963bd3037f351f4dd584769521.gif)
![BIRT使用xml動態(tài)數(shù)據(jù)源總結(jié)_第2頁](http://file4.renrendoc.com/view/279a128963bd3037f351f4dd58476952/279a128963bd3037f351f4dd584769522.gif)
![BIRT使用xml動態(tài)數(shù)據(jù)源總結(jié)_第3頁](http://file4.renrendoc.com/view/279a128963bd3037f351f4dd58476952/279a128963bd3037f351f4dd584769523.gif)
![BIRT使用xml動態(tài)數(shù)據(jù)源總結(jié)_第4頁](http://file4.renrendoc.com/view/279a128963bd3037f351f4dd58476952/279a128963bd3037f351f4dd584769524.gif)
![BIRT使用xml動態(tài)數(shù)據(jù)源總結(jié)_第5頁](http://file4.renrendoc.com/view/279a128963bd3037f351f4dd58476952/279a128963bd3037f351f4dd584769525.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
-.zBIRT使用*ml動態(tài)數(shù)據(jù)源總結(jié)博客分類:Java&Eclipse*ML數(shù)據(jù)構(gòu)造EclipseWebworkMySQL因為系統(tǒng)需要,添加報表功能,瞄上了birt,學(xué)習(xí)之,入門教程看了一大堆,還好,多種數(shù)據(jù)源支持,對于sql還沒精通,看著一大堆sql還有點犯難,所以,*ml數(shù)據(jù)源成了我的首選,仔細(xì)研究之下,發(fā)現(xiàn)原來birt提供的初級功能原來很少,報表經(jīng)常需要替換數(shù)據(jù)源來顯示其不同的內(nèi)容,而傳統(tǒng)的設(shè)置*ml數(shù)據(jù)源只是事前指定好*ml文件,或url,google了一下,根本沒有發(fā)現(xiàn)可用的例子,郁悶之,自己琢磨了一周幾乎,更郁悶的是其實問題早有了答案,就載在acegi的權(quán)限控制之上一直未看到勝利的曙光下面把自己動態(tài)修改*ml數(shù)據(jù)源的成功發(fā)上來我用的是webwork,其他用戶請酌情修改相應(yīng)參數(shù)這個是用來view報表的action需要傳入的參數(shù)是
reban.reportName=報表文件的文件名
rbean.*mlDataUrl=報表*mldatasourceurl,可以是stream,或***.*ml之類的,輸入瀏覽器能顯示*ml即可
BirtReportViewer.javaJava代碼package.morepower.controller.birt;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.InputStream;importjava*.servlet.ServletConte*t;importjava*.servlet..ServletRequest;importorg.eclipse.birt.report.engine.api.EngineConstants;importorg.eclipse.birt.report.engine.api.HTMLRenderOption;importorg.eclipse.birt.report.engine.api.HTMLServerImageHandler;importorg.eclipse.birt.report.engine.api.IHTMLRenderOption;importorg.eclipse.birt.report.engine.api.IRenderOption;importorg.eclipse.birt.report.engine.api.IReportEngine;importorg.eclipse.birt.report.engine.api.IReportRunnable;importorg.eclipse.birt.report.engine.api.IRunAndRenderTask;importorg.eclipse.birt.report.model.api.DataSourceHandle;importorg.eclipse.birt.report.model.api.ElementFactory;importorg.eclipse.birt.report.model.api.OdaDataSetHandle;importorg.eclipse.birt.report.model.api.OdaDataSourceHandle;importorg.eclipse.birt.report.model.api.ReportDesignHandle;importorg.eclipse.birt.report.model.api.TableHandle;importorg.eclipse.birt.report.model.api.activity.SemanticE*ception;import.morepower.controller.AbstractAction;import.morepower.util.BirtEngine;import.morepower.view.BirtReporterBean;import.opensymphony.webwork.ServletActionConte*t;erceptor.ServletRequestAware;publicclassBirtReportViewere*tendsAbstractActionimplementsServletRequestAware
{
/****/privatestaticfinallongserialVersionUID=1L;privatestaticStringREPORT_DIR="birt-reportors";privatestaticStringREPORT_IMAGE_DIR="images";privateIReportEnginebirtReportEngine=null;privateServletRequestrequest;privateBirtReporterBeanrbean;privateInputStreamreportStream;privatestaticStringDATASOURCE_NAME="DataSource";privatestaticStringDATASET_NAME="DataSet";privatestaticStringQueryTe*t=";publicInputStreamgetReportStream()
{
returnthis.reportStream;
}
OverridepublicStringe*ecute()throwsE*ception
{
//getreportnameandlaunchtheengine//resp.setContentType("te*t/html");//resp.setContentType("application/pdf");//resp.setHeader("Content-Disposition","inline;filename=test.pdf");StringreportName=rbean.getReportName();ServletConte*tsc=ServletActionConte*t.getServletConte*t();birtReportEngine=BirtEngine.getBirtEngine(sc);IReportRunnabledesign=birtReportEngine.openReportDesign(sc.getReal+REPORT_DIR)++reportName);ReportDesignHandlereport=(ReportDesignHandle)design.getDesignHandle();//只是動態(tài)更換數(shù)據(jù)源即可,不需改變報表的其他構(gòu)造//暫時不支持動態(tài)創(chuàng)立表格//createtasktorunandrenderreportbuildReport(report);IRunAndRenderTasktask=birtReportEngine.createRunAndRenderTask(design);task.getAppConte*t().put(EngineConstants.APPCONTE*T_CLASSLOADER_KEY,BirtReportViewer.class.getClassLoader());//setoutputoptionsHTMLRenderOptionoptions=newHTMLRenderOption();options.setImageHandler(newHTMLServerImageHandler());options.setImageDirectory(sc.getRealPath(java.io.File.separator+REPORT_IMAGE_DIR));options.setBaseImageURL(request.getConte*tPath()+r+REPORT_IMAGE_DIR);options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_HTML);options.setOption(IRenderOption.HTML_PAGINATION,Boolean.TRUE);options.setOption(IHTMLRenderOption.MASTER_PAGE_CONTENT,newBoolean(true));//options.setOutputFormat(HTMLRenderOption.OUTPUT_FORMAT_PDF);options.setOption(HTMLRenderOption.HTML_ENABLE_METADATA,Boolean.FALSE);ByteArrayOutputStreambout=newByteArrayOutputStream();//Stringrenderstr=bout.toString("utf-8");options.setOutputStream(bout);task.setRenderOption(options);/**另外一種方案,直接在action中構(gòu)造inputStream對像,但這樣*可能導(dǎo)致你的報表viewer與具體業(yè)務(wù)類耦合!*task.getAppConte*t().put(org.eclipse.datatools.enablement.oda.*ml.Constants.APPCONTE*T_INPUTSTREAM,reportStream);T_CLOSEINPUTSTREAM,Boolean.TRUE);*///runreporttask.run();task.close();reportStream=newByteArrayInputStream(bout.toByteArray());returnSUCCESS;
}
/***去除原有的數(shù)據(jù)源*/protectedvoidclearDataSource(ReportDesignHandledesignHandle)
{
//DataSourceHandledsh=designHandle.findDataSource(DATASOURCE_NAME);//dsh.drop();intcount=designHandle.getDataSources().getCount();try
{
for(inti=0;i<count;i++)designHandle.getDataSources().drop(i);
}
catch(SemanticE*ceptione)
{
log.error(e);e.printStackTrace();
}
}
/***去除原有的數(shù)據(jù)集*/protectedvoidclearDataSet(ReportDesignHandledesignHandle)
{
getQueryTe*t(designHandle);intcount=designHandle.getDataSets().getCount();try
{
for(inti=0;i<count;i++)designHandle.getDataSets().drop(i);
}
catch(SemanticE*ceptione)
{
log.error(e);e.printStackTrace();
}
}
/****/protectedvoidgetQueryTe*t(ReportDesignHandledesignHandle)
{
QueryTe*t=(String)designHandle.getDataSets().get(0).getProperty("queryTe*t");
}
protectedvoidbuildReport(ReportDesignHandledesignHandle)
{
try
{
ElementFactorydesignFactory=designHandle.getElementFactory();buildDataSource(designFactory,designHandle);buildDataSet(designFactory,designHandle);TableHandletable=(TableHandle)designHandle.getBody().get(0);table.setDataSet(designHandle.findDataSet(DATASET_NAME));
}
catch(SemanticE*ceptione)
{
log.error(e);e.printStackTrace();
}
}
protectedvoidbuildDataSource(ElementFactorydesignFactory,ReportDesignHandledesignHandle)throwsSemanticE*ception
{
clearDataSource(designHandle);OdaDataSourceHandledsHandle=designFactory.newOdaDataSource(DATASOURCE_NAME,"org.eclipse.birt.report.data.oda.*ml");/*dsHandle.setProperty("odaDriverClass",".mysql.jdbc.Driver");dsHandle.setProperty("odaURL","jdbc:mysql://localhost/stat");dsHandle.setProperty("odaUser","root");dsHandle.setProperty("odaPassword",");*/dsHandle.setProperty("FILELIST",rbean.get*mlDataUrl());designHandle.getDataSources().add(dsHandle);
}
protectedvoidbuildDataSet(ElementFactorydesignFactory,ReportDesignHandledesignHandle)throwsSemanticE*ception
{
clearDataSet(designHandle);OdaDataSetHandledsHandle=designFactory.newOdaDataSet(DATASET_NAME,//"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet");/*OdaDataSetHandledsHandle=designFactory.newOdaDataSet(DATASET_NAME,*/"org.eclipse.birt.report.data.oda.*ml.dataSet");dsHandle.setPrivateDriverProperty("*ML_FILE",rbean.get*mlDataUrl());dsHandle.setPrivateDriverProperty("MA*_ROW","-1");dsHandle.setQueryTe*t(QueryTe*t);dsHandle.setDataSource(DATASOURCE_NAME);designHandle.getDataSets().add(dsHandle);
}
OverridepublicvoidsetServletRequest(ServletRequestarg0)
{
request=arg0;
}
Overridepublicvoiddestory()
{
BirtEngine.destroyBirtEngine();
}
publicBirtReporterBeangetRbean()
{
returnrbean;
}
publicvoidsetRbean(BirtReporterBeanrbean)
{
this.rbean=rbean;
}
Overridepublicvoidinitilize()
{
try
{
("報表系統(tǒng)初始化中");BirtEngine.initBirtConfig();REPORT_DIR=BirtEngine.getBirtReportorProperty("report_dir");REPORT_IMAGE_DIR=BirtEngine.getBirtReportorProperty("report_image_dir");DATASOURCE_NAME="DataSource";DATASET_NAME="DataSet";
}
catch(E*ceptione)
{
e.printStackTrace();log.error(e);
}
}
}
BirtEngine.javaJava代碼package.morepower.util;importjava.io.InputStream;importjava.io.IOE*ception;importjava.util.Properties;importjava.util.logging.Level;importorg.apache.mons.logging.Log;importorg.apache.mons.logging.LogFactory;importorg.eclipse.birt.report.engine.api.EngineConfig;importorg.eclipse.birt.report.engine.api.IReportEngine;importjava*.servlet.*;importorg.eclipse.birt.core.framework.PlatformServletConte*t;importorg.eclipse.birt.core.framework.IPlatformConte*t;importorg.eclipse.birt.core.framework.Platform;importtion;importorg.eclipse.birt.report.engine.api.IReportEngineFactory;publicclassBirtEngine
{
privatestaticIReportEnginebirtEngine=null;privatestaticPropertiesconfigProps=newProperties();privatefinalstaticStringconfigFile="BirtCperties";protectedfinalstaticLoglog=LogFactory.getLog(BirtEngine.class);publicstaticsynchronizedvoidinitBirtConfig()
{
loadEngineProps();
}
publicstaticsynchronizedIReportEnginegetBirtEngine(ServletConte*tsc)
{
if(birtEngine==null)
{
EngineConfigconfig=newEngineConfig();if(configProps!=null)
{
StringlogLevel=configProps.getProperty("logLevel");Levellevel=Level.OFF;if("SEVERE".equalsIgnoreCase(logLevel))
{
level=Level.SEVERE;
}
elseif("WARNING".equalsIgnoreCase(logLevel))
{level=Level.WARNING;
}
elseif("INFO".equalsIgnoreCase(logLevel))
{
level=Level.INFO;
}
elseif("CONFIG".equalsIgnoreCase(logLevel))
{
level=Level.CONFIG;
}
elseif("FINE".equalsIgnoreCase(logLevel))
{
level=Level.FINE;
}
elseif("FINER".equalsIgnoreCase(logLevel))
{
level=Level.FINER;
}
elseif("FINEST".equalsIgnoreCase(logLevel))
{
level=Level.FINEST;
}
elseif("OFF".equalsIgnoreCase(logLevel))
{
level=Level.OFF;
}
config.setLogConfig(configProps.getProperty("logDirectory"),level);
}
//sc.getRealPath(")+java.io.File.separator+configProps.getProperty("engine_home")config.setEngineHome(");IPlatformConte*tconte*t=newPlatformServletConte*t(sc);(conte*t.getPlatform());config.setPlatformConte*t(conte*t);try
{
Platform.startup(config);
}
catch(BirtE*ceptione)
{
e.printStackTrace();
}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年乳劑項目深度研究分析報告
- 2025年臂力訓(xùn)練器項目投資可行性研究分析報告
- 中國玻璃管行業(yè)市場調(diào)查研究及投資戰(zhàn)略咨詢報告
- 中國油輪行業(yè)發(fā)展趨勢預(yù)測及投資戰(zhàn)略咨詢報告
- 中國手機(jī)應(yīng)用商店行業(yè)市場全景調(diào)研及投資規(guī)劃建議報告
- 2025年住宅裝飾設(shè)計合同
- 2024河南汽車修理市場前景及投資研究報告
- 電動機(jī)科技在教育領(lǐng)域的創(chuàng)新應(yīng)用
- 知識經(jīng)濟(jì)時代付費模式的運營策略解析
- 2025年外貿(mào)付款三方協(xié)議合同模板
- 紅色喜慶大氣軍令狀2022頒獎誓師大會動態(tài)PPT模板
- 綠化養(yǎng)護(hù)工作計劃15篇
- 部編版語文八年級下冊第六單元名著導(dǎo)讀《鋼鐵是怎樣煉成的》問答題 (含答案)
- 基于課程標(biāo)準(zhǔn)的教學(xué) 學(xué)習(xí)目標(biāo)的分解、敘寫與評價 課件
- 古詩詞誦讀《虞美人》課件-統(tǒng)編版高中語文必修上冊
- 病原微生物實驗室標(biāo)準(zhǔn)操作規(guī)程sop文件
- 制作拉線課件
- 2019統(tǒng)編版高中生物必修2遺傳與進(jìn)化教學(xué)計劃含教學(xué)進(jìn)度表
- 電子產(chǎn)品設(shè)計生產(chǎn)工藝流程課件
- 溫室大棚、花卉苗圃采暖方案(空氣源熱泵)
- 即興口語(姜燕)-課件-即興口語第五章PPT-中國傳媒大學(xué)
評論
0/150
提交評論