AS插件开发:根据特定格式的文本自动生成Java Bean文件或字段

本文介绍了一款Android Studio插件的开发,该插件可以根据特定格式的文本自动生成Java Bean文件或字段,包括在已有实体中追加字段和根据文本新建实体的功能。文章详细阐述了开发流程,包括可视化界面设计、文本格式整理和代码生成过程。
摘要由CSDN通过智能技术生成

本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布

为什么要造轮子

在项目中,产品提出了新需求,开发们的开发流程一般是这样:

前后端根据需求讨论接口契约协议 ——> 后端发布契约 ——> 前后端各自按照契约编码 ——> 后端发布正式服务 ——> 前端调试接口

在讨论契约的过程中会产生很多新的字段、甚至是新的实体,前端要根据这些新字段、实体,原封不动的复制粘贴生成契约Java bean类,这项工作十分枯燥乏味!

作为一个程序猿,秉着能不重复我就偷懒的原则,就开始寻找满足我需求的AS插件,但是市场上大都是根据Json生成Java bean的插件(也可能是我搜的姿势不对……),一怒之下,就根据我们的契约格式撸了一发插件,同时也再练习一下插件开发的流程。

该插件已经上传市场:

File –> Settings –> Plugins –> Browse repositories…
这里写图片描述

演示效果

先来看看效果,该插件其实是两个插件集合,一种是在已有的Java Bean文件中生成字段,一种是生成Java Bean文件,分别对应在旧实体中追加字段新建实体两种场景。

先看看追加字段:

这里写图片描述

接着是新建实体:

这里写图片描述

这里需要注意,只有满足下面的契约格式,本插件才能正常工作。如果格式有异,我预留了接口,可以自己实现自家的格式解析。

契约格式:

Name Type Desc
name String 姓名
score String 分数

或者省略注释:

Name Type
name String
score String

下面开始进入开发正题,如果还有不清楚如何使用Intellij开发AS插件的同学,请左转先看:
Android Studio插件开发入门篇

下面详细讲解下两种模式,我会重点介绍追加字段,因为新建实体,本质上就是新建空文件然后再追加字段。

在已有实体中追加字段

开发流程1——可视化界面

首先基于我的需求,我的插件需要一个可视化界面,它大概长这样:

这里写图片描述

有一个面板用来粘贴契约文本,有两个按钮用来选择成员变量的类型,有一个选择:是否自动生成“serialVersionUID”。

下面新建一个对话框:
这里写图片描述

系统会自动生成对应的文件:
这里写图片描述

这里的form文件就相当于Android的Xml文件,需要什么控件就直接拖拽,对照我的草图,结构是这样:

这里写图片描述

由于对这些控件不熟悉,所以属性什么的只能一点一点摸索,不过整体上感觉和Android类似,没什么难度。

有了可视化界面,我们接着就要写事件监听,无非就是一些按钮的点击事件,和Android类似,这里不表,大家可参考源码。

最后在Action中弹出对话框:

GenerateDialog generateDialog = new GenerateDialog();
generateDialog.setOnClickListener(mClickListener);
generateDialog.setTitle("GenerateModelByString");
//默认设置Serializable为false,即不产生:“private static final long serialVersionUID = 1L;”
generateDialog.setCbSerializable(false);
//自动调整对话框大小
generateDialog.pack();
//设置对话框跟随当前windows窗口
generateDialog.setLocationRelativeTo(WindowManager.getInstance().getFrame(e.getProject()));
generateDialog.setVisible(true);

现在我们跑一下代码,看看效果:
这里写图片描述

跟我们预想的效果一样!现在架子已经搭好了,下面开始我们的表演~

开发流程2——整理文本格式

上面一节我们已经搭好了可视化界面,接下来就要思考:如何把粘贴过来的杂乱文本解析成有实际的代码格式。以我的需求为例,我需要做一个这样的格式转换:

契约长这样:

Name Type Desc
name Str
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值