Git 项目推荐 | ECharts 的 Java 注解框架

栏目: 编程工具 · 发布时间: 5年前

内容简介:按注解的参数个数分,可以分为两种:标记注解没有参数。如果被标记的元素为

ECharts的 Java 注解框架 EChartsAnnotation

用原生Java注解来映射ECharts的 Option 类,提供Annotation到 JSON 的转换功能。

ECharts Java 更高效、更快捷!扩展性更强!

思路 How it works

1 在后台使用Annotation来标注Bean类

2 注解处理器转换成JSON树

3 使用JSON系列化 工具 包(fastjson/gson)输出到前端页面

注解 Annotation

基于ECharts3.0制作 Option定义

从上述URL得到JSON文件总体上可以解析成树,除了series、dataZoom和visualMap三个节点需要特殊处理,

其他非叶子节点均可映射成文件系统的文件夹,而叶子节点则映射成Java源文件即注解文件。

Git 项目推荐 | ECharts 的 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

注解处理器专用的注解:

SingleChartDuplexChart 用来标记需要被转换成JSON的Java Bean类,

这两个注解不同之处在于处理 seriesdataZoomvisualMap 下面的注解时,

同一个类多次同个注解文件,前者把重复出现的注解合并处理;

后者通过 AddSeriesAddDataZoomAddVisualMap 三种注解提取被 SingleChart 标记的Java文件中的

seriesdataZoomvisualmap ,并添加到当前被 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

1 添加EChartsAnnotation到项目

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));
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

实用语义网

实用语义网

2009-2 / 59.00元

《实用语义网RDFS与OWL高效建模(英文版)》是语义网的入门教程,详细讲述语义网的核心内容的语言,包括语义网的概念、语义建模等。语义网的发展孕育着万维网及其应用的一场革命,作为语义网核心内容的语言:RDF和OWL,逐渐得到广泛的重视和应用。 《实用语义网RDFS与OWL高效建模(英文版)》对于任何对语义网感兴趣的专业技术人员都是十分难得的参考书。一起来看看 《实用语义网》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码