主类

每个Plugin都有一个主类实现了com.jihuayu.wordcount.api.Plugin接口,这个主类就是插件的路口。

获取命令介绍

可以通过向方法getCommandUsage的参数info添加String的方法添加你的方法介绍。

获取命令名字

可以通过方法getCommandName的返回值来指定命令名字。

  • 若返回null则表示只进行初始化,不出现在指令区。
  • 若返回“”代表无参数时执行该代码的。

设置命令执行代码

可以通过设置doCommand方法来设置执行时的代码,其中doCommand的参数为针对该指令传入的参数。

事件

WordCount-Plus默认自带了4个事件,分别是:

ReadyEvent

准备完成时触发。

ReadEvent

每次读取完成时触发。

ReadOverEvent

全部文本读取完成时触发。

WriteEvent

每次需要输出时触发。

自定义事件

当然,你也可以自定义事件。

示例

ReadyPlug

import com.jihuayu.wordcount.api.Plugin;
import com.jihuayu.wordcount.api.event.ReadyEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode; import java.util.List; public class ReadyPlug implements Plugin {
public ReadyPlug(){
EventBus.getDefault().register(this);
}
@Override
public void getCommandUsage(List<String> info) {
} @Override
public String getCommandName() {
return null;
} @Override
public void doCommand(String[] args) { }
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(ReadyEvent event){
System.out.println("hello");
}
}

ReadPlug

import com.jihuayu.wordcount.api.Plugin;
import com.jihuayu.wordcount.api.event.ReadEvent;
import com.jihuayu.wordcount.api.event.ReadOverEvent;
import org.greenrobot.eventbus.EventBus; import java.io.BufferedReader;
import java.io.FileReader;
import java.util.List; public class ReadPlug implements Plugin {
@Override
public void getCommandUsage(List<String> info) {
info.add("<file>:read from file");
} @Override
public String getCommandName() {
return "r";
} @Override
public void doCommand(String[]args) {
if(args.length>0){
String str = args[0];
FileReader fr= null;
try {
fr = new FileReader(str); BufferedReader br=new BufferedReader(fr);
String line="";
while ((line=br.readLine())!=null) {
EventBus.getDefault().post(new ReadEvent(line));
}
EventBus.getDefault().post(new ReadOverEvent());
br.close();
fr.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

[Java]如何制作一个WordCount-Plus的Plugin的更多相关文章

  1. java swing 制作一个登陆界面,亲测有效

    一.介绍 Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT ...

  2. Java编写ArrayBasic制作一个简单的酒店管理系统

    听老师讲了一些ArrayBasic的一些知识,让制作一个酒店管理系统,要求:显示酒店所有房间列表,预订房间.... 经过老师的指导写了一个代码,如下: import java.util.Scanner ...

  3. 【数据结构与算法】Java制作一个简单数组类

    bobo老师的玩转算法系列–玩转数据结构 简单记录 文章目录 不要小瞧数组 - 制作一个数组类 1 .使用Java中的数组 数组基础 简单使用 2.二次封装属于我们自己的数组 数组基础 制作属于我们自 ...

  4. 编写Java程序,使用菜单组件制作一个记事本编辑器

    返回本章节 返回作业目录 需求说明: 使用菜单组件制作一个记事本编辑器 实现思路: 创建记事本菜单工具栏JMenuBar. 创建多个菜单条JMenu. 创建多个菜单项JMenuItem. 将菜单添加至 ...

  5. 手把手制作一个简单的IDEA插件(环境搭建Demo篇)

    新建IDEA插件File --> new --> Project--> Intellij PlatForm Plugin-->Next-->填好项目名OK 编写插件新建工 ...

  6. 制作一个centos+jdk8+tomcatd9镜像

    docker解析:     1.登录docker             docker ecex –it 容器名/容器id /bin/bash         例如:             dock ...

  7. springboot2.x基础教程:动手制作一个starter包

    上一篇博客介绍了springboot自动装配的原理.springboot本身有丰富的spring-boot-starter-xx集成组件,这一篇趁热打铁加深理解,我们利用springboot自动装配的 ...

  8. 制作一个简洁的jquery插件

    原文:http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=401571467&idx=1&sn=08cb00963e6ef ...

  9. 使用apache-cxf-2.2.10来制作一个极简版WebService程序

    原想拿最新版cxf来制作的,无奈Apache的zip包总下不下来,国内的apache-cxf-2.2.10却一蹴而就,也就用了这个版本.下载地址是:http://pan.baidu.com/s/1td ...

随机推荐

  1. Spark入门到精通--(第七节)环境搭建(服务器搭建)

    Spark搭建集群比较繁琐,需要的内容比较多,这里主要从Centos.Hadoop.Hive.ZooKeeper.kafka的服务器环境搭建开始讲.其中Centos的搭建不具体说了,主要讲下集群的配置 ...

  2. L1-039. 古风排版

    L1-039. 古风排版 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<100),是每一列的字符数.第二行给出一 ...

  3. spring 数据库多数据源路由

    项目中需要根据不同业务进行分库,首先是将业务不同业务映射到不同过的数据库( biz --> db,可能存在多对一情况), 查看springjdbc源码发现AbstractRoutingDataS ...

  4. linux cp 拷贝文件或目录

    cp 拷贝文件或目录 默认不能拷贝目录 常用来备份: [root@MongoDB ~]# cp a.txt /tmp/ [root@MongoDB ~]# cp /root/a.txt /tmp/ c ...

  5. 深浅copy

    浅拷贝 只copy了一层 可哈希的变量改变则二者不同   不可哈希变量改变二者都改变深拷贝  全部都copy了 不论什么值改变 原值都改变呢 变量赋值.浅拷贝.深拷贝 1,创建变量 1.1不可变对象 ...

  6. (转)手工释放linux内存——/proc/sys/vm/drop_cache

    linux的内存查看: [root@localhost 0.1.0]# free -m                   total       used       free     shared ...

  7. 【Eclipse】-NO.163.Eclipse.1 -【Eclipse springboot 1.x 创建maven工程初始化报错】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  8. 北京大学Cousera学习笔记--8-计算导论与C语言基础--C的运算部分

    赋值运算符 1.两边类型不同:赋值时要进行类型转换,右边要转换到左边 2.长数赋值短数 最后的部分截断赋值给短数 3.短数赋给长数 数不变 4.符号位赋值 --计算机不区分符号位数字位,直接赋值 表达 ...

  9. 放弃antd table,基于React手写一个虚拟滚动的表格

    缘起 标题有点夸张,并不是完全放弃antd-table,毕竟在react的生态圈里,对国人来说,比较好用的PC端组件库,也就antd了.即便经历了2018年圣诞彩蛋事件,antd的使用者也不仅不减,反 ...

  10. 插播一则关于HTTP Headers详解~~~

    URL REQUEST : ------ 使用通讯录请求对象,构建URLLoader对象,并发出数据请求(对指定地址发出数据请求)   status code(状态码)------ 200(成功)-- ...