• [Java]如何制作一个WordCount-Plus的Plugin


    主类

    每个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();
                }
            }
        }
    }
    
    
  • 相关阅读:
    Codeforces C. Almost Equal (数学规律)
    codeforce D. Shortest Cycle(floyd求最短环)
    Codeforces 1204D2. Kirk and a Binary String (hard version) (dp思路)
    codeforces 1204C Anna, Svyatoslav and Maps(floyd+dp)
    hdu 6214 Smallest Minimum Cut(最小割的最少边数)
    扩展欧几里得求解同余方程(poj 1061)
    poj 3281Dining(网络流 拆点)
    poj 3057(bfs+二分匹配)
    买鱼杂感
    geotrellis使用(十四)导出定制的GeoTiff
  • 原文地址:https://www.cnblogs.com/jhy16193335/p/10522431.html
Copyright © 2020-2023  润新知