内容简介:Git 项目推荐 | ECharts 的 Java 注解框架
ECharts的 Java 注解框架 EChartsAnnotation
用原生Java注解来映射ECharts的 Option
类,提供Annotation到 JSON
的转换功能。
比 ECharts Java
更高效、更快捷!扩展性更强!
思路 How it works
注解 Annotation
基于ECharts3.0制作 Option定义
从上述URL得到JSON文件总体上可以解析成树,除了series、dataZoom和visualMap三个节点需要特殊处理,
其他非叶子节点均可映射成文件系统的文件夹,而叶子节点则映射成Java源文件即注解文件。
总共有3700+个注解!这里生成的注解只能用于标记Bean类的域Field
根据JSON树的叶子节点的Type属性中的不同类型,3700多注解分成6种不同类型:
JS类型 | Java类型 | 默认值 | 文件名后缀 | 备注 |
---|---|---|---|---|
boolean | boolean | false | Boolean | 布尔类型 |
Color | int | 0 | Hex | Web颜色映射成Java整型,由于常用16进制表示所以后缀是Hex |
number | Number | 0 | Number | 抽象类Number是int、double等基本类型的父类,一律转为double |
string | String | "" | String | 字符串类型 |
Array | List | 无 | Array | 数组类型一律转成泛型List |
Function | Object | 无 | Function | 由于Java不支持函数类型,所以需要重载Object的toString方法输出字符串的“函数” |
* | Object | 无 | All | 参考Function类型 |
按注解的参数个数分,可以分为两种:
标记注解
标记注解没有参数。如果被标记的元素为 null
或者等于默认值,注解处理器将不会输出任何东西
单值注解
单值注解只有一个参数。该参数的类型跟注解名件名末尾的单词有关。
由于许多叶子节点有多种类型,所以一个叶子节点可能生成多个注解,但是注解处理器把这些注解当作同一个注解输出。
在单值注解的参数不为空和被标记的元素不为 null
且不等于默认值的情况下,注解处理器会优先输出被注解元素的值。
注解处理器 AnnotationProcessor
注解处理器专用的注解:
SingleChart
和 DuplexChart
用来标记需要被转换成JSON的Java Bean类,
这两个注解不同之处在于处理 series
、 dataZoom
和 visualMap
下面的注解时,
同一个类多次同个注解文件,前者把重复出现的注解合并处理;
后者通过 AddSeries
、 AddDataZoom
和 AddVisualMap
三种注解提取被 SingleChart
标记的Java文件中的
series
、 dataZoom
和 visualmap
,并添加到当前被 DouplexChart
标记的文件中。
SingleChart
参数 exportTo
默认值是"",不等于默认值时向本地磁盘写入"exportTo".json
参数 extendsFrom
默认值是"",不等于默认值时,将继承自"extendsFrom.json"
DupelxChart
参数 exportTo
默认值是"",不等于默认值时向本地磁盘写入"exportTo".json
参数 extendsFrom
默认值是"",不等于默认值时,将继承自"extendsFrom.json"
AddSeries
只能用于 DuplexChart
的域 Field
,若域不为null且域的类源文件被 SingleChart
注解标记,
将会提取源文件中 series
下的注解并添加到 DuplexChart
AddDataZoom
只能用于 DuplexChart
的域 Field
,若域不为null且域的类源文件被 SingleChart
注解标记,
将会提取源文件中 dataZoom
下的注解并添加到 DuplexChart
AddVisualMap
只能用于 DuplexChart
的域 Field
,若域不为null且域的类源文件被 SingleChart
注解标记,
将会提取源文件中 visualMap
下的注解并添加到 DuplexChart
如何使用 Get Started
2
增加LineChart折线图
import cn.edu.gdut.zaoying.Option.series.line.DataArray; import cn.edu.gdut.zaoying.Option.series.line.NameString; import cn.edu.gdut.zaoying.SingleChart; @SingleChart(exportTo = "lineChart") public class LineChart { @NameString String name; @DataArray double[] data; }
3
调用简单图表处理器
import cn.edu.gdut.zaoying.Charts.CombinedChart; public class EChartsTest { public static void main(String[] args) { LineChart lineChart=new LineChart(); lineChart.name="线性表一"; lineChart.data=new double[]{1,2,3,4}; Object json=EChartsAnnotationProcessor.phraseSingleChart(lineChart); System.out.print(JSON.toJSONString(json)); } }
4
编写更复杂的组合图表
编写折线图二
import cn.edu.gdut.zaoying.Option.series.line.DataArray; import cn.edu.gdut.zaoying.Option.series.line.NameString; import cn.edu.gdut.zaoying.SingleChart; @SingleChart public class Line2Chart { @NameString String name; @DataArray double[] data; }
编写条形图
import cn.edu.gdut.zaoying.Option.series.bar.DataArray; import cn.edu.gdut.zaoying.Option.series.bar.NameString; import cn.edu.gdut.zaoying.SingleChart; @SingleChart public class BarChart { @NameString String name; @DataArray double[] data; }
CombinedChart组合图表
@DuplexChart public class CombinedChart { @TextString String title; @BackgroundColorHex(value = 0xfff) int backgroundColor; @AddSeries LineChart lineChart; @AddSeries Line2Chart line2Chart; @AddSeries BarChart barChart; public CombinedChart(String title) { this.title = title; lineChart = new LineChart(); lineChart.setName("折线图"); lineChart.setData(new double[]{1,2,3,4}); line2Chart = new Line2Chart(); line2Chart.setName("折线图二"); line2Chart.setData(new double[]{1,2,3,4}); barChart = new BarChart(); barChart.setName("条形图"); barChart.setData(new double[]{5,6,7,8}); } }
5
调用组合图表处理器
public class EChartsTest { public static void main(String[] args) { Object json=EChartsAnnotationProcessor.phraseDuplexChart(new CombinedChart("组合图表")); System.out.print(JSON.toJSONString(json)); } }
以上所述就是小编给大家介绍的《Git 项目推荐 | ECharts 的 Java 注解框架》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Git 项目推荐 | ECharts 的 Java 注解框架
- GitHub 提权项目推荐
- 项目推荐:Micro8
- 一周 GitHub 开源项目推荐
- Github项目推荐 | retinaface 人脸识别
- 阿里淘系优质开源项目推荐
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Essential C++中文版
[美] Stanley B. Lippman / 侯捷 / 华中科技大学出版社 / 2001-8 / 39.80元
书中以4个面向来表现C++的本质:procedural(程序性的)、generic(泛型的)、object-based(个别对象的)、object-oriented(面向对象的),全书围绕着一系列逐渐繁复的程序问题,以及用以解决这些问题的语言特性。循此方式,读者不只学到C++的函数和结构,也会学习到它们的设计目的和基本原理。一起来看看 《Essential C++中文版》 这本书的介绍吧!