package com.dy.testServer.console; 
 | 
  
 | 
import java.io.PrintWriter; 
 | 
import java.net.InetAddress; 
 | 
import java.net.UnknownHostException; 
 | 
import java.util.Iterator; 
 | 
import java.util.Map; 
 | 
import java.util.Set; 
 | 
  
 | 
import com.dy.common.mw.channel.rmi.RmiConfigVo; 
 | 
import com.dy.common.mw.channel.rmi.RmiUnit; 
 | 
import com.dy.testServer.ServerProperties; 
 | 
import com.dy.testServer.forRmi.MwTestClientStatus; 
 | 
import com.dy.testServer.forRmi.Manager; 
 | 
  
 | 
public class Command { 
 | 
     
 | 
    private static final String[] commands ; 
 | 
    static{ 
 | 
        commands = new String[]{ 
 | 
                "config 查看配置信息",     
 | 
                "show 显示mwTest情况",     
 | 
                "start 启动mwTest建立TCP连接数据", 
 | 
                "report 启动mwTest RTU上报数据", 
 | 
                "exit 退出", 
 | 
        }; 
 | 
    } 
 | 
     
 | 
     
 | 
    public static boolean dealCommand(String command, PrintWriter prtWrt){ 
 | 
        boolean exit = false ; 
 | 
        if (command.equals("help")) { 
 | 
            outCommand(prtWrt); 
 | 
        } else if (command.equals("config")) { 
 | 
            config(prtWrt); 
 | 
        } else if (command.equals("show")) { 
 | 
            show(prtWrt); 
 | 
        } else if (command.equals("start")) { 
 | 
            startNetConnect(prtWrt); 
 | 
        } else if (command.equals("report")) { 
 | 
            startRtuReport(prtWrt); 
 | 
        } else if(command.equals("exit")){ 
 | 
            exit = true ; 
 | 
        } else { 
 | 
            outError(prtWrt); 
 | 
        } 
 | 
        return exit ; 
 | 
    } 
 | 
    private static void outCommand(PrintWriter prtWrt){ 
 | 
        prtWrt.println(""); 
 | 
        prtWrt.println("命令"); 
 | 
        for(String s : commands){ 
 | 
            prtWrt.println("  " + s); 
 | 
        } 
 | 
        prtWrt.println(""); 
 | 
    } 
 | 
    private static void outError(PrintWriter prtWrt){ 
 | 
        prtWrt.println(""); 
 | 
        prtWrt.println("命令不可识别!"); 
 | 
        prtWrt.println(""); 
 | 
    } 
 | 
     
 | 
    private static void config(PrintWriter prtWrt){ 
 | 
        prtWrt.println(""); 
 | 
        prtWrt.println("相关mwTest的配置"); 
 | 
        prtWrt.println("  模拟客户的RtuAddr起始号:" + ServerProperties.rtuAddrStart); 
 | 
        prtWrt.println("  模拟客户的RtuAddr截止号:" + ServerProperties.rtuAddrEnd); 
 | 
        prtWrt.println("  每个mwTest分配的RtuAddr数:" + ServerProperties.rtuAddrPerMwTest); 
 | 
        prtWrt.println("  通信中间件IP:" + ServerProperties.tcpServerIp); 
 | 
        prtWrt.println("  通信中间件端口:" + ServerProperties.tcpServerPort); 
 | 
        prtWrt.println("  mwTest发送数据间隔(秒):" + ServerProperties.sendInterval); 
 | 
        prtWrt.println("  mwTest每RtuAddr号发送数据次数:" + ServerProperties.sendTimes); 
 | 
        prtWrt.println("  mwTest每一轮次发送数据,其中包括心跳发送次数:" + ServerProperties.heartbeatTimes); 
 | 
        prtWrt.println("本服务RMI Server配置"); 
 | 
        String ip = null ; 
 | 
        try { 
 | 
            ip = InetAddress.getLocalHost().getHostAddress(); 
 | 
        } catch (UnknownHostException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        RmiConfigVo confVo = RmiUnit.getInstance().getAdapter().getConfig() ; 
 | 
        if(ip != null){ 
 | 
            prtWrt.println("  RMI Server:" + ip + ":" + confVo.port + "/" + confVo.context); 
 | 
        }else{ 
 | 
            prtWrt.println("  RMI Server:[ip]:" + confVo.port + "/" + confVo.context); 
 | 
        } 
 | 
        prtWrt.println(""); 
 | 
    } 
 | 
     
 | 
    private static void show(PrintWriter prtWrt){ 
 | 
        prtWrt.println(""); 
 | 
        prtWrt.println("当前已注册mwTest客户端数量:" + Manager.id2TokenMap.size()); 
 | 
        if(Manager.id2TokenMap.size() > 0){ 
 | 
            prtWrt.println("mwTest客户端及其工作信息"); 
 | 
            Set<Map.Entry<String, MwTestClientStatus>> set = Manager.token2ClientMap.entrySet() ; 
 | 
            Iterator<Map.Entry<String, MwTestClientStatus>> it = set.iterator() ; 
 | 
            Map.Entry<String, MwTestClientStatus> ent ; 
 | 
            while(it.hasNext()){ 
 | 
                ent = it.next() ; 
 | 
                prtWrt.println("  mwTest客户端(token=" + ent.getKey() + ")"); 
 | 
                MwTestClientStatus sta = ent.getValue() ; 
 | 
                if(sta != null){ 
 | 
                    if(sta.confVo != null){ 
 | 
                        prtWrt.println("    rtuAddr范围:" + sta.confVo.rtuAddrStart + "--" + sta.confVo.rtuAddrEnd); 
 | 
                    } 
 | 
                    if(sta.startVo != null){ 
 | 
                        prtWrt.println("    TCP连接:" + (sta.startVo.start?"已经开始":"未开始")); 
 | 
                    }else{ 
 | 
                        prtWrt.println("    TCP连接:未开始") ; 
 | 
                    } 
 | 
                    if(sta.reportVo != null){ 
 | 
                        prtWrt.println("    RTU上报数据:" + (sta.reportVo.report?"已经开始":"未开始")); 
 | 
                    }else{ 
 | 
                        prtWrt.println("    RTU上报数据:未开始") ; 
 | 
                    } 
 | 
                    if(sta.count != null){ 
 | 
                        prtWrt.println("    已经上报数据:" + sta.count + "条"); 
 | 
                    } 
 | 
                    if(sta.overCount != null){ 
 | 
                        prtWrt.println("    已经完成上报数据:" + sta.overCount + "台RTU"); 
 | 
                    } 
 | 
                    if(sta.over != null && sta.over){ 
 | 
                        prtWrt.println("    上报数据已经完成,共用时:" + sta.seconds + "秒"); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        prtWrt.println(""); 
 | 
    } 
 | 
     
 | 
    private static void startNetConnect(PrintWriter prtWrt){ 
 | 
        prtWrt.println(""); 
 | 
        prtWrt.println("  已经允许mwTest建立TCP连接"); 
 | 
        prtWrt.println(""); 
 | 
        Manager.enablemwTestStartTcpConnect = true ; 
 | 
    } 
 | 
  
 | 
    private static void startRtuReport(PrintWriter prtWrt){ 
 | 
        prtWrt.println(""); 
 | 
        prtWrt.println("  已经允许mwTest RTU上报数据了"); 
 | 
        prtWrt.println(""); 
 | 
        Manager.enablemwTestStartRtuReport = true ; 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |