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