多亏了道长A的FusionCharts Free中文开发指南,让我少走了很多弯路。
但是还是有一个难点,如何用优雅且高效的方法使用字符串将动态数据拼接成dataXml?(为啥不用dataUrl?——权衡后的选择)毕竟看着一个又一个的for循环,if判断语句,中间再夹杂着string符号和加号,怎么都觉得丑。觉得丑就会觉得有更好的选择。
不错!是有更好的选择,此刻我至少想到了7种方法。这些方法根据采用的技术不同又分为三类。孰优孰劣,视情况而定:
第一类:自己动手丰衣足食型。在要求的图形复杂度不是太高的情况下可以采用此种类型,一般都是single series charts。此类包括两种方法:
1.一个方法搞定一切。只将需要的value,name等简单的封装,放入一个方法中,在这个方法中将大部分数据写死。
public static StringBuilder genBar2DXml(String month, List results) {
StringBuilder temp = new StringBuilder("");
temp
.append("<graph caption='"
+ month
+ " Sales' numberSuffix='%25' xAxisName= '省份' yAxisName= 'Units' showNames= '1' decimalPrecision='2' formatNumberScale='0' chartRightMargin='30'> ");
for (int i = 0; i < results.size(); i++) {
String strs[] = (String[]) results.get(i);
temp
.append("<set name='" + strs[0] + "' value='" + strs[1]
+ "'/>");
}
temp.append("</graph>");
return temp;
}
2.对fcf的xml文档进行分析,发现简单的图形只是graph和set的两级标签,稍复杂的图形有一级graph,二级 dataset,categories,三级set,category标签。可以为这些标签配置不同的生成方法。
public static StringBuilder genSet(List<String[]> results)
public static StringBuilder genGraph(GraphInfo graphInfo)
public static StringBuilder genDataset(String[] values, String seriesname, int mode)
public static StringBuilder genCategories(String[] names)
这四个方法,基本可以解决稍微复杂的问题了。但是可能会有些繁琐,因为graph可能会需要较多的属性设置;同时,在需求可能会频繁改变的情况下,不能保证修改能及时跟上。(毕竟一个图形的属性太多了)
第二类:拿来主义型。这个没有多说的,认真查阅英文文档,直接就用fcf的FusionChartsDOM.js来做,但这个的难点在于仍然需要自己拼接一部分内容,同时从数据库中读取数据再到网页中,数据始终处于一种不平稳的状态,一直到网页中才会生成最终采用的dataXml数据,这个不太好。
第三类:疯狂的拿来主义型。既然前两种都感觉有缺陷,不优雅,那么我就在想,我是不是走错路了?学习java,一个关键就是学会取用,而不是钻研。图形生成的关键在于xml,我为什么非要自己来封装这个功能呢?我能不能找找看,是否有现成的东西可以用?找到了,至少有四种,四种用于解析生成xml文档的解决方案。对,这就是那四种方法:DOM, SAX, DOM4J, JDOM。
稍微回顾一下步骤:首先从数据库中读取配置信息,装配成GraphConfig,然后根据GraphConfig中的信息生成GraphInfo,经过查询后,此时GraphInfo中已经信息完备了。然后再使用dom4j(个人比较喜欢)的xml生成方案,重写生成 graph,set,dataset,categories标签的方法,这样重写之后,代码果然更简洁了,而且,如果需求有变化,源于dom4j中xml 文档对象的树结构,代码也变得容易修改了。
至此,这个dataxml的生成算解决了。
分享到:
相关推荐
IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记IT项目经理成长手记
IT项目经理成长手记PDF,非常不错的资源
本压缩包文件“MATLAB GUI设计学习手记(第二版)源程序”提供了关于MATLAB GUI设计的实例代码和教程,对于想要深入学习MATLAB GUI编程的用户来说,是一份宝贵的资源。 MATLAB GUI设计涉及多个方面,包括组件使用、...
**jBPM 4 使用手记** jBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。在jBPM 4这个版本中,开发者可以利用其强大的功能来设计、执行和管理...
【匠人手记】是一份综合性的资源集合,包含了丰富的 IT 知识和技术文档,旨在为专业人士提供全面的学习和参考材料。这份压缩包文件可能是由一位经验丰富的 IT 从业者或教育者整理,以"匠人"的精神,精益求精,将各种...
《IT项目经理成长手记》是一本专为那些渴望在信息技术领域中担任项目经理角色的人们精心编写的指南。这本书深入探讨了IT项目管理的核心概念、关键技能以及实际操作中的经验教训,旨在帮助读者从新手到专家逐步提升...
资源名称:Python数据分析教程_NumPy使用手记内容简介:NumPy系统是Python的一种开源的数字扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以...
史上最全的AspxGridView使用手记,是word文档(共84页!),下面的目录 一、 基本使用方法 4 1.导入Dll文件 4 2.Asp.Net页面控件注册 4 3. Asp.Net页面控件声明 5 4.删除licenses.licx协议文件(盗版) 5 5.功能概述 5 二...
MATLAB GUI设计学习手记(第二版)——罗华飞编著2011
《AspxGridView使用手册》是关于DevExpress公司的ASP.NET Web Forms控件AspxGridView的详细指南。这个控件是一个强大的网格视图,提供了丰富的功能,包括数据绑定、行操作、数据编辑、分页、排序、过滤、分组以及...
IT项目 经理成长手记 kindle电子书 IT项目 经理成长手记 kindle电子书
《iBATIS 3 试用手记二》 在深入探讨iBATIS 3之前,先来了解一下iBATIS的基本概念。iBATIS是一个优秀的开源持久层框架,它简化了数据库与Java应用之间的交互,提供了SQL映射功能,使得开发者能够编写动态的SQL而...
软件开发方面,手记可能会涵盖编程语言的选择(如C语言或汇编语言),以及如何使用开发环境进行编程、编译和调试。单片机程序的下载和烧录过程也会有详细的说明,这对于初学者来说是非常实用的信息。 接口技术是...
**JRebel 热插件使用手记** JRebel 是一款强大的 Java 开发工具,它能够实现在不重启应用服务器的情况下实时更新代码,极大地提高了开发效率。本文将详细介绍 JRebel 的安装、配置以及如何在实际开发中充分利用其热...
盖国强 ORACLE DBA 手记 第二章
### MySQL 数据库使用手记知识点总结 #### 一、安装与配置MySQL ##### 环境准备 - **操作系统**: Windows XP(兼容Windows 2000、Windows 2003) - **MySQL版本**: MySQL 5.0 **假设前提**: MySQL系统已安装完成...
项目管理实践经验; 行文特点通俗直接,脉络清晰; 大量的图标,易懂。