花钱的年华

--今天开始成为主站

用户操作
[即时聊天] [发私信] [加为好友]
江南白衣ID:calvinxiu
691417次访问,排名53好友0人,关注者38
calvinxiu的文章
原创 161 篇
翻译 0 篇
转载 0 篇
评论 646 篇
江南白衣的公告

肖桦,江南白衣,
开源项目SpringSide
春天的旁边
发起者

最近评论
calvinxiu:
发版本最痛苦的事情,就是刚发完之后忽然又有了一个比较重要的更新。

推荐大家下载3.0.3.1 (2mb)

1.简化了目录结构,感觉又清爽了不少。
2.消除了最后一块需要逐个Class写配置文件的地方(applicationContext.xml中的sessionFactory的mapping class)。
dreaming:恭喜~
hongyi:还是一头雾水,郁闷,为啥有这么多东东,叫人头大
suncheng_hong:用过appfuse,但springside还没有尝试过。
suncheng_hong:很想尝试一下。
文章分类
    收藏
      相册
      Blog用图
      Friends
      @_@
      Anders小明
      buaawhl
      cac
      canonical
      cctvx1
      david.turing
      femto
      g9
      JohnsonQu
      Michael Chen
      Raimundox
      robbin
      SimonLei
      totodo
      wuyu
      周爱民
      孟岩
      差沙
      庄表伟
      落魄的程序员
      透明
      郁也风
      铁手
      银狐999
      飞云小侠
      存档
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 穷人的通用OLAP方案III--JPivot表现层收藏

      新一篇: Head First Design Patterns | 旧一篇: 轻量级的代码生成方案选择

         JPivot 是Mondrian的表现层TagLib,一直保持着良好的开发进度。
         已经好久没有用了,趁彻底忘记以前,把小小的心得记下来。

        1.汉化
         1.1 查找所有resources.properties文件,汉化为resources_zh.properties文件
         1.2 native2ascii resources_zh.properties resources_zh.properties
         1.3 查找WEB-INF/jpivot下的所有xml文件,汉化为xxx_zh.xml

         2.架构
        
      JPivot的架构看似另类,但其实都是精明的选择。

         2.1 使用XML/ XSLT渲染OLAP报表
           
      JPivot 使用 WCF (Web Component Framework)  ,基于XML/XSLT来渲染Web UI组件。这使它显得十分另类。不过,OLAP报表这种非常复杂但又有规律可循的东西,最适合使用XSLT来渲染。虽然程序员和编辑器都很不喜欢这种Martin Flower口中有点LISP形式的语言,但Transform Engine这时候的确能比Template Engine(Velocity,Freemarker)更高效的处理OLAP报表及其导航系统的显示。  

         2.2 完全基于JSP+TagLib
           JPivot另外一个可能使人不惯的地方是它完全基于taglib而不是大家熟悉的MVC模式。但如果不基于tabLib,基于任何MVC框架都会使其失去通用性,担不起Mondrain唯一表现层的重任,而且,MVC其实不一定需要那些框架(后述)

         2.3 典型的流程及模式

             打开JPivot自带的sample,查看index.jsp文件,典型的流程如下:

           1,用户发出 testPage.jsp?query=modrain的请求

           2,testPage.jsp上的<wcf:include>根据query参数,匹配/WEB-INF/query/下的modrain.jsp来获取数据       

           3,modrain.jsp上的<jp:mondrianQuery id="query01">查询数据,放入到query01变量中

           4,testPage.jsp上的<jp:table id="table01" query="#{query01}"/>根据query01的结果(领域数据) 准备显示OLAP表格所需的数据(显示数据)

           5,testPage.jsp上的<wcf:render ref="table01" xslUri="/WEB-INF/jpivot/table/mdxtable.xsl"/>根据table01的结果,使用xsl,渲染出OLAP表格。

           6,循环第4,5步,使用<jp:navigator>等tag准备navigator,chart的数据然后用<wcf>渲染出图表和导航系统.

           整个流程,第2步的testPage充当Controller调用第3步的Model层,然后第4,5步 执行Martin Flower讲的Transform Engine两步渲染模式----先从领域数据(比如一些java bean)中转换出格式整齐的,需要显示的数据(比如一段xml),再用xsl将其渲染为最终的表现形式。

      相关文章:
      穷人的通用OLAP方案I--序
      穷人的通用OLAP方案I I--Mondrian引擎
      穷人的通用OLAP方案III--JPivot表现层

      发表于 @ 2005年04月19日 01:51:00|评论(loading...)|编辑

      新一篇: Head First Design Patterns | 旧一篇: 轻量级的代码生成方案选择

      评论

      #zczc365 发表于2005-06-20 17:53:00  IP: 61.186.252.*
      看来国内没有几个人用jpivot.
      我把jpivot汉化后(改了不少代码),和spring mvc绑在了一起,效果不错。
      jpivot的问题在于汉化困难,而且文档太简单。另外XML/ XSLT也不容易上手,呵呵.
      #zczc365 发表于2005-06-20 17:56:00  IP: 61.186.252.*
      做点贡献,我改的代码记录,其中FOP还没有汉化:

      -- com.tonbeller.jpivot.table.ColumnAxisBuilderImpl
      Line28:setHierarchyHeader(HIERARCHY_HEADER) --> setHierarchyHeader(NO_HEADER)

      --com.tonbeller.jpivot.chart.ChartComponent
      Line568: String xchart = "<?xml version=\"1.0\" encoding=\"GBK\"?>\n<xchart>" + writeImageMap(filename, info, false) + "</xchart>";
      Line571: InputStream stream = new ByteArrayInputStream(xchart.getBytes("UTF-8")) -->InputStream stream = new ByteArrayInputStream(xchart.getBytes("GBK"))

      --com.clarmont.olap.servlet.print
      Line180: ByteArrayInputStream bain = new ByteArrayInputStream(sw.toString().getBytes("UTF-8")) --> ByteArrayInputStream bain = new ByteArrayInputStream(sw.toString().getBytes("GBK"))

      Line77 and 86:
      the xslUri parameter is changed to read from servlet InitParameter "xlsXslUri" and "pdfXslUri"

      -- com.tonbeller.jpivot.table.navi.ClickableMember
      Line 316:String uname = URLEncoder.encode(new Base64().encode(m),"ISO-8859-1");

      -- com.tonbeller.jpivot.param.SetParameterTag
      Line 55,85:
      try {
      value = new Base64()0.decodeToString(value);
      }
      catch (Exception ex) {
      ex.printStackTrace();
      }

      #wangzx 发表于2005-06-22 14:56:00  IP: 61.186.252.*
      ByteArrayInputStream bain = new ByteArrayInputStream(sw.toString().getBytes("GBK"))


      看来这些兄弟的汉化方法也是很别扭的阿。
      #eastcoming 发表于2006-01-23 10:27:00  IP: 203.86.44.*
      能讲一下,“查询数据,放入到query01变量中“的具体做法吗?我的邮件:eastcoming@163.com
      #calvin 发表于2006-01-25 09:43:00  IP: 218.20.250.*
      sorry,太久以前的东西,早就忘光了,看一下他的Taglib就清楚了,
      #aprilfirst 发表于2006-02-16 16:24:00  IP: 162.105.71.*
      谁知道“XML/ XSLT渲染”的具体方法?
      #ct 发表于2006-11-21 14:17:00  IP: 202.115.125.*
      zczc365大虾能给点帮助吗?
      我正在准备OLAP的论文,决定用mondrian做了。
      我的邮箱是:ctong721@163.com
      #gwziju@mail.com 发表于2007-09-03 14:03:26  IP: 202.163.200.*
      gaijhozq vsqlur aszvbnw zdbea lzfq jbedwxr qdnumsx
      #akgyzxc@mail.com 发表于2007-09-03 14:03:50  IP: 168.216.95.*
      pcikqyuh fjhx gmhoe wgbx ksxip nkuet enuvbsz http://www.ankut.yesud.com
      #ypjfsxdo@mail.com 发表于2007-09-03 14:04:32  IP: 164.100.42.*
      zpxq eztcnualj psdq mqypdigr phvfxkjwg girhcumyz qregxo ewdyugx xblqgua
      发表评论  


      登录
      Csdn Blog version 3.1a
      Copyright © 江南白衣