|
轉(zhuǎn)載:http://blog.csdn.net/Mr_JBean/archive/2008/10/15/3081412.aspx 簡(jiǎn)介 JPivot - 是一個(gè)自定義的JSP的標(biāo)簽庫(kù),可以用來(lái)在JSP頁(yè)面中嵌入OLAP表格和圖表。用戶可以執(zhí)行典型的OLAP導(dǎo)航,如下鉆,切片和切塊。它使用Mondrian 作為其OLAP服務(wù)器。 相關(guān)介紹性網(wǎng)址: JPivot Home: http://JPivot.SourceForge.net Mondrian Home: http://mondrian.SourceForge.net JPivot 的MVC結(jié)構(gòu) 從Web應(yīng)用的架構(gòu)來(lái)講,JPivot完全遵循MVC結(jié)構(gòu),甚至十分苛刻。為了減少對(duì)特定第三方框架的以來(lái),JPivot自己實(shí)現(xiàn)了MVC框架,但它可以與其它MVC框架共同使用。 1.模型Model: 2.視圖View: 3.控制器Controller: ![]() 在JPivot中,所有的UI控件操作都使用DispatcherSupport來(lái)維護(hù)處理該控件中UI交互的一個(gè)或多個(gè)Handler(比如表示表格中擴(kuò)展鉆取的“+”圖標(biāo)的DrillExpandUI類中的dispatcher屬性與ExpandHandler內(nèi)部類),而每個(gè)UI控件的dispatcher又在其父控件的dispatcher中注冊(cè)。JPivot根據(jù)客戶端操作所請(qǐng)求的URL在以WfcController為根的RequestFileter樹中查找對(duì)應(yīng)的處理器。
Decorator模式
§ OlapModelProxy對(duì)在HttpSession中唯一添加OlapModel提供了支持,并限制了其它對(duì)象對(duì)OlapModel的初始化與重置操作;增加了OlapModel在改變時(shí)通知注冊(cè)的Listener所發(fā)生的改變這一職責(zé)。§ CachingOlapModel為OlapModel提供了在一定的周期內(nèi)(Model沒有發(fā)生改變時(shí))緩存Result結(jié)果集的職責(zé)。PartBuilder類與PartBuilderDecorator類構(gòu)成Decorator模式,具體的裝飾器比較多,但裝飾器都是針對(duì)特定的Part來(lái)裝飾的。通過(guò)繼承這些裝飾器,可以為構(gòu)建Table的各個(gè)部分(行、列、單元格、切片)的xml進(jìn)行。JPivot結(jié)合Apache Digester,使我們可以不用修改任何現(xiàn)有代碼,僅需實(shí)現(xiàn)這些裝飾器及對(duì)應(yīng)TableExtension就可以對(duì)所生成的Olap Pivot Table在UI表現(xiàn)上進(jìn)行擴(kuò)充,并且可以增加或修改對(duì)相應(yīng)的交互操作進(jìn)行處理的Handler。
![]() Observer模式 在JPivot中,大量使用Observer模式解除視圖與模型之間的耦合,處理兩者之間的依賴關(guān)系及內(nèi)容與表示同步。 1、Model類及其子類(JPivot自定義Olap 模型的Mondrian實(shí)現(xiàn)、xml/a實(shí)現(xiàn))與ModelChangeListener及其子類(表格、鉆取/旋轉(zhuǎn)/排序排名等、圖形、成員樹等展示控件)構(gòu)成Observer模式(嚴(yán)格的說(shuō)應(yīng)該是Listener模式),作用是在模型發(fā)生改變時(shí),同步更新所有的UI控件展示。 ![]() |
|
|