public Hashtable collect_Data(
      NodeGatherIndicators alarmIndicatorsNode) { // Òª¸ÄΪAlarmIndicatorsNode alarmIndicatorsNode
    Hashtable returnHash = new Hashtable();
    Vector powerVector = new Vector();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (node == null) return null;
    try {

      Calendar date = Calendar.getInstance();
      Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(node.getIpAddress());
      if (ipAllData == null) ipAllData = new Hashtable();

      try {
        String temp = "0";
        String[][] valueArray = null;
        String[] oids = new String[] {"1.3.6.1.4.1.7564.30.2", "1.3.6.1.4.1.7564.30.3"};

        valueArray =
            SnmpUtils.getTableData(
                node.getIpAddress(), node.getCommunity(), oids, node.getSnmpversion(), 3, 1000);
        int flag = 0;
        if (valueArray != null) {
          for (int i = 0; i < valueArray.length; i++) {
            ArrayVPNSystem arrayVPNSystem = new ArrayVPNSystem();
            String connectionsPerSec = valueArray[i][0];
            String requestsPerSec = valueArray[i][1];

            arrayVPNSystem.setRequestsPerSec(Integer.parseInt(requestsPerSec));
            arrayVPNSystem.setConnectionsPerSec(Integer.parseInt(connectionsPerSec));

            arrayVPNSystem.setIpaddress(node.getIpAddress());
            arrayVPNSystem.setCollecttime(date);
            arrayVPNSystem.setType("NET");
            arrayVPNSystem.setSubtype("ArrayNetworks");
            SysLogger.info( // "cpuUtilization:"+cpuUtilization
                "   connectionsPerSec:"
                    + connectionsPerSec
                    + "  requestsPerSec :"
                    + requestsPerSec);
            powerVector.addElement(arrayVPNSystem);
          }
        }
      } catch (Exception e) {
      }
    } catch (Exception e) {
    }

    Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(node.getIpAddress());
    if (ipAllData == null) ipAllData = new Hashtable();
    ipAllData.put("VPNSystem", powerVector);
    ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    returnHash.put("VPNSystem", powerVector);
    return returnHash;
  }
 public boolean delete(String[] ids) {
   if (ids != null && ids.length > 0) {
     GgsciConfigDao ggscidao = new GgsciConfigDao();
     List list = ggscidao.loadAll();
     if (list == null) list = new ArrayList();
     ShareData.setDpconfiglist(list);
     clearRubbish(list);
   }
   return super.delete(ids);
 }
Example #3
0
 @Override
 public void loading() {
   NasConfigDao dao = new NasConfigDao();
   List list = null;
   try {
     list = dao.loadAll();
   } catch (Exception e) {
     e.printStackTrace();
   } finally {
     dao.close();
   }
   if (list == null) {
     list = new ArrayList();
   }
   ShareData.setNasconfiglist(list);
   clearRubbish(list);
   for (int i = 0; i < list.size(); i++) {
     NasConfig vo = (NasConfig) list.get(i);
     loadOne(vo);
   }
 }
  public void collect_data(String id, Hashtable gatherHash) {

    Hashtable data_ht = new Hashtable();
    String jvm_utilization = "0";
    try {
      ServerStream serverstream = new ServerStream();
      Hashtable returnVal = new Hashtable();
      String ipaddress = "";
      Tomcat node = new Tomcat();
      TomcatDao dao = new TomcatDao();
      try {
        node = (Tomcat) dao.findByID(id);
      } catch (Exception e) {
      } finally {
        dao.close();
      }
      try {
        com.afunms.polling.node.Tomcat tc = new com.afunms.polling.node.Tomcat();
        BeanUtils.copyProperties(tc, node);
        ipaddress = tc.getIpAddress();
        com.afunms.polling.node.Tomcat tnode =
            (com.afunms.polling.node.Tomcat) PollingEngine.getInstance().getTomcatByIP(ipaddress);
        Calendar date = Calendar.getInstance();
        Date cc = date.getTime();
        String tempsenddate = sdf.format(cc);
        // 初始化Tomcat服务的状态
        tnode.setLastTime(tempsenddate);
        tnode.setAlarm(false);
        tnode.getAlarmMessage().clear();
        tnode.setStatus(0);

        StringBuffer tmp = new StringBuffer();
        tmp.append(tc.getIpAddress());
        tmp.append(",");
        tmp.append(tc.getPort());
        tmp.append(",");
        tmp.append(tc.getUser());
        tmp.append(" , ");
        tmp.append(tc.getPassword());
        returnVal.put(String.valueOf(0), tmp.toString());
      } catch (Exception e) {
        e.printStackTrace();
      }

      String liststr = serverstream.validServer(returnVal);
      if ("".equals(liststr)) {

        try {
          com.afunms.polling.node.Tomcat tc = new com.afunms.polling.node.Tomcat();
          BeanUtils.copyProperties(tc, node);
          // if (data_ht==null){
          // 需要增加邮件服务所在的服务器是否能连通
          Host host = (Host) PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
          Vector ipPingData = (Vector) ShareData.getPingdata().get(node.getIpAddress());
          if (ipPingData != null) {
            Pingcollectdata pingdata = (Pingcollectdata) ipPingData.get(0);
            Calendar tempCal = (Calendar) pingdata.getCollecttime();
            Date cc = tempCal.getTime();
            String _time = sdf.format(cc);
            String lastTime = _time;
            String pingvalue = pingdata.getThevalue();
            if (pingvalue == null || pingvalue.trim().length() == 0) pingvalue = "0";
            double pvalue = new Double(pingvalue);
            if (pvalue == 0) {
              // 主机服务器连接不上***********************************************
              com.afunms.polling.node.Tomcat tnode =
                  (com.afunms.polling.node.Tomcat)
                      PollingEngine.getInstance().getTomcatByIP(ipaddress);
              tnode.setAlarm(true);
              tnode.setStatus(1);
              List alarmList = tnode.getAlarmMessage();
              if (alarmList == null) alarmList = new ArrayList();
              tnode.getAlarmMessage().add("TOMCAT服务停止");
              String sysLocation = "";
              try {
                SmscontentDao eventdao = new SmscontentDao();
                String eventdesc =
                    "TOMCAT服务("
                        + tnode.getAlias()
                        + " IP:"
                        + tnode.getAdminIp()
                        + ")"
                        + "的TOMCAT服务停止";
                eventdao.createEventWithReasion(
                    "poll",
                    tnode.getId() + "",
                    tnode.getAdminIp() + "(" + tnode.getAdminIp() + ")",
                    eventdesc,
                    3,
                    "tomcat",
                    "ping",
                    "所在的服务器连接不上");
              } catch (Exception e) {
                e.printStackTrace();
              }
            } else {
              com.afunms.polling.node.Tomcat tnode =
                  (com.afunms.polling.node.Tomcat)
                      PollingEngine.getInstance().getTomcatByIP(ipaddress);
              tnode.setAlarm(true);
              tnode.setStatus(3);
              List alarmList = tnode.getAlarmMessage();
              if (alarmList == null) alarmList = new ArrayList();
              tnode.getAlarmMessage().add("TOMCAT服务停止");
              Pingcollectdata hostdata = null;
              hostdata = new Pingcollectdata();
              hostdata.setIpaddress(ipaddress);
              Calendar date = Calendar.getInstance();
              hostdata.setCollecttime(date);
              hostdata.setCategory("TomcatPing");
              hostdata.setEntity("Utilization");
              hostdata.setSubentity("ConnectUtilization");
              hostdata.setRestype("dynamic");
              hostdata.setUnit("%");
              hostdata.setThevalue("0");
              TomcatDao tomcatdao = new TomcatDao();
              try {
                tomcatdao.createHostData(hostdata);
              } catch (Exception e) {
                e.printStackTrace();
              } finally {
                tomcatdao.close();
              }
            }

          } else {
            com.afunms.polling.node.Tomcat tnode =
                (com.afunms.polling.node.Tomcat)
                    PollingEngine.getInstance().getTomcatByIP(ipaddress);
            tnode.setAlarm(true);
            tnode.setStatus(3);
            List alarmList = tnode.getAlarmMessage();
            if (alarmList == null) alarmList = new ArrayList();
            tnode.getAlarmMessage().add("TOMCAT服务停止");
            Pingcollectdata hostdata = null;
            hostdata = new Pingcollectdata();
            hostdata.setIpaddress(ipaddress);
            Calendar date = Calendar.getInstance();
            hostdata.setCollecttime(date);
            hostdata.setCategory("TomcatPing");
            hostdata.setEntity("Utilization");
            hostdata.setSubentity("ConnectUtilization");
            hostdata.setRestype("dynamic");
            hostdata.setUnit("%");
            hostdata.setThevalue("0");
            TomcatDao tomcatdao = new TomcatDao();
            try {
              tomcatdao.createHostData(hostdata);
            } catch (Exception e) {
              e.printStackTrace();
            } finally {
              tomcatdao.close();
            }
          }
          // }
          createSMS("tomcat", tc);
        } catch (Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
      } else {
        Pingcollectdata hostdata = null;
        hostdata = new Pingcollectdata();
        hostdata.setIpaddress(ipaddress);
        Calendar date = Calendar.getInstance();
        hostdata.setCollecttime(date);
        hostdata.setCategory("TomcatPing");
        hostdata.setEntity("Utilization");
        hostdata.setSubentity("ConnectUtilization");
        hostdata.setRestype("dynamic");
        hostdata.setUnit("%");
        hostdata.setThevalue("100");
        TomcatDao tomcatdao = new TomcatDao();
        try {
          tomcatdao.createHostData(hostdata);
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          tomcatdao.close();
        }
      }
      String[] pos_s = liststr.split(",");
      for (int list_i = 0; list_i < pos_s.length - 1; list_i++) {
        String tmps = returnVal.get(pos_s[list_i]).toString();
        String[] serverinfo = tmps.split(",");
        serverstream.foundData(serverinfo[0], serverinfo[1], serverinfo[2], serverinfo[3]);
        data_ht = serverstream.data_ht;
        TomcatDao tomcatdao = new TomcatDao();
        Hashtable sendeddata = ShareData.getSendeddata();

        try {
          Calendar time = Calendar.getInstance();
          String lasttime = data_ht.get("mon_time").toString();
          String nexttime = data_ht.get("nexttime").toString();

          String server = data_ht.get("server").toString();
          String jvm = data_ht.get("jvm").toString();

          String ip = data_ht.get("ip").toString();
          String port = data_ht.get("port").toString();
          String portsum1 = data_ht.get("portsum1").toString();
          String portsum2 = data_ht.get("portsum2").toString();
          String portdetail1 = data_ht.get("portdetail1").toString();
          String portdetail2 = data_ht.get("portdetail2").toString();
          if (data_ht != null) {
            int jvm_memoryuiltillize = 0;

            String[] temjvm = jvm.split(",");
            double freememory = Double.parseDouble(temjvm[0].trim());
            double totalmemory = (double) Double.parseDouble(temjvm[1].trim());
            double maxmemory = (double) Double.parseDouble(temjvm[2].trim());

            jvm_memoryuiltillize = (int) Math.rint((totalmemory - freememory) * 100 / totalmemory);
            jvm_utilization = String.valueOf(jvm_memoryuiltillize);

            Pingcollectdata hostdata = null;
            hostdata = new Pingcollectdata();
            hostdata.setIpaddress(ip);
            Calendar date = Calendar.getInstance();
            hostdata.setCollecttime(date);
            hostdata.setCategory("tomcat_jvm");
            hostdata.setEntity("Utilization");
            hostdata.setSubentity("jvm_utilization");
            hostdata.setRestype("dynamic");
            hostdata.setUnit("%");
            hostdata.setThevalue(jvm_utilization);
            try {
              tomcatdao.createHostData(hostdata);

              if (sendeddata.containsKey("tomcat" + ":" + ip))
                sendeddata.remove("tomcat" + ":" + ip);
            } catch (Exception e) {
              e.printStackTrace();
            }
          }

        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          tomcatdao.close();
        }
      }
      try {
        data_ht.put("jvm_utilization", jvm_utilization);
        ShareData.setTomcatdata(node.getIpAddress(), data_ht);
      } catch (Exception ex) {
        ex.printStackTrace();
      }
      data_ht = null;
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
    }
  }
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    Hashtable returnHash = new Hashtable();
    Vector fanVector = new Vector();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (node == null) return returnHash;
    try {
      Interfacecollectdata interfacedata = new Interfacecollectdata();
      Calendar date = Calendar.getInstance();
      Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(node.getIpAddress());
      if (ipAllData == null) ipAllData = new Hashtable();

      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {

      }
      try {
        String[][] valueArray = null;
        String[] oids =
            new String[] {
              "1.3.6.1.4.1.116.5.11.4.1.1.7.1.1", // dkuRaidListIndexSerialNumber
              "1.3.6.1.4.1.116.5.11.4.1.1.7.1.4" // dkuHWEnvironment
            };
        valueArray =
            SnmpUtils.getTemperatureTableData(
                node.getIpAddress(),
                node.getCommunity(),
                oids,
                node.getSnmpversion(),
                node.getSecuritylevel(),
                node.getSecurityName(),
                node.getV3_ap(),
                node.getAuthpassphrase(),
                node.getV3_privacy(),
                node.getPrivacyPassphrase(),
                3,
                1000 * 30);
        int flag = 0;
        if (valueArray != null) {
          for (int i = 0; i < valueArray.length; i++) {
            String _value = valueArray[i][1];
            String index = valueArray[i][2];
            String num = valueArray[i][0];
            flag = flag + 1;
            List alist = new ArrayList();
            alist.add(index);
            alist.add(_value);
            alist.add(num);
            interfacedata = new Interfacecollectdata();
            interfacedata.setIpaddress(node.getIpAddress());
            interfacedata.setCollecttime(date);
            interfacedata.setCategory("Env");
            interfacedata.setEntity(index);
            interfacedata.setSubentity(num);
            interfacedata.setRestype("dynamic");
            interfacedata.setUnit("");
            interfacedata.setThevalue(_value);
            SysLogger.info(node.getIpAddress() + " 索引:" + index + " 环境状态: " + _value);
            fanVector.addElement(interfacedata);
          }
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    if (!(ShareData.getSharedata().containsKey(node.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) ipAllData = new Hashtable();
      if (fanVector != null && fanVector.size() > 0) ipAllData.put("eenv", fanVector);
      ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    } else {
      if (fanVector != null && fanVector.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress())).put("eenv", fanVector);
    }
    returnHash.put("env", fanVector);

    try {
      AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
      List list =
          alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
              String.valueOf(node.getId()), AlarmConstant.TYPE_STORAGE, "hds", "eenv");

      AlarmHelper helper = new AlarmHelper();
      Hashtable<String, EnvConfig> envHashtable =
          helper.getAlarmConfig(node.getIpAddress(), "eenv");
      for (int i = 0; i < list.size(); i++) {
        AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(i);
        // 对风扇值进行告警检测
        CheckEventUtil checkutil = new CheckEventUtil();
        if (fanVector.size() > 0) {
          for (int j = 0; j < fanVector.size(); j++) {
            Interfacecollectdata data = (Interfacecollectdata) fanVector.get(j);
            if (data != null) {
              EnvConfig config = envHashtable.get(data.getEntity());
              if (config != null && config.getEnabled() == 1) {
                alarmIndicatorsnode.setAlarm_level(config.getAlarmlevel());
                alarmIndicatorsnode.setAlarm_times(config.getAlarmtimes() + "");
                alarmIndicatorsnode.setLimenvalue0(config.getAlarmvalue() + "");
                checkutil.checkEvent(
                    node, alarmIndicatorsnode, data.getThevalue(), data.getSubentity());
              }
            }
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    fanVector = null;

    // 把采集结果生成sql
    HDSEnvEnvResultTosql tosql = new HDSEnvEnvResultTosql();
    tosql.CreateResultTosql(returnHash, node.getIpAddress());

    return returnHash;
  }
  /*
   * (non-Javadoc)
   *
   * @see com.dhcc.webnms.host.snmp.AbstractSnmp#collectData()
   */
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    Hashtable returnHash = new Hashtable();
    Vector hardwareVector = new Vector();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (node == null) return null;
    try {
      Systemcollectdata systemdata = null;
      Calendar date = Calendar.getInstance();
      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {
        SysLogger.info("HardWare collect:设备节点信息获取失败!");
        e.printStackTrace();
      }
      // -------------------------------------------------------------------------------------------HardWare
      // start
      try {
        final String[] desc = SnmpMibConstants.NetWorkMibHardwareDesc;
        final String[] chname = SnmpMibConstants.NetWorkMibHardwareChname;
        String[] oids =
            new String[] {
              "1.3.6.1.2.1.47.1.1.1.1.2.278",
              "1.3.6.1.2.1.47.1.1.1.1.2.279",
              "1.3.6.1.2.1.47.1.1.1.1.2.470",
              "1.3.6.1.2.1.47.1.1.1.1.2.471"
            };

        String[][] valueArray = null;
        try {
          valueArray = snmp.getTableData(node.getIpAddress(), node.getCommunity(), oids);
        } catch (Exception e) {
          valueArray = null;
        }
        if (valueArray != null && valueArray.length > 0) {
          for (int i = 0; i < valueArray.length; i++) {
            for (int j = 0; j < 6; j++) {
              systemdata = new Systemcollectdata();
              systemdata.setIpaddress(node.getIpAddress());
              systemdata.setCollecttime(date);
              systemdata.setCategory("device");
              systemdata.setEntity(desc[i]);
              systemdata.setSubentity(desc[j]);
              systemdata.setChname(chname[j]);
              systemdata.setRestype("static");
              systemdata.setUnit("");
              String value = valueArray[i][j];
              if (j == 0) {
                systemdata.setThevalue(value);
              } else systemdata.setThevalue(value);
              hardwareVector.addElement(systemdata);
            }
          }
        }
      } catch (Exception e) {
        // e.printStackTrace();
        SysLogger.info("HardWare collect:error!");
      }
      // -------------------------------------------------------------------------------------------system
      // end

      // -------------------------------------------------------------------------------------------mac
      // start
      // try{
      //
      // String[] oids =
      // new String[] {
      // "1.3.6.1.2.1.2.2.1.6"
      // };
      // String[][] valueArray = null;
      // try {
      // valueArray =
      // snmp.getTableData(node.getIpAddress(),node.getCommunity(),oids);
      // } catch(Exception e){
      // valueArray = null;
      // //SysLogger.error(node.getIpAddress() + "_WindowsSnmp");
      // }
      // systemdata=new Systemcollectdata();
      // systemdata.setIpaddress(node.getIpAddress());
      // systemdata.setCollecttime(date);
      // systemdata.setCategory("System");
      // systemdata.setEntity("MacAddr");
      // systemdata.setSubentity("MacAddr");
      // systemdata.setRestype("static");
      // systemdata.setUnit(" ");
      // if(valueArray != null){
      // for(int i=0;i<valueArray.length;i++){
      // String value=valueArray[i][0];
      // if (value == null || value.length()==0)continue;
      // systemdata.setThevalue(value);
      // break;
      // }
      // }
      // systemVector.addElement(systemdata);
      //
      // }
      // catch(Exception e){
      // //e.printStackTrace();
      // }
      // -------------------------------------------------------------------------------------------mac
      // end

    } catch (Exception e) {
      // returnHash=null;
      // e.printStackTrace();
      // return null;
    } finally {
      // System.gc();
    }

    //		Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(
    //				node.getIpAddress());
    //		if (ipAllData == null)
    //			ipAllData = new Hashtable();
    //		ipAllData.put("device", hardwareVector);
    //		ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    //		returnHash.put("device", hardwareVector);

    if (!(ShareData.getSharedata().containsKey(node.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) ipAllData = new Hashtable();
      if (hardwareVector != null && hardwareVector.size() > 0)
        ipAllData.put("device", hardwareVector);

      ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    } else {
      if (hardwareVector != null && hardwareVector.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress()))
            .put("device", hardwareVector);
    }
    returnHash.put("device", hardwareVector);

    return returnHash;
  }
  public void collect_data(String id, Hashtable gatherHash) {
    Emailmonitor_realtimeDao emailmonitor_realtimeDao = null;
    Emailmonitor_historyDao emailmonitor_historyDao = null;
    try {
      EmailConfigDao emailConfigDao = new EmailConfigDao();
      EmailMonitorConfig mailconfig = null;
      try {
        mailconfig = (EmailMonitorConfig) emailConfigDao.findByID(id);
        if (mailconfig.getMonflag() == 0) { // 过滤掉不监控的邮箱
          return;
        }
      } catch (Exception e) {

      } finally {
        emailConfigDao.close();
      }
      Calendar date = Calendar.getInstance();

      ReceiveMail receieveMail = new ReceiveMail();
      sendMail sendmail = new sendMail();

      try {
        emailmonitor_realtimeDao = new Emailmonitor_realtimeDao();

        Hashtable realHash = null;
        try {
          realHash = emailmonitor_realtimeDao.getAllReal();
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          emailmonitor_realtimeDao.close();
        }

        Emailmonitor_history emailmonitor_history = new Emailmonitor_history();
        Emailmonitor_realtime emailold = new Emailmonitor_realtime();
        Integer iscanconnected = new Integer(0);
        String reason = "";
        Mail mail = (Mail) PollingEngine.getInstance().getMailByID(mailconfig.getId());
        if (mail == null) {
          return;
        }
        if (mail != null) {
          mail.setStatus(0);
          mail.setAlarm(false);
          mail.getAlarmMessage().clear();
          Calendar _tempCal = Calendar.getInstance();
          Date _cc = _tempCal.getTime();
          String _time = sdf.format(_cc);
          mail.setLastTime(_time);
        }

        Integer email_id = mailconfig.getId();
        boolean old = false;
        String str = "";
        Integer smssign = new Integer(0);
        if (realHash != null && realHash.get(email_id) != null) {
          old = true;
          emailold = (Emailmonitor_realtime) realHash.get(email_id);
          smssign = emailold.getSms_sign();
        }
        boolean flag = true;
        boolean receieveflag = true;
        int intflag = 0;
        int intreceieveflag = 0;

        try {
          if (gatherHash.containsKey("send")) {
            try {
              if (configSendMail(sendmail, mailconfig)) {
                flag = sendmail.sendmail();
                // intflag = 1;
              }
            } catch (Exception ex) {
              flag = false;
              ex.printStackTrace();
            }
          }

          if (gatherHash.containsKey("receieve")) {
            try {
              String mailserver = "";
              //							if (mailconfig.getAddress().indexOf("mail")>=0){
              //								//用的是MAIL服务
              //								mailserver = mailconfig.getAddress();
              //							}else if (mailconfig.getAddress().indexOf("smtp")>=0){
              //								//用的是SMTP服务
              //								mailserver = "smtp"+mailconfig.getAddress().substring(4);
              //							}else{
              //								//用的是POP3服务
              //								mailserver = "pop3."+mailconfig.getAddress();
              //							}
              mailserver = mailconfig.getReceiveAddress();
              receieveflag =
                  receieveMail.GetReceieveMail(
                      mailserver, mailconfig.getUsername(), mailconfig.getPassword());
            } catch (Exception ex) {
              ex.printStackTrace();
            }
          }

          // System.out.println("flag:"+flag+"-----receieveflag:"+receieveflag);
          if (flag && receieveflag) {
            intflag = 1;
            intreceieveflag = 1;
            iscanconnected = 1;
            reason = "服务有效";
            if (sendeddata.containsKey("emailserver:" + mailconfig.getId())) {
              sendeddata.remove("emailserver:" + mailconfig.getId());
            }

          } else {
            if (flag == true && receieveflag == false) {
              // 邮件能发送但不能接收
              intflag = 1;
              reason = "邮件接收服务无效";
              Vector mailvector = new Vector();
              // 开始设置采集值实体
              Interfacecollectdata interfacedata = new Interfacecollectdata();
              interfacedata.setIpaddress(mail.getIpAddress());
              interfacedata.setCollecttime(date);
              interfacedata.setCategory("Mail");
              interfacedata.setEntity("Send");
              interfacedata.setSubentity(mail.getId() + "");
              interfacedata.setRestype("static");
              interfacedata.setUnit("");
              interfacedata.setThevalue(intflag + "");
              interfacedata.setChname("发送服务");
              mailvector.add(interfacedata);

              interfacedata = new Interfacecollectdata();
              interfacedata.setIpaddress(mail.getIpAddress());
              interfacedata.setCollecttime(date);
              interfacedata.setCategory("Mail");
              interfacedata.setEntity("Receieve");
              interfacedata.setSubentity(mail.getId() + "");
              interfacedata.setRestype("static");
              interfacedata.setUnit("");
              interfacedata.setThevalue(intreceieveflag + "");
              interfacedata.setChname("接收服务");
              mailvector.add(interfacedata);

              Hashtable collectHash = new Hashtable();
              collectHash.put("mail", mailvector);

              //							mail.setStatus(3);
              //							mail.setAlarm(true);
              //							List alarmList = mail.getAlarmMessage();
              //							if(alarmList == null)alarmList = new ArrayList();

              // createEvent(mailconfig, reason);
              try {
                AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
                List list =
                    alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                        String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
                for (int k = 0; k < list.size(); k++) {
                  AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(k);
                  // 对邮件服务值进行告警检测
                  CheckEventUtil checkutil = new CheckEventUtil();
                  checkutil.updateData(mail, collectHash, "service", "mail", alarmIndicatorsnode);
                  // }
                }
              } catch (Exception e) {
                e.printStackTrace();
              }
              // createEvent(mailconfig, reason);
            } else if (flag == false && receieveflag == true) {
              intreceieveflag = 1;
              // 邮件能接收但不能发送
              reason = "邮件发送服务无效";
              Vector mailvector = new Vector();
              // 开始设置采集值实体
              Interfacecollectdata interfacedata = new Interfacecollectdata();
              interfacedata.setIpaddress(mail.getIpAddress());
              interfacedata.setCollecttime(date);
              interfacedata.setCategory("Mail");
              interfacedata.setEntity("Send");
              interfacedata.setSubentity(mail.getId() + "");
              interfacedata.setRestype("static");
              interfacedata.setUnit("");
              interfacedata.setThevalue(intflag + "");
              interfacedata.setChname("发送服务");
              mailvector.add(interfacedata);

              interfacedata = new Interfacecollectdata();
              interfacedata.setIpaddress(mail.getIpAddress());
              interfacedata.setCollecttime(date);
              interfacedata.setCategory("Mail");
              interfacedata.setEntity("Receieve");
              interfacedata.setSubentity(mail.getId() + "");
              interfacedata.setRestype("static");
              interfacedata.setUnit("");
              interfacedata.setThevalue(intreceieveflag + "");
              interfacedata.setChname("接收服务");
              mailvector.add(interfacedata);

              Hashtable collectHash = new Hashtable();
              collectHash.put("mail", mailvector);

              //							mail.setStatus(3);
              //							mail.setAlarm(true);
              //							List alarmList = mail.getAlarmMessage();
              //							if(alarmList == null)alarmList = new ArrayList();

              // createEvent(mailconfig, reason);
              try {
                AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
                List list =
                    alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                        String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
                for (int k = 0; k < list.size(); k++) {
                  AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(k);
                  // 对邮件服务值进行告警检测
                  CheckEventUtil checkutil = new CheckEventUtil();
                  checkutil.updateData(mail, collectHash, "service", "mail", alarmIndicatorsnode);
                  // }
                }
              } catch (Exception e) {
                e.printStackTrace();
              }
              // createEvent(mailconfig, reason);
            } else {
              // 邮件服务停止
              // 需要增加邮件服务所在的服务器是否能连通
              // Host host =
              // (Host)PollingEngine.getInstance().getNodeByIP(mailconfig.getIpaddress());
              Vector ipPingData = (Vector) ShareData.getPingdata().get(mailconfig.getIpaddress());
              if (ipPingData != null) {
                Pingcollectdata pingdata = (Pingcollectdata) ipPingData.get(0);
                Calendar tempCal = (Calendar) pingdata.getCollecttime();
                Date cc = tempCal.getTime();
                String time = sdf.format(cc);
                String lastTime = time;
                String pingvalue = pingdata.getThevalue();
                if (pingvalue == null || pingvalue.trim().length() == 0) pingvalue = "0";
                double pvalue = new Double(pingvalue);
                if (pvalue == 0) {
                  // 主机服务器连接不上***********************************************
                  mail.setStatus(3);
                  mail.setAlarm(true);
                  // SysLogger.info(mail.getName()+"========================"+mail.isAlarm());
                  // dbnode.setStatus(3);
                  List alarmList = mail.getAlarmMessage();
                  if (alarmList == null) alarmList = new ArrayList();
                  mail.getAlarmMessage().add("邮件服务无效");
                  String sysLocation = "";
                  try {
                    SmscontentDao smsdao = new SmscontentDao();
                    String eventdesc =
                        "邮件服务("
                            + mailconfig.getName()
                            + " IP:"
                            + mailconfig.getAddress()
                            + ")"
                            + "的邮件服务停止";
                    smsdao.createEventWithReasion(
                        "poll",
                        mailconfig.getId() + "",
                        mailconfig.getName() + "(" + mailconfig.getAddress() + ")",
                        eventdesc,
                        3,
                        "mail",
                        "ping",
                        "所在的服务器连接不上");
                  } catch (Exception e) {
                    e.printStackTrace();
                  }
                } else {
                  //									mail.setStatus(3);
                  //									mail.setAlarm(true);
                  //									List alarmList = mail.getAlarmMessage();
                  //									if(alarmList == null)alarmList = new ArrayList();
                  //									mail.getAlarmMessage().add("邮件服务无效");
                  //									reason="邮件服务无效";
                  Vector mailvector = new Vector();
                  // 开始设置采集值实体
                  Interfacecollectdata interfacedata = new Interfacecollectdata();
                  interfacedata.setIpaddress(mail.getIpAddress());
                  interfacedata.setCollecttime(date);
                  interfacedata.setCategory("Mail");
                  interfacedata.setEntity("Send");
                  interfacedata.setSubentity(mail.getId() + "");
                  interfacedata.setRestype("static");
                  interfacedata.setUnit("");
                  interfacedata.setThevalue(intflag + "");
                  interfacedata.setChname("发送服务");
                  mailvector.add(interfacedata);

                  interfacedata = new Interfacecollectdata();
                  interfacedata.setIpaddress(mail.getIpAddress());
                  interfacedata.setCollecttime(date);
                  interfacedata.setCategory("Mail");
                  interfacedata.setEntity("Receieve");
                  interfacedata.setSubentity(mail.getId() + "");
                  interfacedata.setRestype("static");
                  interfacedata.setUnit("");
                  interfacedata.setThevalue(intreceieveflag + "");
                  interfacedata.setChname("接收服务");
                  mailvector.add(interfacedata);

                  Hashtable collectHash = new Hashtable();
                  collectHash.put("mail", mailvector);

                  //									mail.setStatus(3);
                  //									mail.setAlarm(true);

                  // createEvent(mailconfig, reason);
                  try {
                    AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
                    List list =
                        alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                            String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
                    for (int k = 0; k < list.size(); k++) {
                      AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(k);
                      // 对邮件服务值进行告警检测
                      CheckEventUtil checkutil = new CheckEventUtil();
                      checkutil.updateData(
                          mail, collectHash, "service", "mail", alarmIndicatorsnode);
                      // }
                    }
                  } catch (Exception e) {
                    e.printStackTrace();
                  }
                  // createEvent(mailconfig, reason);
                }

              } else {
                //								mail.setStatus(3);
                //								mail.setAlarm(true);
                //								List alarmList = mail.getAlarmMessage();
                //								if(alarmList == null)alarmList = new ArrayList();
                //								mail.getAlarmMessage().add("邮件服务无效");
                //								reason="邮件服务无效";
                Vector mailvector = new Vector();
                // 开始设置采集值实体
                Interfacecollectdata interfacedata = new Interfacecollectdata();
                interfacedata.setIpaddress(mail.getIpAddress());
                interfacedata.setCollecttime(date);
                interfacedata.setCategory("Mail");
                interfacedata.setEntity("Send");
                interfacedata.setSubentity(mail.getId() + "");
                interfacedata.setRestype("static");
                interfacedata.setUnit("");
                interfacedata.setThevalue(intflag + "");
                interfacedata.setChname("发送服务");
                mailvector.add(interfacedata);

                interfacedata = new Interfacecollectdata();
                interfacedata.setIpaddress(mail.getIpAddress());
                interfacedata.setCollecttime(date);
                interfacedata.setCategory("Mail");
                interfacedata.setEntity("Receieve");
                interfacedata.setSubentity(mail.getId() + "");
                interfacedata.setRestype("static");
                interfacedata.setUnit("");
                interfacedata.setThevalue(intreceieveflag + "");
                interfacedata.setChname("接收服务");
                mailvector.add(interfacedata);

                Hashtable collectHash = new Hashtable();
                collectHash.put("mail", mailvector);

                //								mail.setStatus(3);
                //								mail.setAlarm(true);

                // createEvent(mailconfig, reason);
                try {
                  AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
                  List list =
                      alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                          String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
                  for (int k = 0; k < list.size(); k++) {
                    AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(k);
                    // 对邮件服务值进行告警检测
                    CheckEventUtil checkutil = new CheckEventUtil();
                    checkutil.updateData(mail, collectHash, "service", "mail", alarmIndicatorsnode);
                    // }
                  }
                } catch (Exception e) {
                  e.printStackTrace();
                }
                // createEvent(mailconfig, reason);
              }
            }
          }
        } catch (Exception ex) {
          //					//不能进行邮件服务
          //					EventList event = new EventList();
          //					if (flag == true && receieveflag == false){
          //						intflag = 1;
          //						reason="邮件接收服务无效";
          //						mail.getAlarmMessage().add("邮件接收服务无效");
          //					}else if (flag == false && receieveflag == true){
          //						intreceieveflag = 1;
          //						reason="邮件发送服务无效";
          //						mail.getAlarmMessage().add("邮件发送服务无效");
          //					}
          //					Vector mailvector = new Vector();
          //					//开始设置采集值实体
          //					Interfacecollectdata interfacedata=new Interfacecollectdata();
          //					interfacedata.setIpaddress(mail.getIpAddress());
          //					interfacedata.setCollecttime(date);
          //					interfacedata.setCategory("Mail");
          //					interfacedata.setEntity("Send");
          //					interfacedata.setSubentity(mail.getId()+"");
          //					interfacedata.setRestype("static");
          //					interfacedata.setUnit("");
          //					interfacedata.setThevalue(intflag+"");
          //					interfacedata.setChname("发送服务");
          //					mailvector.add(interfacedata);
          //
          //					interfacedata=new Interfacecollectdata();
          //					interfacedata.setIpaddress(mail.getIpAddress());
          //					interfacedata.setCollecttime(date);
          //					interfacedata.setCategory("Mail");
          //					interfacedata.setEntity("Receieve");
          //					interfacedata.setSubentity(mail.getId()+"");
          //					interfacedata.setRestype("static");
          //					interfacedata.setUnit("");
          //					interfacedata.setThevalue(intreceieveflag+"");
          //					interfacedata.setChname("接收服务");
          //					mailvector.add(interfacedata);
          //
          //					Hashtable collectHash = new Hashtable();
          //					collectHash.put("mail", mailvector);
          //
          //					mail.setStatus(3);
          //					mail.setAlarm(true);
          //					List alarmList = mail.getAlarmMessage();
          //					if(alarmList == null)alarmList = new ArrayList();
          //
          //					createEvent(mailconfig, reason);
          //				    try{
          //						AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
          //						List list =
          // alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
          //						for(int k = 0 ; k < list.size() ; k ++){
          //							AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode)list.get(k);
          //							//对邮件服务值进行告警检测
          //							CheckEventUtil checkutil = new CheckEventUtil();
          //							checkutil.updateData(mail,collectHash,"service","mail",alarmIndicatorsnode);
          //							//}
          //						}
          //				    }catch(Exception e){
          //				    	e.printStackTrace();
          //				    }
        }
        // 保存进历史数据
        emailmonitor_history.setEmail_id(mailconfig.getId());
        emailmonitor_history.setIs_canconnected(iscanconnected);
        emailmonitor_history.setMon_time(Calendar.getInstance());
        emailmonitor_history.setReason(reason);
        emailmonitor_historyDao = new Emailmonitor_historyDao();
        try {
          emailmonitor_historyDao.save(emailmonitor_history);
        } catch (Exception e) {

        }
        if (sendeddata.containsKey("emailserver:" + mailconfig.getId())) {
          sendeddata.remove("emailserver:" + mailconfig.getId());
        }

        // 实时数据
        Emailmonitor_realtime emailmonitor_realtime = new Emailmonitor_realtime();
        emailmonitor_realtime.setEmail_id(mailconfig.getId());
        emailmonitor_realtime.setIs_canconnected(iscanconnected);
        emailmonitor_realtime.setMon_time(Calendar.getInstance());
        emailmonitor_realtime.setReason(reason);

        if (old == true) {
          emailmonitor_realtime.setId(emailold.getId());
          emailmonitor_realtime.setSms_sign(1);
        } else {
          emailmonitor_realtime.setSms_sign(smssign);
        }
        // 保存realtime
        if (old == true) {
          emailmonitor_realtimeDao = new Emailmonitor_realtimeDao();
          try {
            emailmonitor_realtimeDao.update(emailmonitor_realtime);
          } catch (Exception e) {

          } finally {
            emailmonitor_realtimeDao.close();
          }
        }
        if (old == false) {
          emailmonitor_realtimeDao = new Emailmonitor_realtimeDao();
          try {
            emailmonitor_realtimeDao.save(emailmonitor_realtime);
          } catch (Exception e) {

          } finally {
            emailmonitor_realtimeDao.close();
          }
        }

      } catch (Exception e) {
        e.printStackTrace();
      } finally {
        emailmonitor_historyDao.close();
        emailmonitor_realtimeDao.close();
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (emailmonitor_realtimeDao != null) {
        emailmonitor_historyDao.close();
      }
      if (emailmonitor_realtimeDao != null) {
        emailmonitor_realtimeDao.close();
      }
    }
  }
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    Hashtable returnHash = new Hashtable();
    Vector tempVector = new Vector();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (node == null) return returnHash;

    try {
      NetAppPlex netAppPlex = null;
      Calendar date = Calendar.getInstance();

      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {
        e.printStackTrace();
      }
      try {
        String[] oids =
            new String[] {
              ".1.3.6.1.4.1.789.1.6.11.1.1", // Plex索引
              ".1.3.6.1.4.1.789.1.6.11.1.2", // Plex标志名称
              ".1.3.6.1.4.1.789.1.6.11.1.3", // Plex所属Volume
              ".1.3.6.1.4.1.789.1.6.11.1.4", // Plex状态
              ".1.3.6.1.4.1.789.1.6.11.1.5", // plex 重建比例
            };

        String[][] valueArray = null;
        try {
          valueArray =
              SnmpUtils.getTableData(
                  node.getIpAddress(),
                  node.getCommunity(),
                  oids,
                  node.getSnmpversion(),
                  node.getSecuritylevel(),
                  node.getSecurityName(),
                  node.getV3_ap(),
                  node.getAuthpassphrase(),
                  node.getV3_privacy(),
                  node.getPrivacyPassphrase(),
                  3,
                  1000 * 30);
        } catch (Exception e) {
          valueArray = null;
        }
        if (valueArray != null) {
          for (int i = 0; i < valueArray.length; i++) {
            netAppPlex = new NetAppPlex();
            netAppPlex.setIpaddress(node.getIpAddress());
            netAppPlex.setCollectTime(date);
            netAppPlex.setPlexIndex(valueArray[i][0]);
            netAppPlex.setPlexName(valueArray[i][1]);
            netAppPlex.setPlexVolName(valueArray[i][2]);
            netAppPlex.setPlexStatus(valueArray[i][3]);
            netAppPlex.setPlexPercentResyncing(valueArray[i][4]);
            tempVector.addElement(netAppPlex);
          }
        }
      } catch (Exception e) {
        e.printStackTrace();
      }

    } catch (Exception e) {
      e.printStackTrace();
    }

    if (!(ShareData.getSharedata().containsKey(node.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) ipAllData = new Hashtable();
      if (tempVector != null && tempVector.size() > 0) ipAllData.put("plex", tempVector);
      ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    } else {
      if (tempVector != null && tempVector.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress())).put("plex", tempVector);
    }

    returnHash.put("plex", tempVector);

    tempVector = null;

    NetAppDataOperator op = new NetAppDataOperator();
    op.CreateResultTosql(returnHash, node.getIpAddress());

    return returnHash;
  }
  /* (non-Javadoc)
   * @see com.dhcc.webnms.host.snmp.AbstractSnmp#collectData()
   */
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    Hashtable returnHash = new Hashtable();
    Vector deviceVector = new Vector();
    List cpuList = new ArrayList();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    // 判断是否在采集时间段内
    if (ShareData.getTimegatherhash() != null) {
      if (ShareData.getTimegatherhash().containsKey(node.getId() + ":equipment")) {
        TimeGratherConfigUtil timeconfig = new TimeGratherConfigUtil();
        int _result = 0;
        _result =
            timeconfig.isBetween(
                (List) ShareData.getTimegatherhash().get(node.getId() + ":equipment"));
        if (_result == 1) {
          // SysLogger.info("########时间段内: 开始采集 "+node.getIpAddress()+" PING数据信息##########");
        } else if (_result == 2) {
          // SysLogger.info("########全天: 开始采集 "+node.getIpAddress()+" PING数据信息##########");
        } else {
          SysLogger.info("######## " + node.getIpAddress() + " 不在采集内存时间段内,退出##########");
          // 清除之前内存中产生的告警信息
          //    			    try{
          //    			    	//清除之前内存中产生的内存告警信息
          //						CheckEventUtil checkutil = new CheckEventUtil();
          //						checkutil.deleteEvent(node.getId()+":net:memory");
          //    			    }catch(Exception e){
          //    			    	e.printStackTrace();
          //    			    }
          return returnHash;
        }
      }
    }

    try {
      Devicecollectdata devicedata = null;
      Calendar date = Calendar.getInstance();

      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {

      }
      // -------------------------------------------------------------------------------------------device start
      try {
        String[] oids =
            new String[] {
              "1.3.6.1.2.1.25.3.2.1.1", // hrDeviceIndex
              "1.3.6.1.2.1.25.3.2.1.2", // hrDeviceType
              "1.3.6.1.2.1.25.3.2.1.3", // hrDeviceDescr
              "1.3.6.1.2.1.25.3.2.1.5"
            }; // hrDeviceStatus

        String[][] valueArray = null;
        try {
          // valueArray = SnmpUtils.getTableData(node.getIpAddress(), node.getCommunity(), oids,
          // node.getSnmpversion(), 3, 1000*30);
          valueArray =
              SnmpUtils.getTableData(
                  node.getIpAddress(),
                  node.getCommunity(),
                  oids,
                  node.getSnmpversion(),
                  node.getSecuritylevel(),
                  node.getSecurityName(),
                  node.getV3_ap(),
                  node.getAuthpassphrase(),
                  node.getV3_privacy(),
                  node.getPrivacyPassphrase(),
                  3,
                  1000 * 30);
        } catch (Exception e) {
          valueArray = null;
          // SysLogger.error(node.getIpAddress() + "_WindowsSnmp");
        }
        for (int i = 0; i < valueArray.length; i++) {
          devicedata = new Devicecollectdata();
          String devindex = valueArray[i][0];
          String type = valueArray[i][1];
          String name = valueArray[i][2];
          String status = valueArray[i][3];
          if (status == null) status = "";
          if (device_Status.containsKey(status)) status = (String) device_Status.get(status);
          devicedata.setDeviceindex(devindex);
          devicedata.setIpaddress(node.getIpAddress());
          devicedata.setName(name);
          devicedata.setStatus(status);
          devicedata.setType((String) device_Type.get(type));
          deviceVector.addElement(devicedata);
          // SysLogger.info(name+"######"+devindex+"######"+(String)device_Type.get(type)+"######"+status);

        }
      } catch (Exception e) {
        // e.printStackTrace();
      }
      // -------------------------------------------------------------------------------------------device end
    } catch (Exception e) {
      // returnHash=null;
      // e.printStackTrace();
      // return null;
    }

    //		Hashtable ipAllData = (Hashtable)ShareData.getSharedata().get(node.getIpAddress());
    //		if(ipAllData == null)ipAllData = new Hashtable();
    //		ipAllData.put("device",deviceVector);
    //	    ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    //	    returnHash.put("device",deviceVector);

    if (!(ShareData.getSharedata().containsKey(node.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) ipAllData = new Hashtable();
      if (deviceVector != null && deviceVector.size() > 0) ipAllData.put("device", deviceVector);

      ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    } else {
      if (deviceVector != null && deviceVector.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress())).put("device", deviceVector);
    }
    returnHash.put("device", deviceVector);

    String runmodel = PollingEngine.getCollectwebflag(); // 采集与访问模式
    if (!"0".equals(runmodel)) {
      // 采集与访问是分离模式,则不需要将监视数据写入临时表格
      // 把采集结果生成sql
      HostDatatempDeviceRttosql totempsql = new HostDatatempDeviceRttosql();
      totempsql.CreateResultTosql(returnHash, node);
    }

    return returnHash;
  }
  @SuppressWarnings("unchecked")
  public Hashtable collect_Data(NodeGatherIndicators nodeGatherIndicators) {
    WasConfig wasconf = null;
    String id = nodeGatherIndicators.getNodeid();
    SysLogger.info("#######################WebSphere Ping 开始采集###################################");

    try {
      WasConfigDao dao = new WasConfigDao();
      try {
        wasconf = (WasConfig) dao.findByID(id);
        SysLogger.info(
            "###############WebSphere   Ping  名称:"
                + wasconf.getName()
                + " ipaddress:"
                + wasconf.getIpaddress()
                + "#####################");
      } catch (Exception e) {
        e.printStackTrace();
      } finally {
        dao.close();
      }
      Hashtable hst = (Hashtable) ShareData.getWasdata().get(wasconf.getIpaddress());
      if (hst == null) {
        hst = new Hashtable();
      }
      UrlConncetWas conWas = new UrlConncetWas();
      boolean collectWasIsOK = false;
      // 采集数据
      try {
        String url =
            "http://"
                + wasconf.getIpaddress()
                + ":"
                + wasconf.getPortnum()
                + "/wasPerfTool/servlet/perfservlet?refreshConfig=true";
        System.out.println(url);
        collectWasIsOK = conWas.connectWasIsOK(wasconf.getIpaddress(), wasconf.getPortnum());
      } catch (Exception e) {
        e.printStackTrace();
      }
      String pingValue = "0";
      if (collectWasIsOK) {
        pingValue = "100";
        hst.put("ping", "100");
      } else {
        hst.put("ping", "0");
      }

      // 保存数据库
      Pingcollectdata hostdata = new Pingcollectdata();
      hostdata.setIpaddress(wasconf.getIpaddress());
      Calendar date = Calendar.getInstance();
      hostdata.setCollecttime(date);
      hostdata.setCategory("WasPing");
      hostdata.setEntity("Utilization");
      hostdata.setSubentity("ConnectUtilization");
      hostdata.setRestype("dynamic");
      hostdata.setUnit("%");
      hostdata.setThevalue(pingValue);
      WasConfigDao wasconfigdao = new WasConfigDao();
      try {
        wasconfigdao.createHostData(wasconf, hostdata);
      } catch (Exception e) {
        e.printStackTrace();
      } finally {
        wasconfigdao.close();
      }
      ShareData.getWasdata().put(wasconf.getIpaddress(), hst);
      // 告警,只告警PING值
      if (pingValue != null) {
        NodeUtil nodeUtil = new NodeUtil();
        NodeDTO nodeDTO = nodeUtil.conversionToNodeDTO(wasconf);
        // 判断是否存在此告警指标
        AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
        List list =
            alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                nodeDTO.getId() + "", nodeDTO.getType(), nodeDTO.getSubtype());
        CheckEventUtil checkEventUtil = new CheckEventUtil();
        for (int i = 0; i < list.size(); i++) {
          AlarmIndicatorsNode alarmIndicatorsNode = (AlarmIndicatorsNode) list.get(i);
          if ("ping".equalsIgnoreCase(alarmIndicatorsNode.getName())) {
            if (pingValue != null) {
              checkEventUtil.checkEvent(nodeDTO, alarmIndicatorsNode, pingValue);
            }
          }
        }
      }

    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }
  public void collect_data(String id, Hashtable gatherHash) {
    WasConfig wasconf = null;
    try {
      int serverflag = 0;
      String ipaddress = "";
      WasConfigDao dao = new WasConfigDao();
      try {
        wasconf = (WasConfig) dao.findByID(id);
      } catch (Exception e) {
        e.printStackTrace();
      } finally {
        dao.close();
      }
      // AdminClient5 wasadmin = new AdminClient5();
      UrlConncetWas conWas = new UrlConncetWas();
      Hashtable hst = new Hashtable();
      com.afunms.polling.node.Was _tnode =
          (com.afunms.polling.node.Was) PollingEngine.getInstance().getWasByID(wasconf.getId());

      Calendar _date = Calendar.getInstance();
      Date _cc = _date.getTime();
      String _tempsenddate = sdf.format(_cc);
      // 初始化Was对象的状态
      _tnode.setLastTime(_tempsenddate);
      _tnode.setAlarm(false);
      _tnode.getAlarmMessage().clear();
      _tnode.setStatus(0);

      if (gatherHash.containsKey("ping")) {
        // 对可用性进行检测
        boolean collectWasIsOK = false;
        try {
          collectWasIsOK = conWas.connectWasIsOK(wasconf.getIpaddress(), wasconf.getPortnum());
        } catch (Exception e) {
          // e.printStackTrace();
        }
        if (collectWasIsOK) {
          // 运行状态
          Pingcollectdata hostdata = null;
          hostdata = new Pingcollectdata();
          hostdata.setIpaddress(wasconf.getIpaddress());
          Calendar date = Calendar.getInstance();
          hostdata.setCollecttime(date);
          hostdata.setCategory("WasPing");
          hostdata.setEntity("Utilization");
          hostdata.setSubentity("ConnectUtilization");
          hostdata.setRestype("dynamic");
          hostdata.setUnit("%");
          hostdata.setThevalue("100");
          WasConfigDao wasconfigdao = new WasConfigDao();
          try {
            wasconfigdao.createHostData(wasconf, hostdata);
            if (wasdata.containsKey("was" + ":" + wasconf.getIpaddress()))
              wasdata.remove("was" + ":" + wasconf.getIpaddress());
          } catch (Exception e) {
            e.printStackTrace();
          } finally {
            wasconfigdao.close();
          }
          // 进行数据采集
          try {
            hst =
                conWas.ConncetWas(
                    wasconf.getIpaddress(),
                    String.valueOf(wasconf.getPortnum()),
                    "",
                    "",
                    wasconf.getVersion(),
                    gatherHash);
          } catch (Exception e) {

          }
        } else {
          // 依据配置判断是否需要告警
          //									if
          // (wlservers.containsKey(weblogicconf.getIpaddress()+":"+server.getServerRuntimeName()))
          //										createSMS(weblogicconf,server);

          try {
            // com.afunms.polling.node.Weblogic tc = new com.afunms.polling.node.Weblogic();
            // BeanUtils.copyProperties(tc, weblogicconf);
            // if (data_ht==null){
            // 需要增加邮件服务所在的服务器是否能连通
            Host host = (Host) PollingEngine.getInstance().getNodeByIP(wasconf.getIpaddress());
            Vector ipPingData = (Vector) ShareData.getPingdata().get(wasconf.getIpaddress());
            ipaddress = wasconf.getIpaddress();
            if (ipPingData != null) {
              Pingcollectdata pingdata = (Pingcollectdata) ipPingData.get(0);
              Calendar tempCal = (Calendar) pingdata.getCollecttime();
              Date cc = tempCal.getTime();
              String _time = sdf.format(cc);
              String lastTime = _time;
              String pingvalue = pingdata.getThevalue();
              if (pingvalue == null || pingvalue.trim().length() == 0) pingvalue = "0";
              double pvalue = new Double(pingvalue);
              if (pvalue == 0) {
                // 主机服务器连接不上***********************************************
                // com.afunms.polling.node.Weblogic
                // tnode=(com.afunms.polling.node.Weblogic)PollingEngine.getInstance().getWeblogicByIP(ipaddress);
                _tnode.setAlarm(true);
                _tnode.setStatus(1);
                List alarmList = _tnode.getAlarmMessage();
                if (alarmList == null) alarmList = new ArrayList();
                _tnode.getAlarmMessage().add("WAS服务停止");
                String sysLocation = "";
                Pingcollectdata hostdata = null;
                hostdata = new Pingcollectdata();
                hostdata.setIpaddress(ipaddress);
                Calendar date = Calendar.getInstance();
                hostdata.setCollecttime(date);
                hostdata.setCategory("WasPing");
                hostdata.setEntity("Utilization");
                hostdata.setSubentity("ConnectUtilization");
                hostdata.setRestype("dynamic");
                hostdata.setUnit("%");
                hostdata.setThevalue("0");
                WasConfigDao wasconfigdao = new WasConfigDao();
                try {
                  wasconfigdao.createHostData(wasconf, hostdata);
                  if (wasdata.containsKey("was" + ":" + wasconf.getIpaddress()))
                    wasdata.remove("was" + ":" + wasconf.getIpaddress());
                } catch (Exception e) {
                  e.printStackTrace();
                } finally {
                  wasconfigdao.close();
                }
                try {
                  SmscontentDao eventdao = new SmscontentDao();
                  String eventdesc =
                      "WAS服务(" + wasconf.getName() + " IP:" + wasconf.getIpaddress() + ")" + "停止";
                  eventdao.createEventWithReasion(
                      "poll",
                      _tnode.getId() + "",
                      _tnode.getAdminIp() + "(" + _tnode.getAdminIp() + ")",
                      eventdesc,
                      3,
                      "wasserver",
                      "ping",
                      "所在的服务器连接不上");
                } catch (Exception e) {
                  e.printStackTrace();
                }
              } else {
                // com.afunms.polling.node.Weblogic
                // tnode=(com.afunms.polling.node.Weblogic)PollingEngine.getInstance().getWeblogicByIP(ipaddress);
                _tnode.setAlarm(true);
                _tnode.setStatus(3);
                List alarmList = _tnode.getAlarmMessage();
                if (alarmList == null) alarmList = new ArrayList();
                _tnode.getAlarmMessage().add("WAS服务停止");
                Pingcollectdata hostdata = null;
                hostdata = new Pingcollectdata();
                hostdata.setIpaddress(ipaddress);
                Calendar date = Calendar.getInstance();
                hostdata.setCollecttime(date);
                hostdata.setCategory("WasPing");
                hostdata.setEntity("Utilization");
                hostdata.setSubentity("ConnectUtilization");
                hostdata.setRestype("dynamic");
                hostdata.setUnit("%");
                hostdata.setThevalue("0");
                WasConfigDao wasconfigdao = new WasConfigDao();
                try {
                  wasconfigdao.createHostData(wasconf, hostdata);
                  if (wasdata.containsKey("was" + ":" + wasconf.getIpaddress()))
                    wasdata.remove("was" + ":" + wasconf.getIpaddress());
                } catch (Exception e) {
                  e.printStackTrace();
                } finally {
                  wasconfigdao.close();
                }
              }

            } else {
              // com.afunms.polling.node.Weblogic
              // tnode=(com.afunms.polling.node.Weblogic)PollingEngine.getInstance().getWeblogicByIP(ipaddress);
              _tnode.setAlarm(true);
              _tnode.setStatus(3);
              List alarmList = _tnode.getAlarmMessage();
              if (alarmList == null) alarmList = new ArrayList();
              _tnode.getAlarmMessage().add("WAS服务停止");
              Pingcollectdata hostdata = null;
              hostdata = new Pingcollectdata();
              hostdata.setIpaddress(ipaddress);
              Calendar date = Calendar.getInstance();
              hostdata.setCollecttime(date);
              hostdata.setCategory("WasPing");
              hostdata.setEntity("Utilization");
              hostdata.setSubentity("ConnectUtilization");
              hostdata.setRestype("dynamic");
              hostdata.setUnit("%");
              hostdata.setThevalue("0");
              WasConfigDao wasconfigdao = new WasConfigDao();
              try {
                wasconfigdao.createHostData(wasconf, hostdata);
                if (wasdata.containsKey("was" + ":" + wasconf.getIpaddress()))
                  wasdata.remove("was" + ":" + wasconf.getIpaddress());
              } catch (Exception e) {
                e.printStackTrace();
              } finally {
                wasconfigdao.close();
              }
            }
            try {
              createSMS("wasserver", wasconf);
              serverflag = 1;
            } catch (Exception e) {
              e.printStackTrace();
            }
          } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
        }
      }
      //				try{
      //					/**
      //					 * Author by QuZhi
      //					 * 可以取到的指标模块名称
      //					 * JVM/JDBCProvider/SessionManager/SystemMetrics/DynaCache/TransactionService/ORB
      //					 * @return /ObjectPool/ThreadPool
      //					 */
      //					//	 com.afunms.common.util.ShareData.setWasdata("was"+":"+wasconf.getIpaddress(),hst);
      //				}catch(Exception ex){
      //					ex.printStackTrace();
      //				}
      if (hst != null) {
        ShareData.getWasdata().put(wasconf.getIpaddress(), hst);
      }
      hst = null;
    } catch (Exception exc) {
      exc.printStackTrace();
    }
  }
public class WasDataCollector {
  private Hashtable sendeddata = ShareData.getSendeddata();
  private Hashtable wasdata = ShareData.getWasdata();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  public WasDataCollector() {}

  public void collect_data(String id, Hashtable gatherHash) {
    WasConfig wasconf = null;
    try {
      int serverflag = 0;
      String ipaddress = "";
      WasConfigDao dao = new WasConfigDao();
      try {
        wasconf = (WasConfig) dao.findByID(id);
      } catch (Exception e) {
        e.printStackTrace();
      } finally {
        dao.close();
      }
      // AdminClient5 wasadmin = new AdminClient5();
      UrlConncetWas conWas = new UrlConncetWas();
      Hashtable hst = new Hashtable();
      com.afunms.polling.node.Was _tnode =
          (com.afunms.polling.node.Was) PollingEngine.getInstance().getWasByID(wasconf.getId());

      Calendar _date = Calendar.getInstance();
      Date _cc = _date.getTime();
      String _tempsenddate = sdf.format(_cc);
      // 初始化Was对象的状态
      _tnode.setLastTime(_tempsenddate);
      _tnode.setAlarm(false);
      _tnode.getAlarmMessage().clear();
      _tnode.setStatus(0);

      if (gatherHash.containsKey("ping")) {
        // 对可用性进行检测
        boolean collectWasIsOK = false;
        try {
          collectWasIsOK = conWas.connectWasIsOK(wasconf.getIpaddress(), wasconf.getPortnum());
        } catch (Exception e) {
          // e.printStackTrace();
        }
        if (collectWasIsOK) {
          // 运行状态
          Pingcollectdata hostdata = null;
          hostdata = new Pingcollectdata();
          hostdata.setIpaddress(wasconf.getIpaddress());
          Calendar date = Calendar.getInstance();
          hostdata.setCollecttime(date);
          hostdata.setCategory("WasPing");
          hostdata.setEntity("Utilization");
          hostdata.setSubentity("ConnectUtilization");
          hostdata.setRestype("dynamic");
          hostdata.setUnit("%");
          hostdata.setThevalue("100");
          WasConfigDao wasconfigdao = new WasConfigDao();
          try {
            wasconfigdao.createHostData(wasconf, hostdata);
            if (wasdata.containsKey("was" + ":" + wasconf.getIpaddress()))
              wasdata.remove("was" + ":" + wasconf.getIpaddress());
          } catch (Exception e) {
            e.printStackTrace();
          } finally {
            wasconfigdao.close();
          }
          // 进行数据采集
          try {
            hst =
                conWas.ConncetWas(
                    wasconf.getIpaddress(),
                    String.valueOf(wasconf.getPortnum()),
                    "",
                    "",
                    wasconf.getVersion(),
                    gatherHash);
          } catch (Exception e) {

          }
        } else {
          // 依据配置判断是否需要告警
          //									if
          // (wlservers.containsKey(weblogicconf.getIpaddress()+":"+server.getServerRuntimeName()))
          //										createSMS(weblogicconf,server);

          try {
            // com.afunms.polling.node.Weblogic tc = new com.afunms.polling.node.Weblogic();
            // BeanUtils.copyProperties(tc, weblogicconf);
            // if (data_ht==null){
            // 需要增加邮件服务所在的服务器是否能连通
            Host host = (Host) PollingEngine.getInstance().getNodeByIP(wasconf.getIpaddress());
            Vector ipPingData = (Vector) ShareData.getPingdata().get(wasconf.getIpaddress());
            ipaddress = wasconf.getIpaddress();
            if (ipPingData != null) {
              Pingcollectdata pingdata = (Pingcollectdata) ipPingData.get(0);
              Calendar tempCal = (Calendar) pingdata.getCollecttime();
              Date cc = tempCal.getTime();
              String _time = sdf.format(cc);
              String lastTime = _time;
              String pingvalue = pingdata.getThevalue();
              if (pingvalue == null || pingvalue.trim().length() == 0) pingvalue = "0";
              double pvalue = new Double(pingvalue);
              if (pvalue == 0) {
                // 主机服务器连接不上***********************************************
                // com.afunms.polling.node.Weblogic
                // tnode=(com.afunms.polling.node.Weblogic)PollingEngine.getInstance().getWeblogicByIP(ipaddress);
                _tnode.setAlarm(true);
                _tnode.setStatus(1);
                List alarmList = _tnode.getAlarmMessage();
                if (alarmList == null) alarmList = new ArrayList();
                _tnode.getAlarmMessage().add("WAS服务停止");
                String sysLocation = "";
                Pingcollectdata hostdata = null;
                hostdata = new Pingcollectdata();
                hostdata.setIpaddress(ipaddress);
                Calendar date = Calendar.getInstance();
                hostdata.setCollecttime(date);
                hostdata.setCategory("WasPing");
                hostdata.setEntity("Utilization");
                hostdata.setSubentity("ConnectUtilization");
                hostdata.setRestype("dynamic");
                hostdata.setUnit("%");
                hostdata.setThevalue("0");
                WasConfigDao wasconfigdao = new WasConfigDao();
                try {
                  wasconfigdao.createHostData(wasconf, hostdata);
                  if (wasdata.containsKey("was" + ":" + wasconf.getIpaddress()))
                    wasdata.remove("was" + ":" + wasconf.getIpaddress());
                } catch (Exception e) {
                  e.printStackTrace();
                } finally {
                  wasconfigdao.close();
                }
                try {
                  SmscontentDao eventdao = new SmscontentDao();
                  String eventdesc =
                      "WAS服务(" + wasconf.getName() + " IP:" + wasconf.getIpaddress() + ")" + "停止";
                  eventdao.createEventWithReasion(
                      "poll",
                      _tnode.getId() + "",
                      _tnode.getAdminIp() + "(" + _tnode.getAdminIp() + ")",
                      eventdesc,
                      3,
                      "wasserver",
                      "ping",
                      "所在的服务器连接不上");
                } catch (Exception e) {
                  e.printStackTrace();
                }
              } else {
                // com.afunms.polling.node.Weblogic
                // tnode=(com.afunms.polling.node.Weblogic)PollingEngine.getInstance().getWeblogicByIP(ipaddress);
                _tnode.setAlarm(true);
                _tnode.setStatus(3);
                List alarmList = _tnode.getAlarmMessage();
                if (alarmList == null) alarmList = new ArrayList();
                _tnode.getAlarmMessage().add("WAS服务停止");
                Pingcollectdata hostdata = null;
                hostdata = new Pingcollectdata();
                hostdata.setIpaddress(ipaddress);
                Calendar date = Calendar.getInstance();
                hostdata.setCollecttime(date);
                hostdata.setCategory("WasPing");
                hostdata.setEntity("Utilization");
                hostdata.setSubentity("ConnectUtilization");
                hostdata.setRestype("dynamic");
                hostdata.setUnit("%");
                hostdata.setThevalue("0");
                WasConfigDao wasconfigdao = new WasConfigDao();
                try {
                  wasconfigdao.createHostData(wasconf, hostdata);
                  if (wasdata.containsKey("was" + ":" + wasconf.getIpaddress()))
                    wasdata.remove("was" + ":" + wasconf.getIpaddress());
                } catch (Exception e) {
                  e.printStackTrace();
                } finally {
                  wasconfigdao.close();
                }
              }

            } else {
              // com.afunms.polling.node.Weblogic
              // tnode=(com.afunms.polling.node.Weblogic)PollingEngine.getInstance().getWeblogicByIP(ipaddress);
              _tnode.setAlarm(true);
              _tnode.setStatus(3);
              List alarmList = _tnode.getAlarmMessage();
              if (alarmList == null) alarmList = new ArrayList();
              _tnode.getAlarmMessage().add("WAS服务停止");
              Pingcollectdata hostdata = null;
              hostdata = new Pingcollectdata();
              hostdata.setIpaddress(ipaddress);
              Calendar date = Calendar.getInstance();
              hostdata.setCollecttime(date);
              hostdata.setCategory("WasPing");
              hostdata.setEntity("Utilization");
              hostdata.setSubentity("ConnectUtilization");
              hostdata.setRestype("dynamic");
              hostdata.setUnit("%");
              hostdata.setThevalue("0");
              WasConfigDao wasconfigdao = new WasConfigDao();
              try {
                wasconfigdao.createHostData(wasconf, hostdata);
                if (wasdata.containsKey("was" + ":" + wasconf.getIpaddress()))
                  wasdata.remove("was" + ":" + wasconf.getIpaddress());
              } catch (Exception e) {
                e.printStackTrace();
              } finally {
                wasconfigdao.close();
              }
            }
            try {
              createSMS("wasserver", wasconf);
              serverflag = 1;
            } catch (Exception e) {
              e.printStackTrace();
            }
          } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
        }
      }
      //				try{
      //					/**
      //					 * Author by QuZhi
      //					 * 可以取到的指标模块名称
      //					 * JVM/JDBCProvider/SessionManager/SystemMetrics/DynaCache/TransactionService/ORB
      //					 * @return /ObjectPool/ThreadPool
      //					 */
      //					//	 com.afunms.common.util.ShareData.setWasdata("was"+":"+wasconf.getIpaddress(),hst);
      //				}catch(Exception ex){
      //					ex.printStackTrace();
      //				}
      if (hst != null) {
        ShareData.getWasdata().put(wasconf.getIpaddress(), hst);
      }
      hst = null;
    } catch (Exception exc) {
      exc.printStackTrace();
    }
  }

  private Runnable createTask(final WasConfig wasconf) {
    return new Runnable() {
      public void run() {}
    };
  }

  public void createSMS(String was, WasConfig wasconf) {

    // 建立短信
    // 从内存里获得当前这个IP的PING的值
    Calendar date = Calendar.getInstance();
    try {
      if (!sendeddata.containsKey(was + ":" + wasconf.getId())) {
        // 若不在,则建立短信,并且添加到发送列表里
        Smscontent smscontent = new Smscontent();
        String time = sdf.format(date.getTime());
        smscontent.setLevel("2");
        smscontent.setObjid(wasconf.getId() + "");
        if ("wasserver".equals(was)) {
          smscontent.setMessage(
              "WAS" + " (" + wasconf.getName() + ":" + wasconf.getIpaddress() + ")" + "的服务停止!");
        }
        smscontent.setRecordtime(time);
        smscontent.setSubtype("wasserver");
        smscontent.setSubentity("ping");
        smscontent.setIp(wasconf.getIpaddress());
        // smscontent.setMessage("db&"+time+"&"+dbmonitorlist.getId()+"&"+db+"("+dbmonitorlist.getDbName()+" IP:"+dbmonitorlist.getIpAddress()+")"+"的数据库服务停止");
        // 发送短信
        SmscontentDao smsmanager = new SmscontentDao();
        smsmanager.sendURLSmscontent(smscontent);
        sendeddata.put(was + ":" + wasconf.getId(), date);
      } else {
        // 若在,则从已发送短信列表里判断是否已经发送当天的短信
        Calendar formerdate = (Calendar) sendeddata.get(was + ":" + wasconf.getId());
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date last = null;
        Date current = null;
        Calendar sendcalen = formerdate;
        Date cc = sendcalen.getTime();
        String tempsenddate = formatter.format(cc);

        Calendar currentcalen = date;
        cc = currentcalen.getTime();
        last = formatter.parse(tempsenddate);
        String currentsenddate = formatter.format(cc);
        current = formatter.parse(currentsenddate);

        long subvalue = current.getTime() - last.getTime();
        if (subvalue / (1000 * 60 * 60 * 24) >= 1) {
          // 超过一天,则再发信息
          Smscontent smscontent = new Smscontent();
          String time = sdf.format(date.getTime());
          smscontent.setLevel("2");
          smscontent.setObjid(wasconf.getId() + "");
          if ("wasserver".equals(was)) {
            smscontent.setMessage(
                "WAS" + " (" + wasconf.getName() + ":" + wasconf.getIpaddress() + ")" + "的服务停止!");
          }
          smscontent.setRecordtime(time);
          smscontent.setSubtype("wasserver");
          smscontent.setSubentity("ping");
          smscontent.setIp(wasconf.getIpaddress());
          // smscontent.setMessage("db&"+time+"&"+dbmonitorlist.getId()+"&"+db+"("+dbmonitorlist.getDbName()+" IP:"+dbmonitorlist.getIpAddress()+")"+"的数据库服务停止");
          // 发送短信
          SmscontentDao smsmanager = new SmscontentDao();
          smsmanager.sendURLSmscontent(smscontent);
          // 修改已经发送的短信记录
          sendeddata.put(was + ":" + wasconf.getId(), date);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
  @SuppressWarnings("unchecked")
  public Hashtable collect_Data(NodeGatherIndicators nodeGatherIndicators) {
    Hashtable returndata = new Hashtable();
    String htKey = "dbio";
    List dbmonitorlists = new ArrayList();
    dbmonitorlists = ShareData.getDBList();
    DBVo dbmonitorlist = new DBVo();
    if (dbmonitorlists != null && dbmonitorlists.size() > 0) {
      for (int i = 0; i < dbmonitorlists.size(); i++) {
        DBVo vo = (DBVo) dbmonitorlists.get(i);
        if (vo.getId() == Integer.parseInt(nodeGatherIndicators.getNodeid())) {
          dbmonitorlist = vo;
          break;
        }
      }
    }
    if (dbmonitorlist != null) {
      if (dbmonitorlist.getManaged() == 0) {
        // 如果未被管理,不采集,user信息为空
        return returndata;
      }
      String serverip = dbmonitorlist.getIpAddress();
      String[] args = new String[] {"name", "filename", "pyr", "pbr", "pyw", "pbw", "mon_time"};
      returndata = LogParser.parse(this, dbmonitorlist, htKey, args);

      // 更新内存
      if (!(ShareData.getSharedata()
          .containsKey(dbmonitorlist.getIpAddress() + ":" + dbmonitorlist.getId()))) {
        ShareData.getSharedata()
            .put(dbmonitorlist.getIpAddress() + ":" + dbmonitorlist.getId(), returndata);
      } else {
        Hashtable oracleHash =
            (Hashtable)
                ShareData.getSharedata()
                    .get(dbmonitorlist.getIpAddress() + ":" + dbmonitorlist.getId());
        oracleHash.put("dbio", returndata.get(htKey));
      }

      // ----------------------------------保存到数据库及告警 start
      Vector info_v = (Vector) returndata.get(htKey);
      if (info_v != null && !info_v.isEmpty()) {
        String hex = IpTranslation.formIpToHex(dbmonitorlist.getIpAddress());
        serverip = hex + ":" + dbmonitorlist.getId();

        try {
          Calendar tempCal = Calendar.getInstance();
          Date cc = tempCal.getTime();
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          String montime = sdf.format(cc);
          String deletesql = "delete from nms_oradbio where serverip='" + serverip + "'";
          GathersqlListManager.Addsql(deletesql);

          String name = null;
          String pyr = null;
          String pbr = null;
          String pyw = null;
          String pbw = null;

          String insertsql = null;

          for (int j = 0; j < info_v.size(); j++) {
            Hashtable dbiohash = (Hashtable) info_v.get(j);
            name = "";
            pyr = "";
            pbr = "";
            pyw = "";
            pbw = "";

            String filename = (String) dbiohash.get("filename");
            filename = filename.replaceAll("\\\\", "/");
            name = (String) dbiohash.get("name");
            pyr = (String) dbiohash.get("pyr");
            pbr = (String) dbiohash.get("pbr");
            pyw = (String) dbiohash.get("pyw");
            pbw = (String) dbiohash.get("pbw");

            insertsql =
                "insert into nms_oradbio(serverip, name, filename, pyr, pbr, pyw, pbw,mon_time) "
                    + "values('"
                    + serverip
                    + "','"
                    + name
                    + "','"
                    + filename
                    + "','"
                    + pyr
                    + "','"
                    + pbr
                    + "','"
                    + pyw
                    + "','"
                    + pbw;
            if ("mysql".equalsIgnoreCase(SystemConstant.DBType)) {
              insertsql = insertsql + "','" + montime + "')";
            } else if ("oracle".equalsIgnoreCase(SystemConstant.DBType)) {
              insertsql = insertsql + "',to_date('" + montime + "','YYYY-MM-DD HH24:MI:SS'))";
            }
            GathersqlListManager.Addsql(insertsql);
          }
          // ---------------------------------dbio不需告警

        } catch (Exception e) {
          e.printStackTrace();
        }

        // ----------------------------------保存到数据库及告警 end
      }
    }
    return returndata;
  }
  /* (non-Javadoc)
   * @see com.dhcc.webnms.host.snmp.AbstractSnmp#collectData()
   */
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    Hashtable returnHash = new Hashtable();
    Vector diskVector = new Vector();
    List cpuList = new ArrayList();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));

    try {
      Diskcollectdata diskdata = null;
      Calendar date = Calendar.getInstance();
      Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(node.getIpAddress());
      if (ipAllData == null) ipAllData = new Hashtable();

      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {

      }
      // -------------------------------------------------------------------------------------------disk start
      try {
        String[] oids =
            new String[] {
              "1.3.6.1.2.1.25.2.3.1.1",
              "1.3.6.1.2.1.25.2.3.1.2",
              "1.3.6.1.2.1.25.2.3.1.3",
              "1.3.6.1.2.1.25.2.3.1.4",
              "1.3.6.1.2.1.25.2.3.1.5",
              "1.3.6.1.2.1.25.2.3.1.6",
              "1.3.6.1.2.1.25.2.3.1.7"
            };

        String[][] valueArray = null;
        try {
          valueArray =
              SnmpUtils.getTableData(
                  node.getIpAddress(),
                  node.getCommunity(),
                  oids,
                  node.getSnmpversion(),
                  3,
                  1000 * 30);
        } catch (Exception e) {
          valueArray = null;
          SysLogger.error(node.getIpAddress() + "_WindowsDiskSnmp");
        }
        for (int i = 0; i < valueArray.length; i++) {
          diskdata = new Diskcollectdata();
          diskdata.setIpaddress(node.getIpAddress());
          diskdata.setCollecttime(date);
          diskdata.setCategory("Disk");
          diskdata.setEntity("Utilization");
          diskdata.setRestype("static");
          diskdata.setUnit("%");
          String descriptions = valueArray[i][2];
          String byteunit = valueArray[i][3];
          String desc = "";
          if (descriptions == null) descriptions = "";
          if (descriptions.indexOf("Memory") >= 0) {
          } else {
            if (descriptions.trim().length() > 2) {
              desc = descriptions.substring(0, 3);
            }
          }
          if (descriptions.indexOf("\\") >= 0) {
            desc = desc.replace("\\", "/");
          }
          diskdata.setSubentity(desc);
          float value = 0.0f;
          String svb4 = valueArray[i][4];
          String svb5 = valueArray[i][5];
          int allsize = Integer.parseInt(svb4.trim());
          int used = Integer.parseInt(svb5.trim());
          if (allsize != 0) {
            value = used * 100.0f / allsize;
          } else {
            value = 0.0f;
          }
          diskdata.setThevalue(Float.toString(value));

          if (diskdata.getSubentity().equals("Physical Memory")) {
          } else if (diskdata.getSubentity().equals("Virtual Memory")) {
          } else {
            if (diskdata.getSubentity().trim().length() > 0) {
              // SysLogger.info(diskdata.getSubentity()+"===="+diskdata.getThevalue());
              diskVector.addElement(diskdata);
            }
          }

          diskdata = new Diskcollectdata();
          diskdata.setIpaddress(node.getIpAddress());
          diskdata.setCollecttime(date);
          diskdata.setCategory("Disk");
          diskdata.setEntity("AllSize");
          diskdata.setRestype("static");
          diskdata.setSubentity(desc);
          float size = 0.0f;
          size = allsize * Long.parseLong(byteunit) * 1.0f / 1024 / 1024;
          String unit = "";
          if (size >= 1024.0f) {
            size = size / 1024;
            diskdata.setUnit("G");
            unit = "G";
          } else {
            diskdata.setUnit("M");
            unit = "M";
          }
          diskdata.setThevalue(Float.toString(size));
          if (diskdata.getSubentity().equals("Virtual Memory")) {}

          if (!diskdata.getSubentity().equals("Physical Memory")
              && !diskdata.getSubentity().equals("Virtual Memory")
              && diskdata.getSubentity().trim().length() > 0) {
            diskVector.addElement(diskdata);
          }
          diskdata = new Diskcollectdata();
          diskdata.setIpaddress(node.getIpAddress());
          diskdata.setCollecttime(date);
          diskdata.setCategory("Disk");
          diskdata.setEntity("UsedSize");
          diskdata.setRestype("static");
          diskdata.setSubentity(desc);
          size = used * Long.parseLong(byteunit) * 1.0f / 1024 / 1024;
          if ("G".equals(unit)) {
            size = size / 1024;
            diskdata.setUnit("G");
          } else {
            diskdata.setUnit("M");
          }
          diskdata.setThevalue(Float.toString(size));
          if (!diskdata.getSubentity().equals("Physical Memory")
              && !diskdata.getSubentity().equals("Virtual Memory")
              && diskdata.getSubentity().trim().length() > 0) {
            diskVector.addElement(diskdata);
          }
          try {
            String diskinc = "0.0";
            float pastutil = 0.0f;
            Vector disk_v = (Vector) ipAllData.get("disk");
            if (disk_v != null && disk_v.size() > 0) {
              for (int si = 0; si < disk_v.size(); si++) {
                Diskcollectdata disk_data = (Diskcollectdata) disk_v.elementAt(si);
                if ((desc).equals(disk_data.getSubentity())
                    && "Utilization".equals(disk_data.getEntity())) {
                  pastutil = Float.parseFloat(disk_data.getThevalue());
                }
              }
            } else {
              pastutil = value;
            }
            if (pastutil == 0) {
              pastutil = value;
            }
            if (value - pastutil > 0) {
              diskinc = (value - pastutil) + "";
            }
            // System.out.println("diskinc------------------"+diskinc);
            diskdata = new Diskcollectdata();
            diskdata.setIpaddress(node.getIpAddress());
            diskdata.setCollecttime(date);
            diskdata.setCategory("Disk");
            diskdata.setEntity("UtilizationInc"); // 利用增长率百分比
            diskdata.setSubentity(desc);
            diskdata.setRestype("dynamic");
            diskdata.setUnit("%");
            diskdata.setThevalue(diskinc);
            if (diskdata.getSubentity().equals("Physical Memory")
                || diskdata.getSubentity().equals("Virtual Memory")) {

            } else {
              if (diskdata.getSubentity().trim().length() > 0) {

                diskVector.addElement(diskdata);
              }
            }
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      } catch (Exception e) {
        // e.printStackTrace();
      }
      // --------------------------------------------------------------------------------------disk
      // end
    } catch (Exception e) {
      // returnHash=null;
      // e.printStackTrace();
      // return null;
    }

    //		Hashtable ipAllData = new Hashtable();
    //		try{
    //			ipAllData = (Hashtable)ShareData.getSharedata().get(node.getIpAddress());
    //		}catch(Exception e){
    //
    //		}
    //		if(ipAllData == null)ipAllData = new Hashtable();
    //		ipAllData.put("disk",diskVector);
    //	    ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    //	    returnHash.put("disk", diskVector);

    if (!(ShareData.getSharedata().containsKey(node.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) ipAllData = new Hashtable();
      if (diskVector != null && diskVector.size() > 0) ipAllData.put("disk", diskVector);

      ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    } else {
      if (diskVector != null && diskVector.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress())).put("disk", diskVector);
    }
    returnHash.put("disk", diskVector);

    // 进行磁盘告警检测
    // SysLogger.info("### 开始运行检测磁盘是否告警### ... ###");
    try {
      AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
      List list =
          alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
              String.valueOf(node.getId()), AlarmConstant.TYPE_HOST, "windows");
      for (int i = 0; i < list.size(); i++) {
        AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(i);
        // SysLogger.info("alarmIndicatorsnode name ======"+alarmIndicatorsnode.getName());
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("diskperc")) {
          CheckEventUtil checkutil = new CheckEventUtil();
          checkutil.checkDisk(node, diskVector, alarmIndicatorsnode);
          break;
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    // 进行磁盘告警检测
    // SysLogger.info("### 开始运行检测磁盘是否告警### ... ###");
    try {
      AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
      List list =
          alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
              String.valueOf(node.getId()), AlarmConstant.TYPE_HOST, "windows");
      for (int i = 0; i < list.size(); i++) {
        AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(i);
        // SysLogger.info("alarmIndicatorsnode name ======"+alarmIndicatorsnode.getName());
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("diskinc")) {
          CheckEventUtil checkutil = new CheckEventUtil();
          checkutil.checkDisk(node, diskVector, alarmIndicatorsnode);
          break;
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    // 把采集结果生成sql
    HostdiskResultosql tosql = new HostdiskResultosql();
    tosql.CreateResultTosql(returnHash, node.getIpAddress());

    HostDatatempDiskRttosql temptosql = new HostDatatempDiskRttosql();
    temptosql.CreateResultTosql(returnHash, node);

    return returnHash;
  }
  /* (non-Javadoc)
   * @see com.dhcc.webnms.host.snmp.AbstractSnmp#collectData()
   */
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    Hashtable returnHash = new Hashtable();
    Vector temperatureVector = new Vector();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (node == null) return null;
    try {
      Interfacecollectdata interfacedata = new Interfacecollectdata();
      Calendar date = Calendar.getInstance();
      Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(node.getIpAddress());
      if (ipAllData == null) ipAllData = new Hashtable();

      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {

      }
      try {
        // -------------------------------------------------------------------------------------------温度 start
        String temp = "0";
        // if(host.getSysOid().startsWith("1.3.6.1.4.1.9.")){
        String[][] valueArray = null;
        String[] oids =
            new String[] {
              "1.3.6.1.4.1.3320.2.1.78", // bdenvTestPt1Descr
              "1.3.6.1.4.1.3320.2.1.79" // bdenvTestPt1Measure
            };
        valueArray =
            SnmpUtils.getTemperatureTableData(
                node.getIpAddress(),
                node.getCommunity(),
                oids,
                node.getSnmpversion(),
                3,
                1000 * 30);
        if (valueArray != null) {
          for (int i = 0; i < valueArray.length; i++) {
            String _value = valueArray[i][1];
            String index = valueArray[i][2];
            String desc = valueArray[i][0];
            int value = 0;
            if (_value != null) {
              value = Integer.parseInt(_value);
              if (value > 0) {
                // flag = flag +1;
                List alist = new ArrayList();
                alist.add(index);
                alist.add(_value);
                alist.add(desc);
                // 内存
                // temperatureList.add(alist);
                interfacedata = new Interfacecollectdata();
                interfacedata.setIpaddress(node.getIpAddress());
                interfacedata.setCollecttime(date);
                interfacedata.setCategory("Temperature");
                interfacedata.setEntity(index);
                interfacedata.setSubentity(desc);
                interfacedata.setRestype("dynamic");
                interfacedata.setUnit("度");
                interfacedata.setThevalue(_value + "");
                SysLogger.info(node.getIpAddress() + " 温度: " + _value);
                temperatureVector.addElement(interfacedata);
              }
            }
            // SysLogger.info(host.getIpAddress()+"  "+index+"   value="+value);
          }
        }
        // }
        // cpuVector.add(3, temperatureList);
      } catch (Exception e) {
      }
      // -------------------------------------------------------------------------------------------温度 end
    } catch (Exception e) {
    }

    //		Hashtable ipAllData = (Hashtable)ShareData.getSharedata().get(node.getIpAddress());
    //		if(ipAllData == null)ipAllData = new Hashtable();
    //		ipAllData.put("temperature",temperatureVector);
    //	    ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    //	    returnHash.put("temperature", temperatureVector);

    if (!(ShareData.getSharedata().containsKey(node.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) ipAllData = new Hashtable();
      if (temperatureVector != null && temperatureVector.size() > 0)
        ipAllData.put("temperature", temperatureVector);
      ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    } else {
      if (temperatureVector != null && temperatureVector.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress()))
            .put("temperature", temperatureVector);
    }
    returnHash.put("temperature", temperatureVector);

    temperatureVector = null;
    //	    ipAllData=null;

    // 把采集结果生成sql
    NetTemperatureResultTosql tosql = new NetTemperatureResultTosql();
    tosql.CreateResultTosql(returnHash, node.getIpAddress());
    NetDatatempTemperatureRtosql temptosql = new NetDatatempTemperatureRtosql();
    temptosql.CreateResultTosql(returnHash, node);

    return returnHash;
  }
  /** @author nielin modify at 2010-01-08 */
  public int writeXml(int flag) {
    int done = 0;
    // 需要做分布式判断
    String runmodel = PollingEngine.getCollectwebflag();
    try {
      I_HostLastCollectData hostlastmanager = new HostLastCollectDataManager();
      Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(ipaddress);

      Vector vector = new Vector();
      String[] netInterfaceItem = {
        "index",
        "ifDescr",
        "ifSpeed",
        "ifAdminStatus",
        "ifOperStatus",
        "OutBandwidthUtilHdx",
        "InBandwidthUtilHdx"
      };
      try {
        if ("0".equals(runmodel)) {
          // 采集与访问是集成模式
          vector = hostlastmanager.getInterface_share(ipaddress, netInterfaceItem, "index", "", "");
        } else {
          // 采集与访问是分离模式
          vector = hostlastmanager.getInterface(ipaddress, netInterfaceItem, "index", "", "");
        }
      } catch (Exception e) {
        e.printStackTrace();
        return done;
      }
      try {
        _fis =
            new FileInputStream(
                ResourceCenter.getInstance().getSysPath()
                    + "panel/model/"
                    + oid
                    + "_"
                    + imageType
                    + ".jsp");
      } catch (Exception e) {
        e.printStackTrace();
        _fis.close();
        return done;
      }
      _fis.skip(headBytes.getBytes().length);
      _builder = new SAXBuilder();
      _doc = _builder.build(_fis);
      _root = _doc.getRootElement();
      _nodes = _root.getChild("nodes");

      List list = _nodes.getChildren();

      PortconfigDao dao = new PortconfigDao();

      try {

        for (int i = 0; i < list.size(); i++) {
          Element eleNode = (Element) list.get(i);
          if (eleNode.getChildText("index") == null) break;
          int index = Integer.valueOf(eleNode.getChildText("index")).intValue();
          String x = eleNode.getChildText("x");
          String y = eleNode.getChildText("y");
          String img = eleNode.getChildText("img");
          String direction = eleNode.getChildText("direction");
          String ifname = "";
          String OutBandwidthUtilHdx = "0";
          String InBandwidthUtilHdx = "0";
          String portuse = "";
          if (vector != null && vector.size() > 0) {
            for (int m = 0; m < vector.size(); m++) {
              String[] strs = (String[]) vector.get(m);
              String _ifname = strs[1];
              String _index = strs[0];
              String opstatus = strs[4];
              OutBandwidthUtilHdx = strs[5];
              InBandwidthUtilHdx = strs[6];

              Portconfig portconfig = null;
              try {
                portconfig = dao.getPanelByipandindex(ipaddress, index + "");
              } catch (Exception e) {

              }
              if (portconfig != null
                  && portconfig.getLinkuse() != null
                  && portconfig.getLinkuse().trim().length() > 0) {
                portuse = portconfig.getLinkuse();
              }

              // SysLogger.info(ipaddress+"====ifOperStatus====="+strs[4]);
              if (Integer.parseInt(_index) == index) {
                ifname = _ifname;
                if ("down".equalsIgnoreCase(opstatus)) {
                  // DOWN
                  if ("1".equalsIgnoreCase(direction)) {
                    // 向上的端口
                    img = "image/up_down_gray.gif";
                  } else {
                    // 向下的端口
                    img = "image/down_down_gray.gif";
                  }
                } else {
                  // UP
                  if ("1".equalsIgnoreCase(direction)) {
                    // 向上的端口
                    img = "image/up_up_green.gif";
                  } else {
                    // 向下的端口
                    img = "image/down_up_green.gif";
                  }
                }
                break;
              }
            }
          }
          addNode(
              index + "",
              InBandwidthUtilHdx,
              OutBandwidthUtilHdx,
              img,
              ipaddress,
              ifname,
              portuse,
              x,
              y);
        }

      } catch (Exception e) {
        e.printStackTrace();
      } finally {
        dao.close();
      }

      Format format = Format.getCompactFormat();
      format.setEncoding("GB2312");
      format.setIndent("	");
      serializer = new XMLOutputter(format);
      // SysLogger.info("path==="+fullPath);
      fos = new FileOutputStream(fullPath);
      fos.write(headBytes.getBytes());
      serializer.output(doc, fos);
      fos.close();
      done = 1;
    } catch (Exception e) {
      done = 0;
      e.printStackTrace();
      SysLogger.error("Error in XmlOperator.close()", e);
    }
    return done;
  }
  /* (non-Javadoc)
   * @see com.dhcc.webnms.host.snmp.AbstractSnmp#collectData()
   */
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    // yangjun
    Hashtable returnHash = new Hashtable();
    Vector queueVector = new Vector();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (node == null) return null;

    try {
      Calendar date = Calendar.getInstance();

      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {

      }
      try {
        // -------------------------------------------------------------------------------------------start
        //				  INTEGER {queueSpaceAvailable(1),队列有足够的空间
        //					  queueSpaceShortage(2),队列接近满
        //					  queueFull(3)队列已满
        //					  }
        if (node.getSysOid().startsWith("1.3.6.1.4.1.15497.")) {
          String[][] valueArray = null;
          String[] oids = new String[] {"1.3.6.1.4.1.15497.1.1.1.5"};
          // valueArray = SnmpUtils.getTemperatureTableData(node.getIpAddress(),
          // node.getCommunity(), oids, node.getSnmpversion(), 3, 5000);
          valueArray =
              SnmpUtils.getTemperatureTableData(
                  node.getIpAddress(),
                  node.getCommunity(),
                  oids,
                  node.getSnmpversion(),
                  node.getSecuritylevel(),
                  node.getSecurityName(),
                  node.getV3_ap(),
                  node.getAuthpassphrase(),
                  node.getV3_privacy(),
                  node.getPrivacyPassphrase(),
                  3,
                  1000 * 30);
          if (valueArray != null) {
            for (int i = 0; i < valueArray.length; i++) {
              String value = valueArray[i][0];
              if (value != null && Integer.parseInt(value) > 0) {
                Memorycollectdata memorycollectdata = new Memorycollectdata();
                memorycollectdata.setIpaddress(node.getIpAddress());
                memorycollectdata.setCollecttime(date);
                memorycollectdata.setCategory("QueueStatue");
                memorycollectdata.setEntity("statue");
                memorycollectdata.setSubentity("队列状态");
                memorycollectdata.setRestype("dynamic");
                memorycollectdata.setUnit("");
                memorycollectdata.setThevalue(value);
                queueVector.addElement(memorycollectdata);
              }
            }
          }
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
      // -------------------------------------------------------------------------------------------内存 end
    } catch (Exception e) {
      // returnHash=null;
      e.printStackTrace();
      // return null;
    }

    Hashtable ipAllData = new Hashtable();
    try {
      ipAllData = (Hashtable) ShareData.getSharedata().get(node.getIpAddress());
    } catch (Exception e) {

    }
    if (ipAllData == null) ipAllData = new Hashtable();
    if (queueVector != null && queueVector.size() > 0) ipAllData.put("queuestatue", queueVector);
    ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    returnHash.put("queuestatue", queueVector);
    return returnHash;
  }
/**
 * @author Administrator
 *     <p>To change the template for this generated type comment go to
 *     Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
public class ArrayVPNSystemSnmp extends SnmpMonitor {
  private Hashtable sendeddata = ShareData.getProcsendeddata();
  java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  /** */
  public ArrayVPNSystemSnmp() {}

  public void collectData(Node node, MonitoredItem item) {}

  public void collectData(HostNode node) {}

  public Hashtable collect_Data(
      NodeGatherIndicators alarmIndicatorsNode) { // Òª¸ÄΪAlarmIndicatorsNode alarmIndicatorsNode
    Hashtable returnHash = new Hashtable();
    Vector powerVector = new Vector();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (node == null) return null;
    try {

      Calendar date = Calendar.getInstance();
      Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(node.getIpAddress());
      if (ipAllData == null) ipAllData = new Hashtable();

      try {
        String temp = "0";
        String[][] valueArray = null;
        String[] oids = new String[] {"1.3.6.1.4.1.7564.30.2", "1.3.6.1.4.1.7564.30.3"};

        valueArray =
            SnmpUtils.getTableData(
                node.getIpAddress(), node.getCommunity(), oids, node.getSnmpversion(), 3, 1000);
        int flag = 0;
        if (valueArray != null) {
          for (int i = 0; i < valueArray.length; i++) {
            ArrayVPNSystem arrayVPNSystem = new ArrayVPNSystem();
            String connectionsPerSec = valueArray[i][0];
            String requestsPerSec = valueArray[i][1];

            arrayVPNSystem.setRequestsPerSec(Integer.parseInt(requestsPerSec));
            arrayVPNSystem.setConnectionsPerSec(Integer.parseInt(connectionsPerSec));

            arrayVPNSystem.setIpaddress(node.getIpAddress());
            arrayVPNSystem.setCollecttime(date);
            arrayVPNSystem.setType("NET");
            arrayVPNSystem.setSubtype("ArrayNetworks");
            SysLogger.info( // "cpuUtilization:"+cpuUtilization
                "   connectionsPerSec:"
                    + connectionsPerSec
                    + "  requestsPerSec :"
                    + requestsPerSec);
            powerVector.addElement(arrayVPNSystem);
          }
        }
      } catch (Exception e) {
      }
    } catch (Exception e) {
    }

    Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(node.getIpAddress());
    if (ipAllData == null) ipAllData = new Hashtable();
    ipAllData.put("VPNSystem", powerVector);
    ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    returnHash.put("VPNSystem", powerVector);
    return returnHash;
  }

  //	public static void main(String[] args){
  //		ArrayVPNSystemSnmp arrayVPNCountSnmp = new ArrayVPNSystemSnmp();
  //		Host node = new Host();
  //		node.setIpAddress("10.204.3.254");
  //		node.setCommunity("oavpn-1");
  //		node.setSnmpversion(1);
  //		Hashtable returnHash = arrayVPNCountSnmp.collect_Data(node);
  //		System.out.println(returnHash);
  //	}

}
  /* (non-Javadoc)
   * @see com.dhcc.webnms.host.snmp.AbstractSnmp#collectData()
   */
  public Hashtable collect_Data(NodeGatherIndicators nodeGatherIndicators) {
    // yangjun
    Hashtable returnHash = new Hashtable();
    Vector cpuVector = new Vector();
    List cpuList = new ArrayList();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(nodeGatherIndicators.getNodeid()));
    if (node == null) return returnHash;
    // HostNode host = (HostNode)node;
    // 判断是否在采集时间段内
    if (ShareData.getTimegatherhash() != null) {
      if (ShareData.getTimegatherhash().containsKey(node.getId() + ":equipment")) {
        TimeGratherConfigUtil timeconfig = new TimeGratherConfigUtil();
        int _result = 0;
        _result =
            timeconfig.isBetween(
                (List) ShareData.getTimegatherhash().get(node.getId() + ":equipment"));
        if (_result == 1) {
          // SysLogger.info("########时间段内: 开始采集 "+node.getIpAddress()+" PING数据信息##########");
        } else if (_result == 2) {
          // SysLogger.info("########全天: 开始采集 "+node.getIpAddress()+" PING数据信息##########");
        } else {
          SysLogger.info("######## " + node.getIpAddress() + " 不在采集CPU时间段内,退出##########");
          // 清除之前内存中产生的告警信息
          try {
            // 清除之前内存中产生的CPU告警信息
            NodeDTO nodedto = null;
            NodeUtil nodeUtil = new NodeUtil();
            nodedto = nodeUtil.creatNodeDTOByHost(node);
            CheckEventUtil checkutil = new CheckEventUtil();
            checkutil.deleteEvent(
                node.getId() + "", nodedto.getType(), nodedto.getSubtype(), "cpu", null);
          } catch (Exception e) {
            e.printStackTrace();
          }
          return returnHash;
        }
      }
    }

    try {
      // System.out.println("Start collect data as ip "+host);
      CPUcollectdata cpudata = null;
      Calendar date = Calendar.getInstance();

      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {

      }
      // -------------------------------------------------------------------------------------------cpu start
      int result = 0;

      try {
        String temp = "0";
        String[] oids = new String[] {"1.3.6.1.4.1.171.12.1.1.6.3"};
        String[][] valueArray = null;
        // valueArray = SnmpUtils.getCpuTableData(node.getIpAddress(), node.getCommunity(), oids,
        // node.getSnmpversion(), 3, 1000*30);
        valueArray =
            SnmpUtils.getTemperatureTableData(
                node.getIpAddress(),
                node.getCommunity(),
                oids,
                node.getSnmpversion(),
                node.getSecuritylevel(),
                node.getSecurityName(),
                node.getV3_ap(),
                node.getAuthpassphrase(),
                node.getV3_privacy(),
                node.getPrivacyPassphrase(),
                3,
                1000 * 30);
        int allvalue = 0;
        int flag = 0;

        if (valueArray != null) {
          for (int i = 0; i < valueArray.length; i++) {
            String _value = valueArray[i][0];
            String index = valueArray[i][1];

            int value = 0;
            value = Integer.parseInt(_value);
            allvalue = allvalue + Integer.parseInt(_value);
            // if(value >0){
            flag = flag + 1;
            List alist = new ArrayList();
            alist.add(index);
            alist.add(_value);
            cpuList.add(alist);
            // }
            // SysLogger.info(host.getIpAddress()+"  "+index+"   value="+value);
          }
        }

        if (flag > 0) {

          int intvalue = (allvalue / flag);
          temp = intvalue + "";
          // SysLogger.info(node.getIpAddress()+"获取的cpu=== "+allvalue/flag);
        }

        if (temp == null) {
          result = 0;
        } else {
          try {
            if (temp.equalsIgnoreCase("noSuchObject")) {
              result = 0;
            } else result = Integer.parseInt(temp);
          } catch (Exception ex) {
            ex.printStackTrace();
            result = 0;
          }
        }
        cpudata = new CPUcollectdata();
        cpudata.setIpaddress(node.getIpAddress());
        cpudata.setCollecttime(date);
        cpudata.setCategory("CPU");
        cpudata.setEntity("Utilization");
        cpudata.setSubentity("Utilization");
        cpudata.setRestype("dynamic");
        cpudata.setUnit("%");
        cpudata.setThevalue(result + "");

        cpuVector.addElement(cpudata);

      } catch (Exception e) {
        // e.printStackTrace();
      }
      // -------------------------------------------------------------------------------------------cpu end
    } catch (Exception e) {
      // returnHash=null;
      // e.printStackTrace();
      // return null;
    }

    //		Hashtable ipAllData = new Hashtable();
    //		try{
    //			ipAllData = (Hashtable)ShareData.getSharedata().get(node.getIpAddress());
    //		}catch(Exception e){
    //
    //		}
    //		if(ipAllData == null)ipAllData = new Hashtable();
    //		if(cpuVector != null && cpuVector.size()>0)ipAllData.put("cpu",cpuVector);
    //		if(cpuList != null && cpuList.size()>0)ipAllData.put("cpulist",cpuList);
    //	    ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    //	    returnHash.put("cpu", cpuVector);

    if (!(ShareData.getSharedata().containsKey(node.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) ipAllData = new Hashtable();
      if (cpuVector != null && cpuVector.size() > 0) ipAllData.put("cpu", cpuVector);
      if (cpuList != null && cpuList.size() > 0) ipAllData.put("cpulist", cpuList);
      ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    } else {
      if (cpuVector != null && cpuVector.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress())).put("cpu", cpuVector);
      if (cpuList != null && cpuList.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress())).put("cpulist", cpuList);
    }
    returnHash.put("cpu", cpuVector);

    // 对CPU值进行告警检测
    Hashtable collectHash = new Hashtable();
    collectHash.put("cpu", cpuVector);
    try {
      if (cpuVector != null && cpuVector.size() > 0) {
        for (int i = 0; i < cpuVector.size(); i++) {
          CPUcollectdata cpucollectdata = (CPUcollectdata) cpuVector.get(0);
          if ("Utilization".equals(cpucollectdata.getEntity())) {
            CheckEventUtil checkutil = new CheckEventUtil();
            checkutil.updateData(node, nodeGatherIndicators, cpucollectdata.getThevalue());
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    cpuVector = null;
    cpuList = null;

    // 把结果转换成sql
    NetcpuResultTosql tosql = new NetcpuResultTosql();
    tosql.CreateResultTosql(returnHash, node.getIpAddress());
    String runmodel = PollingEngine.getCollectwebflag(); // 采集与访问模式
    if (!"0".equals(runmodel)) {
      // 采集与访问是分离模式,则不需要将监视数据写入临时表格
      NetHostDatatempCpuRTosql totempsql = new NetHostDatatempCpuRTosql();
      totempsql.CreateResultTosql(returnHash, node);
    }

    return returnHash;
  }
  /*
   *
   * 从内存和数据库表里获取每个IP的端口信息,存入端口配置表里
   */
  public void fromLastToOraspaceconfig() throws Exception {
    List list = new ArrayList();
    List list1 = new ArrayList();
    List shareList = new ArrayList();
    Hashtable oraspacehash = new Hashtable();
    Session session = null;
    Vector configV = new Vector();
    IpTranslation tranfer = new IpTranslation();
    try {
      // 从ORASPACCE配置表里获取列表
      rs = conn.executeQuery("select * from system_oraspaceconf order by ipaddress");
      while (rs.next()) list1.add(loadFromRS(rs));
      if (list1 != null && list1.size() > 0) {
        for (int i = 0; i < list1.size(); i++) {
          Oraspaceconfig oraspaceconfig = (Oraspaceconfig) list1.get(i);
          // IP:表空间名称

          oraspacehash.put(
              oraspaceconfig.getIpaddress() + ":" + oraspaceconfig.getSpacename(), oraspaceconfig);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    try {

      // 从内存中得到所有ORASPACCE采集信息
      Hashtable sharedata = ShareData.getOraspacedata();

      // 从数据库得到监视ORASPACCE列表
      DBDao dbdao = new DBDao();
      DBTypeDao typedao = new DBTypeDao();
      DBTypeVo typevo = typedao.findByDbtype("oracle");
      shareList = dbdao.getDbByTypeMonFlag(typevo.getId(), 1);
      if (shareList != null && shareList.size() > 0) {
        for (int i = 0; i < shareList.size(); i++) {
          //					OraclePartsDao oracleDao=null;
          try {
            DBVo dbmonitorlist = (DBVo) shareList.get(i);
            //						 oracleDao=new OraclePartsDao();
            //						List<OracleEntity> oracles=oracleDao.findOracleParts(dbmonitorlist.getId());
            //						for(OracleEntity ora:oracles){
            //
            //						}
            if (sharedata.get(dbmonitorlist.getIpAddress() + ":" + dbmonitorlist.getId()) != null) {
              Vector tableinfo_v =
                  (Vector)
                      sharedata.get(dbmonitorlist.getIpAddress() + ":" + dbmonitorlist.getId());
              if (tableinfo_v == null) continue;
              Hashtable spaces = new Hashtable();
              spaces.put("ip", dbmonitorlist.getIpAddress() + ":" + dbmonitorlist.getId());
              spaces.put("tableinfo_v", tableinfo_v);
              list.add(spaces);
            }
          } catch (Exception e) {
            e.printStackTrace();
          } finally {
            //						if(oracleDao!=null)
            //						  oracleDao.close();
          }
        }
      }
      // 判断采集到的ORASPACCE信息是否已经在ORASPACCE配置表里已经存在,若不存在则加入
      if (list != null && list.size() > 0) {
        for (int i = 0; i < list.size(); i++) {
          Hashtable spaces = (Hashtable) list.get(i);
          if (spaces != null && spaces.size() > 0) {
            String ip = (String) spaces.get("ip");
            Vector tableinfo_v = (Vector) spaces.get("tableinfo_v");
            if (tableinfo_v != null && tableinfo_v.size() > 0) {
              Oraspaceconfig oraspaceconfig = null;
              for (int k = 0; k < tableinfo_v.size(); k++) {
                Hashtable return_value = (Hashtable) tableinfo_v.get(k);
                String spacename = (String) return_value.get("tablespace");
                String[] iparr = ip.split(":");
                String tip = tranfer.formIpToHex(iparr[0]);
                if (!oraspacehash.containsKey(tip + ":" + iparr[1] + ":" + spacename)) {
                  oraspaceconfig = new Oraspaceconfig();
                  oraspaceconfig.setSpacename(spacename);
                  oraspaceconfig.setBak("");
                  oraspaceconfig.setIpaddress(tip + ":" + iparr[1]);
                  oraspaceconfig.setLinkuse("");
                  oraspaceconfig.setAlarmvalue(90);
                  oraspaceconfig.setSms(new Integer(0)); // 0:不告警 1:告警,默认的情况是不发送短信
                  oraspaceconfig.setReportflag(new Integer(0)); // 0:不存在于报表 1:存在于报表,默认的情况是不存在于报表
                  conn = new DBManager();
                  save(oraspaceconfig);
                  // configV.add(oraspaceconfig);
                  oraspacehash.put(tip + ":" + iparr[1] + ":" + spacename, oraspaceconfig);
                }
              }
            }
          }
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    // TODO Auto-generated method stub
  }
Example #21
0
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    Hashtable returnHash = new Hashtable();
    Host host =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(
                    Integer.parseInt(
                        alarmIndicatorsNode
                            .getNodeid())); // Integer.parseInt(alarmIndicatorsNode.getNodeid())
    if (host == null) {
      return returnHash;
    }

    String username = "";
    String pws = "";
    String password = "";
    ConnectDao condao = new ConnectDao();
    List<Connect> list_vo = condao.getbynodeid(Long.parseLong(host.getId() + ""));
    Connect vo = null;
    if (list_vo != null && list_vo.size() > 0) {
      vo = list_vo.get(0);
    }
    username = vo.getUsername();
    pws = vo.getPwd();
    try {
      if (!pws.equals("")) {
        password = EncryptUtil.decode(pws);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(host.getIpAddress());
    if (ipAllData == null) {
      ipAllData = new Hashtable();
    }

    Runtime runtime = Runtime.getRuntime();
    StringBuffer dataBuffer = new StringBuffer();
    try {
      process =
          runtime.exec(
              "naviseccli -user "
                  + username
                  + " -password "
                  + password
                  + " -Scope 0 -h "
                  + host.getIpAddress()
                  + " environment -list -all");
      inputStream = process.getInputStream();
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
      BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
      String inStr = "";
      while ((inStr = bufferedReader.readLine()) != null) {
        dataBuffer.append(inStr + "\r\n");
      }
    } catch (IOException e) {
      e.printStackTrace();
    }

    Environment environment = EnvironmentParser.parse(dataBuffer.toString());
    Hashtable emcdata = null;
    if (!(ShareData.getEmcdata().containsKey(host.getIpAddress()))) {
      if (emcdata == null) {
        emcdata = new Hashtable();
      }
      if (environment != null) {
        emcdata.put("environment", environment);
      }
      ShareData.getEmcdata().put(host.getIpAddress(), emcdata);
    } else {
      if (environment != null) {
        ((Hashtable) ShareData.getEmcdata().get(host.getIpAddress()))
            .put("environment", environment);
      }
    }
    returnHash.put("environment", environment);

    try {
      EMCLUNConfigController util = new EMCLUNConfigController();
      List list =
          util.EMCgetAlarmInicatorsThresholdForNode(
              String.valueOf(alarmIndicatorsNode.getNodeid()),
              AlarmConstant.TYPE_STORAGE,
              "emc",
              "envpower");

      for (int i = 0; i < list.size(); i++) {
        AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(i);
        String flag = "";
        String name = "";
        if (alarmIndicatorsnode.getEnabled().equals("1")) {
          flag = alarmIndicatorsnode.getSubentity();
          name = alarmIndicatorsnode.getName();
        } else {
          continue;
        }
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("envwt")) {
          util.checkDisk(
              host,
              flag,
              alarmIndicatorsnode,
              "envpower",
              "envwt",
              name,
              flag); // vid=AlarmIndicatorsNode.getSubentity();flag=map的键值(在utilDao
          // 的queryLast()方法里定义的);
        }
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("envavgwt")) {
          util.checkDisk(host, flag, alarmIndicatorsnode, "envpower", "envavgwt", name, flag);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    try {
      EMCLUNConfigController util = new EMCLUNConfigController();
      List list =
          util.EMCgetAlarmInicatorsThresholdForNode(
              String.valueOf(alarmIndicatorsNode.getNodeid()),
              AlarmConstant.TYPE_STORAGE,
              "emc",
              "envstore");

      for (int i = 0; i < list.size(); i++) {
        AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(i);
        String flag = "";
        String name = "";
        if (alarmIndicatorsnode.getEnabled().equals("1")) {
          flag = alarmIndicatorsnode.getSubentity();
          name = alarmIndicatorsnode.getName();
        } else {
          continue;
        }
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("memtmp")) {
          util.checkDisk(host, flag, alarmIndicatorsnode, "envstore", "memtmp", name, flag);
        }
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("memavgtmp")) {
          util.checkDisk(host, flag, alarmIndicatorsnode, "envstore", "memavgtmp", name, flag);
        }
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("memwt")) {
          util.checkDisk(host, flag, alarmIndicatorsnode, "envstore", "memwt", name, flag);
        }
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("memavgwt")) {
          util.checkDisk(host, flag, alarmIndicatorsnode, "envstore", "memavgwt", name, flag);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    try {
      EMCLUNConfigController util = new EMCLUNConfigController();
      List list =
          util.EMCgetAlarmInicatorsThresholdForNode(
              String.valueOf(alarmIndicatorsNode.getNodeid()),
              AlarmConstant.TYPE_STORAGE,
              "emc",
              "bakpower");

      for (int i = 0; i < list.size(); i++) {
        AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(i);
        String flag = "";
        String name = "";
        if (alarmIndicatorsnode.getEnabled().equals("1")) {
          flag = alarmIndicatorsnode.getSubentity();
          name = alarmIndicatorsnode.getName();
        } else {
          continue;
        }
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("bakwt")) {
          util.checkDisk(
              host,
              flag,
              alarmIndicatorsnode,
              "bakpower",
              "bakwt",
              name,
              flag); // vid=AlarmIndicatorsNode.getSubentity();flag=map的键值(在utilDao
          // 的queryLast()方法里定义的);
        }
        if (alarmIndicatorsnode.getName().equalsIgnoreCase("bakavgwt")) {
          util.checkDisk(host, flag, alarmIndicatorsnode, "bakpower", "bakavgwt", name, flag);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

    if (environment != null) {
      com.afunms.emc.model.Array array = environment.getArray();
      List<MemModel> liststore = environment.getMemList();
      List<MemModel> listbakpower = environment.getBakPowerList();

      envPerDao dao = new envPerDao();
      dao.saveArray(array, host.getIpAddress());

      dao = new envPerDao();
      dao.saveStore(liststore, host.getIpAddress());

      dao = new envPerDao();
      dao.saveBakPower(listbakpower, host.getIpAddress());
    }
    return returnHash;
  }
Example #22
0
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    Hashtable returnHash = new Hashtable();
    Vector processVector = new Vector();
    Host host =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (host == null) {
      return returnHash;
    }
    try {
      ProcessCollectEntity processdata = new ProcessCollectEntity();
      Calendar date = Calendar.getInstance();
      Hashtable ipAllData = (Hashtable) ShareData.getSharedata().get(host.getIpAddress());
      if (ipAllData == null) {
        ipAllData = new Hashtable();
      }
      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            PollingEngine.getInstance().getNodeByIP(host.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {
        e.printStackTrace();
      }
      try {

        String[] oids =
            new String[] {
              "1.3.6.1.2.1.25.4.2.1.1",
              "1.3.6.1.2.1.25.4.2.1.2",
              "1.3.6.1.2.1.25.4.2.1.5",
              "1.3.6.1.2.1.25.4.2.1.6",
              "1.3.6.1.2.1.25.4.2.1.7",
              "1.3.6.1.2.1.25.5.1.1.2",
              "1.3.6.1.2.1.25.5.1.1.1",
            };
        String[][] valueArray1 = null;
        try {
          valueArray1 =
              SnmpUtils.getTableData(
                  host.getIpAddress(),
                  host.getCommunity(),
                  oids,
                  host.getSnmpversion(),
                  host.getSecuritylevel(),
                  host.getSecurityName(),
                  host.getV3_ap(),
                  host.getAuthpassphrase(),
                  host.getV3_privacy(),
                  host.getPrivacyPassphrase(),
                  3,
                  1000 * 30);
        } catch (Exception e) {
          e.printStackTrace();
          valueArray1 = null;
        }
        int allMemorySize = 0;
        if (valueArray1 != null) {
          for (int i = 0; i < valueArray1.length; i++) {
            String svb0 = valueArray1[i][0];
            if (svb0 == null) {
              continue;
            }
            allMemorySize = Integer.parseInt(svb0);
          }
        }

        String[][] valueArray = null;
        try {
          valueArray = snmp.getTableData(host.getIpAddress(), host.getCommunity(), oids);
        } catch (Exception e) {
          e.printStackTrace();
          valueArray = null;
        }

        List procslist = new ArrayList();
        ProcsDao procsdao = new ProcsDao();
        try {
          procslist = procsdao.loadByIp(host.getIpAddress());
        } catch (Exception ex) {
          ex.printStackTrace();
        } finally {
          procsdao.close();
        }

        Hashtable procshash = new Hashtable();
        Vector procsV = new Vector();
        if (procslist != null && procslist.size() > 0) {
          for (int i = 0; i < procslist.size(); i++) {
            Procs procs = (Procs) procslist.get(i);
            procshash.put(procs.getProcname(), procs);
            procsV.add(procs.getProcname());
          }
        }
        if (valueArray != null) {
          for (int i = 0; i < valueArray.length; i++) {
            if (allMemorySize != 0) {
              String vbstring0 = valueArray[i][0];
              String vbstring1 = valueArray[i][1];
              String vbstring2 = valueArray[i][2];
              String vbstring3 = valueArray[i][3];
              String vbstring4 = valueArray[i][4];
              String vbstring5 = valueArray[i][5];
              String vbstring6 = valueArray[i][6];
              String processIndex = vbstring0.trim();

              float value = 0.0f;
              value = Integer.parseInt(vbstring5.trim()) * 100.0f / allMemorySize;

              String processName = vbstring1.trim();

              processdata = new ProcessCollectEntity();
              processdata.setIpaddress(host.getIpAddress());
              processdata.setCollecttime(date);
              processdata.setCategory("Process");
              processdata.setEntity("MemoryUtilization");
              processdata.setSubentity(processIndex);
              processdata.setRestype("dynamic");
              processdata.setUnit("%");
              processdata.setThevalue(Float.toString(value));
              processdata.setChname(processName);
              processVector.addElement(processdata);

              String processMemory = vbstring5.trim();
              processdata = new ProcessCollectEntity();
              processdata.setIpaddress(host.getIpAddress());
              processdata.setCollecttime(date);
              processdata.setCategory("Process");
              processdata.setEntity("Memory");
              processdata.setSubentity(processIndex);
              processdata.setRestype("static");
              processdata.setUnit("K");
              processdata.setThevalue(processMemory);
              processdata.setChname(processName);
              processVector.addElement(processdata);

              String processType = vbstring3.trim();
              processdata = new ProcessCollectEntity();
              processdata.setIpaddress(host.getIpAddress());
              processdata.setCollecttime(date);
              processdata.setCategory("Process");
              processdata.setEntity("Type");
              processdata.setSubentity(processIndex);
              processdata.setRestype("static");
              processdata.setUnit(" ");
              processdata.setThevalue(HOST_hrSWRun_hrSWRunType.get(processType).toString());
              processdata.setChname(processName);
              processVector.addElement(processdata);

              String processPath = vbstring2.trim();
              processdata = new ProcessCollectEntity();
              processdata.setIpaddress(host.getIpAddress());
              processdata.setCollecttime(date);
              processdata.setCategory("Process");
              processdata.setEntity("Path");
              processdata.setSubentity(processIndex);
              processdata.setRestype("static");
              processdata.setUnit(" ");
              processdata.setThevalue(processPath);
              processdata.setChname(processName);
              processVector.addElement(processdata);

              String processStatus = vbstring4.trim();
              processdata = new ProcessCollectEntity();
              processdata.setIpaddress(host.getIpAddress());
              processdata.setCollecttime(date);
              processdata.setCategory("Process");
              processdata.setEntity("Status");
              processdata.setSubentity(processIndex);
              processdata.setRestype("static");
              processdata.setUnit(" ");
              processdata.setThevalue(HOST_hrSWRun_hrSWRunStatus.get(processStatus).toString());
              processdata.setChname(processName);
              processVector.addElement(processdata);

              processdata = new ProcessCollectEntity();
              processdata.setIpaddress(host.getIpAddress());
              processdata.setCollecttime(date);
              processdata.setCategory("Process");
              processdata.setEntity("Name");
              processdata.setSubentity(processIndex);
              processdata.setRestype("static");
              processdata.setUnit(" ");
              processdata.setThevalue(processName);
              processVector.addElement(processdata);

              String processCpu = vbstring6.trim();
              processdata = new ProcessCollectEntity();
              processdata.setIpaddress(host.getIpAddress());
              processdata.setCollecttime(date);
              processdata.setCategory("Process");
              processdata.setEntity("CpuTime");
              processdata.setSubentity(processIndex);
              processdata.setRestype("static");
              processdata.setUnit("秒");
              processdata.setThevalue(Integer.toString((Integer.parseInt(processCpu) / 100)));
              processdata.setChname(processName);
              processVector.addElement(processdata);

              // 判断是否有需要监视的进程,若取得的列表里包含监视进程,则从Vector里去掉
              if (procsV != null && procsV.size() > 0) {
                if (procsV.contains(processName)) {
                  procsV.remove(processName);
                  // 判断已经发送的进程短信列表里是否有该进程,若有,则从已发送列表里去掉该短信信息
                  if (sendeddata.containsKey(host + ":" + processName)) {
                    sendeddata.remove(host + ":" + processName);
                  }
                  // 判断进程丢失列表里是否有该进程,若有,则从该列表里去掉该信息
                  Hashtable iplostprocdata = ShareData.getLostprocdata(host.getIpAddress());
                  if (iplostprocdata == null) {
                    iplostprocdata = new Hashtable();
                  }
                  if (iplostprocdata.containsKey(processName)) {
                    iplostprocdata.remove(processName);
                    ShareData.setLostprocdata(host.getIpAddress(), iplostprocdata);
                  }
                }
              }
            } else {
              throw new Exception("Process is 0");
            }
          }
        }

        // 判断ProcsV里还有没有需要监视的进程,若有,则说明当前没有启动该进程,则用命令重新启动该进程,同时写入事件
        Vector eventtmpV = new Vector();
        if (procsV != null && procsV.size() > 0) {
          for (int i = 0; i < procsV.size(); i++) {
            Procs procs = (Procs) procshash.get(procsV.get(i));

            Hashtable iplostprocdata = ShareData.getLostprocdata(host.getIpAddress());
            if (iplostprocdata == null) {
              iplostprocdata = new Hashtable();
            }
            iplostprocdata.put(procs.getProcname(), procs);
            ShareData.setLostprocdata(host.getIpAddress(), iplostprocdata);
            EventList eventlist = new EventList();
            eventlist.setEventtype("poll");
            eventlist.setEventlocation(host.getSysLocation());
            eventlist.setContent(procs.getProcname() + "进程丢失");
            eventlist.setLevel1(1);
            eventlist.setManagesign(0);
            eventlist.setBak("");
            eventlist.setRecordtime(Calendar.getInstance());
            eventlist.setReportman("系统轮询");
            eventlist.setEventlocation(host.getAlias() + "(" + host.getIpAddress() + ")");
            NodeToBusinessDao ntbdao = new NodeToBusinessDao();
            List ntblist = new ArrayList();
            try {
              ntblist = ntbdao.loadByNodeAndEtype(host.getId(), "equipment");
            } catch (Exception e) {
              e.printStackTrace();
            } finally {
              ntbdao.close();
            }
            String bids = ",";
            if (ntblist != null && ntblist.size() > 0) {

              for (int k = 0; k < ntblist.size(); k++) {
                NodeToBusiness ntb = (NodeToBusiness) ntblist.get(k);
                bids = bids + ntb.getBusinessid() + ",";
              }
            }
            eventlist.setBusinessid(bids);
            eventlist.setNodeid(host.getId());
            eventlist.setOid(0);
            eventlist.setSubtype("host");
            eventlist.setSubentity("proc");
            EventListDao eventlistdao = new EventListDao();
            eventlistdao.save(eventlist);
            eventtmpV.add(eventlist);
            // 发送手机短信并写事件和声音告警
          }
        }

      } catch (Exception e) {
        e.printStackTrace();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    if (!(ShareData.getSharedata().containsKey(host.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) {
        ipAllData = new Hashtable();
      }
      if (processVector != null && processVector.size() > 0) {
        ipAllData.put("process", processVector);
      }
      ShareData.getSharedata().put(host.getIpAddress(), ipAllData);
    } else {
      if (processVector != null && processVector.size() > 0) {
        ((Hashtable) ShareData.getSharedata().get(host.getIpAddress()))
            .put("process", processVector);
      }
    }
    returnHash.put("process", processVector);
    processVector = null;
    List proEventList = new ArrayList();
    boolean alarm = false;
    try {
      if (processVector != null && processVector.size() > 0) {
        AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
        List list =
            alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                host.getId() + "", "host", "windows");
        AlarmIndicatorsNode alarmIndicatorsNode2 = null;
        if (list == null) {
          for (int i = 0; i < list.size(); i++) {
            AlarmIndicatorsNode alarmIndicatorsNode2_per = (AlarmIndicatorsNode) list.get(i);
            if (alarmIndicatorsNode2_per != null
                && "process".equals(alarmIndicatorsNode2_per.getName())) {
              alarmIndicatorsNode2 = alarmIndicatorsNode2_per;
              break;
            }
          }
          CheckEventUtil checkutil = new CheckEventUtil();
          proEventList =
              checkutil.createProcessGroupEventList(
                  host.getIpAddress(), processVector, alarmIndicatorsNode2);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    if (proEventList != null && proEventList.size() > 0) {
      alarm = true;
    }
    if (alarm) {
      Host node = (Host) PollingEngine.getInstance().getNodeByID(host.getId());
      StringBuffer msg = new StringBuffer(200);
      msg.append("<font color='red'>--报警信息:--</font><br>");
      msg.append(node.getAlarmMessage().toString());
      if (proEventList != null && proEventList.size() > 0) {
        for (int i = 0; i < proEventList.size(); i++) {
          EventList eventList = (EventList) proEventList.get(i);
          msg.append(eventList.getContent() + "<br>");
          if (eventList.getLevel1() > node.getAlarmlevel()) {
            node.setAlarmlevel(eventList.getLevel1());
          }
        }
      }
      node.getAlarmMessage().clear();
      node.getAlarmMessage().add(msg.toString());
      node.setStatus(node.getAlarmlevel());
      node.setAlarm(true);
    }
    String runmodel = PollingEngine.getCollectwebflag(); // 采集与访问模式
    if (!"0".equals(runmodel)) {
      HostDatatempProcessRtTosql temptosql = new HostDatatempProcessRtTosql();
      temptosql.CreateResultTosql(returnHash, host);
    }

    return returnHash;
  }
Example #23
0
  /* (non-Javadoc)
   * @see com.dhcc.webnms.host.snmp.AbstractSnmp#collectData()
   */
  public Hashtable collect_Data(NodeGatherIndicators alarmIndicatorsNode) {
    // yangjun
    Hashtable returnHash = new Hashtable();
    Vector cpuVector = new Vector();
    List cpuList = new ArrayList();
    Host node =
        (Host)
            PollingEngine.getInstance()
                .getNodeByID(Integer.parseInt(alarmIndicatorsNode.getNodeid()));
    if (node == null) return null;
    try {
      // System.out.println("Start collect data as ip "+host);
      CPUcollectdata cpudata = null;
      Calendar date = Calendar.getInstance();

      try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        com.afunms.polling.base.Node snmpnode =
            (com.afunms.polling.base.Node)
                PollingEngine.getInstance().getNodeByIP(node.getIpAddress());
        Date cc = date.getTime();
        String time = sdf.format(cc);
        snmpnode.setLastTime(time);
      } catch (Exception e) {

      }
      // -------------------------------------------------------------------------------------------cpu start
      int result = 0;
      String temp = "0";
      try {
        // String temp = "0";
        String[] oids = new String[] {"1.3.6.1.4.1.94.1.21.1.7.1"};
        String[][] valueArray = null;
        valueArray =
            SnmpUtils.getCpuTableData(
                node.getIpAddress(), node.getCommunity(), oids, node.getSnmpversion(), 3, 1000);
        int allvalue = 0;
        int flag = 0;

        if (valueArray != null) {
          for (int i = 0; i < valueArray.length; i++) {
            String _value = valueArray[i][0];
            String index = "1";
            //			   		int value=0;
            //			   		value=Integer.parseInt(_value);
            allvalue = allvalue + Integer.parseInt(_value);
            // if(value >0){
            flag = flag + 1;
            List alist = new ArrayList();
            alist.add(index);
            alist.add(_value);
            cpuList.add(alist);
            // }
            // SysLogger.info(host.getIpAddress()+"  "+index+"   value="+value);
          }
        }

        if (flag > 0) {

          int intvalue = (allvalue / flag);
          temp = intvalue + "";
          // SysLogger.info(node.getIpAddress()+"获取的cpu=== "+allvalue/flag);
        }

        if (temp == null) {
          result = 0;
        } else {
          try {
            if (temp.equalsIgnoreCase("noSuchObject")) {
              result = 0;
            } else result = Integer.parseInt(temp);
          } catch (Exception ex) {
            ex.printStackTrace();
            result = 0;
          }
        }
        cpudata = new CPUcollectdata();
        cpudata.setIpaddress(node.getIpAddress());
        cpudata.setCollecttime(date);
        cpudata.setCategory("CPU");
        cpudata.setEntity("Utilization");
        cpudata.setSubentity("Utilization");
        cpudata.setRestype("dynamic");
        cpudata.setUnit("%");
        cpudata.setThevalue(result + "");

        cpuVector.addElement(cpudata);

      } catch (Exception e) {
        // e.printStackTrace();
      }
      // -------------------------------------------------------------------------------------------cpu end
    } catch (Exception e) {
      // returnHash=null;
      // e.printStackTrace();
      // return null;
    }

    if (!(ShareData.getSharedata().containsKey(node.getIpAddress()))) {
      Hashtable ipAllData = new Hashtable();
      if (ipAllData == null) ipAllData = new Hashtable();
      if (cpuVector != null && cpuVector.size() > 0) ipAllData.put("cpu", cpuVector);
      if (cpuList != null && cpuList.size() > 0) ipAllData.put("cpulist", cpuList);
      ShareData.getSharedata().put(node.getIpAddress(), ipAllData);
    } else {
      if (cpuVector != null && cpuVector.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress())).put("cpu", cpuVector);
      if (cpuList != null && cpuList.size() > 0)
        ((Hashtable) ShareData.getSharedata().get(node.getIpAddress())).put("cpulist", cpuList);
    }
    returnHash.put("cpu", cpuVector);
    // 对CPU值进行告警检测
    Hashtable collectHash = new Hashtable();
    collectHash.put("cpu", cpuVector);
    try {
      AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
      List list =
          alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
              String.valueOf(node.getId()), "firewall", "nokia", "cpu");
      for (int i = 0; i < list.size(); i++) {
        AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(i);
        // 对CPU值进行告警检测
        CheckEventUtil checkutil = new CheckEventUtil();
        checkutil.updateData(node, collectHash, "firewall", "nokia", alarmIndicatorsnode);
        // }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    // 把结果转换成sql
    NetcpuResultTosql tosql = new NetcpuResultTosql();
    tosql.CreateResultTosql(returnHash, node.getIpAddress());
    NetHostDatatempCpuRTosql totempsql = new NetHostDatatempCpuRTosql();
    totempsql.CreateResultTosql(returnHash, node);
    return returnHash;
  }
/**
 * @author Administrator
 *     <p>TODO To change the template for this generated type comment go to Window - Preferences -
 *     Java - Code Style - Code Templates
 */
public class MailDataCollector {
  private Hashtable sendeddata = ShareData.getSendeddata();
  private MailMonitorManager mailconf = null;
  private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  private SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");

  public MailDataCollector() {}

  public void collect_data(String id, Hashtable gatherHash) {
    Emailmonitor_realtimeDao emailmonitor_realtimeDao = null;
    Emailmonitor_historyDao emailmonitor_historyDao = null;
    try {
      EmailConfigDao emailConfigDao = new EmailConfigDao();
      EmailMonitorConfig mailconfig = null;
      try {
        mailconfig = (EmailMonitorConfig) emailConfigDao.findByID(id);
        if (mailconfig.getMonflag() == 0) { // 过滤掉不监控的邮箱
          return;
        }
      } catch (Exception e) {

      } finally {
        emailConfigDao.close();
      }
      Calendar date = Calendar.getInstance();

      ReceiveMail receieveMail = new ReceiveMail();
      sendMail sendmail = new sendMail();

      try {
        emailmonitor_realtimeDao = new Emailmonitor_realtimeDao();

        Hashtable realHash = null;
        try {
          realHash = emailmonitor_realtimeDao.getAllReal();
        } catch (Exception e) {
          e.printStackTrace();
        } finally {
          emailmonitor_realtimeDao.close();
        }

        Emailmonitor_history emailmonitor_history = new Emailmonitor_history();
        Emailmonitor_realtime emailold = new Emailmonitor_realtime();
        Integer iscanconnected = new Integer(0);
        String reason = "";
        Mail mail = (Mail) PollingEngine.getInstance().getMailByID(mailconfig.getId());
        if (mail == null) {
          return;
        }
        if (mail != null) {
          mail.setStatus(0);
          mail.setAlarm(false);
          mail.getAlarmMessage().clear();
          Calendar _tempCal = Calendar.getInstance();
          Date _cc = _tempCal.getTime();
          String _time = sdf.format(_cc);
          mail.setLastTime(_time);
        }

        Integer email_id = mailconfig.getId();
        boolean old = false;
        String str = "";
        Integer smssign = new Integer(0);
        if (realHash != null && realHash.get(email_id) != null) {
          old = true;
          emailold = (Emailmonitor_realtime) realHash.get(email_id);
          smssign = emailold.getSms_sign();
        }
        boolean flag = true;
        boolean receieveflag = true;
        int intflag = 0;
        int intreceieveflag = 0;

        try {
          if (gatherHash.containsKey("send")) {
            try {
              if (configSendMail(sendmail, mailconfig)) {
                flag = sendmail.sendmail();
                // intflag = 1;
              }
            } catch (Exception ex) {
              flag = false;
              ex.printStackTrace();
            }
          }

          if (gatherHash.containsKey("receieve")) {
            try {
              String mailserver = "";
              //							if (mailconfig.getAddress().indexOf("mail")>=0){
              //								//用的是MAIL服务
              //								mailserver = mailconfig.getAddress();
              //							}else if (mailconfig.getAddress().indexOf("smtp")>=0){
              //								//用的是SMTP服务
              //								mailserver = "smtp"+mailconfig.getAddress().substring(4);
              //							}else{
              //								//用的是POP3服务
              //								mailserver = "pop3."+mailconfig.getAddress();
              //							}
              mailserver = mailconfig.getReceiveAddress();
              receieveflag =
                  receieveMail.GetReceieveMail(
                      mailserver, mailconfig.getUsername(), mailconfig.getPassword());
            } catch (Exception ex) {
              ex.printStackTrace();
            }
          }

          // System.out.println("flag:"+flag+"-----receieveflag:"+receieveflag);
          if (flag && receieveflag) {
            intflag = 1;
            intreceieveflag = 1;
            iscanconnected = 1;
            reason = "服务有效";
            if (sendeddata.containsKey("emailserver:" + mailconfig.getId())) {
              sendeddata.remove("emailserver:" + mailconfig.getId());
            }

          } else {
            if (flag == true && receieveflag == false) {
              // 邮件能发送但不能接收
              intflag = 1;
              reason = "邮件接收服务无效";
              Vector mailvector = new Vector();
              // 开始设置采集值实体
              Interfacecollectdata interfacedata = new Interfacecollectdata();
              interfacedata.setIpaddress(mail.getIpAddress());
              interfacedata.setCollecttime(date);
              interfacedata.setCategory("Mail");
              interfacedata.setEntity("Send");
              interfacedata.setSubentity(mail.getId() + "");
              interfacedata.setRestype("static");
              interfacedata.setUnit("");
              interfacedata.setThevalue(intflag + "");
              interfacedata.setChname("发送服务");
              mailvector.add(interfacedata);

              interfacedata = new Interfacecollectdata();
              interfacedata.setIpaddress(mail.getIpAddress());
              interfacedata.setCollecttime(date);
              interfacedata.setCategory("Mail");
              interfacedata.setEntity("Receieve");
              interfacedata.setSubentity(mail.getId() + "");
              interfacedata.setRestype("static");
              interfacedata.setUnit("");
              interfacedata.setThevalue(intreceieveflag + "");
              interfacedata.setChname("接收服务");
              mailvector.add(interfacedata);

              Hashtable collectHash = new Hashtable();
              collectHash.put("mail", mailvector);

              //							mail.setStatus(3);
              //							mail.setAlarm(true);
              //							List alarmList = mail.getAlarmMessage();
              //							if(alarmList == null)alarmList = new ArrayList();

              // createEvent(mailconfig, reason);
              try {
                AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
                List list =
                    alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                        String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
                for (int k = 0; k < list.size(); k++) {
                  AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(k);
                  // 对邮件服务值进行告警检测
                  CheckEventUtil checkutil = new CheckEventUtil();
                  checkutil.updateData(mail, collectHash, "service", "mail", alarmIndicatorsnode);
                  // }
                }
              } catch (Exception e) {
                e.printStackTrace();
              }
              // createEvent(mailconfig, reason);
            } else if (flag == false && receieveflag == true) {
              intreceieveflag = 1;
              // 邮件能接收但不能发送
              reason = "邮件发送服务无效";
              Vector mailvector = new Vector();
              // 开始设置采集值实体
              Interfacecollectdata interfacedata = new Interfacecollectdata();
              interfacedata.setIpaddress(mail.getIpAddress());
              interfacedata.setCollecttime(date);
              interfacedata.setCategory("Mail");
              interfacedata.setEntity("Send");
              interfacedata.setSubentity(mail.getId() + "");
              interfacedata.setRestype("static");
              interfacedata.setUnit("");
              interfacedata.setThevalue(intflag + "");
              interfacedata.setChname("发送服务");
              mailvector.add(interfacedata);

              interfacedata = new Interfacecollectdata();
              interfacedata.setIpaddress(mail.getIpAddress());
              interfacedata.setCollecttime(date);
              interfacedata.setCategory("Mail");
              interfacedata.setEntity("Receieve");
              interfacedata.setSubentity(mail.getId() + "");
              interfacedata.setRestype("static");
              interfacedata.setUnit("");
              interfacedata.setThevalue(intreceieveflag + "");
              interfacedata.setChname("接收服务");
              mailvector.add(interfacedata);

              Hashtable collectHash = new Hashtable();
              collectHash.put("mail", mailvector);

              //							mail.setStatus(3);
              //							mail.setAlarm(true);
              //							List alarmList = mail.getAlarmMessage();
              //							if(alarmList == null)alarmList = new ArrayList();

              // createEvent(mailconfig, reason);
              try {
                AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
                List list =
                    alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                        String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
                for (int k = 0; k < list.size(); k++) {
                  AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(k);
                  // 对邮件服务值进行告警检测
                  CheckEventUtil checkutil = new CheckEventUtil();
                  checkutil.updateData(mail, collectHash, "service", "mail", alarmIndicatorsnode);
                  // }
                }
              } catch (Exception e) {
                e.printStackTrace();
              }
              // createEvent(mailconfig, reason);
            } else {
              // 邮件服务停止
              // 需要增加邮件服务所在的服务器是否能连通
              // Host host =
              // (Host)PollingEngine.getInstance().getNodeByIP(mailconfig.getIpaddress());
              Vector ipPingData = (Vector) ShareData.getPingdata().get(mailconfig.getIpaddress());
              if (ipPingData != null) {
                Pingcollectdata pingdata = (Pingcollectdata) ipPingData.get(0);
                Calendar tempCal = (Calendar) pingdata.getCollecttime();
                Date cc = tempCal.getTime();
                String time = sdf.format(cc);
                String lastTime = time;
                String pingvalue = pingdata.getThevalue();
                if (pingvalue == null || pingvalue.trim().length() == 0) pingvalue = "0";
                double pvalue = new Double(pingvalue);
                if (pvalue == 0) {
                  // 主机服务器连接不上***********************************************
                  mail.setStatus(3);
                  mail.setAlarm(true);
                  // SysLogger.info(mail.getName()+"========================"+mail.isAlarm());
                  // dbnode.setStatus(3);
                  List alarmList = mail.getAlarmMessage();
                  if (alarmList == null) alarmList = new ArrayList();
                  mail.getAlarmMessage().add("邮件服务无效");
                  String sysLocation = "";
                  try {
                    SmscontentDao smsdao = new SmscontentDao();
                    String eventdesc =
                        "邮件服务("
                            + mailconfig.getName()
                            + " IP:"
                            + mailconfig.getAddress()
                            + ")"
                            + "的邮件服务停止";
                    smsdao.createEventWithReasion(
                        "poll",
                        mailconfig.getId() + "",
                        mailconfig.getName() + "(" + mailconfig.getAddress() + ")",
                        eventdesc,
                        3,
                        "mail",
                        "ping",
                        "所在的服务器连接不上");
                  } catch (Exception e) {
                    e.printStackTrace();
                  }
                } else {
                  //									mail.setStatus(3);
                  //									mail.setAlarm(true);
                  //									List alarmList = mail.getAlarmMessage();
                  //									if(alarmList == null)alarmList = new ArrayList();
                  //									mail.getAlarmMessage().add("邮件服务无效");
                  //									reason="邮件服务无效";
                  Vector mailvector = new Vector();
                  // 开始设置采集值实体
                  Interfacecollectdata interfacedata = new Interfacecollectdata();
                  interfacedata.setIpaddress(mail.getIpAddress());
                  interfacedata.setCollecttime(date);
                  interfacedata.setCategory("Mail");
                  interfacedata.setEntity("Send");
                  interfacedata.setSubentity(mail.getId() + "");
                  interfacedata.setRestype("static");
                  interfacedata.setUnit("");
                  interfacedata.setThevalue(intflag + "");
                  interfacedata.setChname("发送服务");
                  mailvector.add(interfacedata);

                  interfacedata = new Interfacecollectdata();
                  interfacedata.setIpaddress(mail.getIpAddress());
                  interfacedata.setCollecttime(date);
                  interfacedata.setCategory("Mail");
                  interfacedata.setEntity("Receieve");
                  interfacedata.setSubentity(mail.getId() + "");
                  interfacedata.setRestype("static");
                  interfacedata.setUnit("");
                  interfacedata.setThevalue(intreceieveflag + "");
                  interfacedata.setChname("接收服务");
                  mailvector.add(interfacedata);

                  Hashtable collectHash = new Hashtable();
                  collectHash.put("mail", mailvector);

                  //									mail.setStatus(3);
                  //									mail.setAlarm(true);

                  // createEvent(mailconfig, reason);
                  try {
                    AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
                    List list =
                        alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                            String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
                    for (int k = 0; k < list.size(); k++) {
                      AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(k);
                      // 对邮件服务值进行告警检测
                      CheckEventUtil checkutil = new CheckEventUtil();
                      checkutil.updateData(
                          mail, collectHash, "service", "mail", alarmIndicatorsnode);
                      // }
                    }
                  } catch (Exception e) {
                    e.printStackTrace();
                  }
                  // createEvent(mailconfig, reason);
                }

              } else {
                //								mail.setStatus(3);
                //								mail.setAlarm(true);
                //								List alarmList = mail.getAlarmMessage();
                //								if(alarmList == null)alarmList = new ArrayList();
                //								mail.getAlarmMessage().add("邮件服务无效");
                //								reason="邮件服务无效";
                Vector mailvector = new Vector();
                // 开始设置采集值实体
                Interfacecollectdata interfacedata = new Interfacecollectdata();
                interfacedata.setIpaddress(mail.getIpAddress());
                interfacedata.setCollecttime(date);
                interfacedata.setCategory("Mail");
                interfacedata.setEntity("Send");
                interfacedata.setSubentity(mail.getId() + "");
                interfacedata.setRestype("static");
                interfacedata.setUnit("");
                interfacedata.setThevalue(intflag + "");
                interfacedata.setChname("发送服务");
                mailvector.add(interfacedata);

                interfacedata = new Interfacecollectdata();
                interfacedata.setIpaddress(mail.getIpAddress());
                interfacedata.setCollecttime(date);
                interfacedata.setCategory("Mail");
                interfacedata.setEntity("Receieve");
                interfacedata.setSubentity(mail.getId() + "");
                interfacedata.setRestype("static");
                interfacedata.setUnit("");
                interfacedata.setThevalue(intreceieveflag + "");
                interfacedata.setChname("接收服务");
                mailvector.add(interfacedata);

                Hashtable collectHash = new Hashtable();
                collectHash.put("mail", mailvector);

                //								mail.setStatus(3);
                //								mail.setAlarm(true);

                // createEvent(mailconfig, reason);
                try {
                  AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
                  List list =
                      alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(
                          String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
                  for (int k = 0; k < list.size(); k++) {
                    AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode) list.get(k);
                    // 对邮件服务值进行告警检测
                    CheckEventUtil checkutil = new CheckEventUtil();
                    checkutil.updateData(mail, collectHash, "service", "mail", alarmIndicatorsnode);
                    // }
                  }
                } catch (Exception e) {
                  e.printStackTrace();
                }
                // createEvent(mailconfig, reason);
              }
            }
          }
        } catch (Exception ex) {
          //					//不能进行邮件服务
          //					EventList event = new EventList();
          //					if (flag == true && receieveflag == false){
          //						intflag = 1;
          //						reason="邮件接收服务无效";
          //						mail.getAlarmMessage().add("邮件接收服务无效");
          //					}else if (flag == false && receieveflag == true){
          //						intreceieveflag = 1;
          //						reason="邮件发送服务无效";
          //						mail.getAlarmMessage().add("邮件发送服务无效");
          //					}
          //					Vector mailvector = new Vector();
          //					//开始设置采集值实体
          //					Interfacecollectdata interfacedata=new Interfacecollectdata();
          //					interfacedata.setIpaddress(mail.getIpAddress());
          //					interfacedata.setCollecttime(date);
          //					interfacedata.setCategory("Mail");
          //					interfacedata.setEntity("Send");
          //					interfacedata.setSubentity(mail.getId()+"");
          //					interfacedata.setRestype("static");
          //					interfacedata.setUnit("");
          //					interfacedata.setThevalue(intflag+"");
          //					interfacedata.setChname("发送服务");
          //					mailvector.add(interfacedata);
          //
          //					interfacedata=new Interfacecollectdata();
          //					interfacedata.setIpaddress(mail.getIpAddress());
          //					interfacedata.setCollecttime(date);
          //					interfacedata.setCategory("Mail");
          //					interfacedata.setEntity("Receieve");
          //					interfacedata.setSubentity(mail.getId()+"");
          //					interfacedata.setRestype("static");
          //					interfacedata.setUnit("");
          //					interfacedata.setThevalue(intreceieveflag+"");
          //					interfacedata.setChname("接收服务");
          //					mailvector.add(interfacedata);
          //
          //					Hashtable collectHash = new Hashtable();
          //					collectHash.put("mail", mailvector);
          //
          //					mail.setStatus(3);
          //					mail.setAlarm(true);
          //					List alarmList = mail.getAlarmMessage();
          //					if(alarmList == null)alarmList = new ArrayList();
          //
          //					createEvent(mailconfig, reason);
          //				    try{
          //						AlarmIndicatorsUtil alarmIndicatorsUtil = new AlarmIndicatorsUtil();
          //						List list =
          // alarmIndicatorsUtil.getAlarmInicatorsThresholdForNode(String.valueOf(mailconfig.getId()), AlarmConstant.TYPE_SERVICE, "mail");
          //						for(int k = 0 ; k < list.size() ; k ++){
          //							AlarmIndicatorsNode alarmIndicatorsnode = (AlarmIndicatorsNode)list.get(k);
          //							//对邮件服务值进行告警检测
          //							CheckEventUtil checkutil = new CheckEventUtil();
          //							checkutil.updateData(mail,collectHash,"service","mail",alarmIndicatorsnode);
          //							//}
          //						}
          //				    }catch(Exception e){
          //				    	e.printStackTrace();
          //				    }
        }
        // 保存进历史数据
        emailmonitor_history.setEmail_id(mailconfig.getId());
        emailmonitor_history.setIs_canconnected(iscanconnected);
        emailmonitor_history.setMon_time(Calendar.getInstance());
        emailmonitor_history.setReason(reason);
        emailmonitor_historyDao = new Emailmonitor_historyDao();
        try {
          emailmonitor_historyDao.save(emailmonitor_history);
        } catch (Exception e) {

        }
        if (sendeddata.containsKey("emailserver:" + mailconfig.getId())) {
          sendeddata.remove("emailserver:" + mailconfig.getId());
        }

        // 实时数据
        Emailmonitor_realtime emailmonitor_realtime = new Emailmonitor_realtime();
        emailmonitor_realtime.setEmail_id(mailconfig.getId());
        emailmonitor_realtime.setIs_canconnected(iscanconnected);
        emailmonitor_realtime.setMon_time(Calendar.getInstance());
        emailmonitor_realtime.setReason(reason);

        if (old == true) {
          emailmonitor_realtime.setId(emailold.getId());
          emailmonitor_realtime.setSms_sign(1);
        } else {
          emailmonitor_realtime.setSms_sign(smssign);
        }
        // 保存realtime
        if (old == true) {
          emailmonitor_realtimeDao = new Emailmonitor_realtimeDao();
          try {
            emailmonitor_realtimeDao.update(emailmonitor_realtime);
          } catch (Exception e) {

          } finally {
            emailmonitor_realtimeDao.close();
          }
        }
        if (old == false) {
          emailmonitor_realtimeDao = new Emailmonitor_realtimeDao();
          try {
            emailmonitor_realtimeDao.save(emailmonitor_realtime);
          } catch (Exception e) {

          } finally {
            emailmonitor_realtimeDao.close();
          }
        }

      } catch (Exception e) {
        e.printStackTrace();
      } finally {
        emailmonitor_historyDao.close();
        emailmonitor_realtimeDao.close();
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (emailmonitor_realtimeDao != null) {
        emailmonitor_historyDao.close();
      }
      if (emailmonitor_realtimeDao != null) {
        emailmonitor_realtimeDao.close();
      }
    }
  }

  public sendMail createSendMail() {
    sendMail sendmail = new sendMail();
    return sendmail;
  }

  public ReceiveMail createReceiveMail() {
    ReceiveMail receiveMail = new ReceiveMail();
    return receiveMail;
  }

  public String configAddress(EmailMonitorConfig mailCnfig) {
    String fromAddress = "";
    //		if (mailCnfig.getAddress().indexOf("mail")== -1 && mailCnfig.getAddress().indexOf("smtp")==
    // -1){
    //			//为IP地址
    //			fromAddress = mailCnfig.getAddress();
    //		}else{
    //			//为接受服务器(pop) 或者 为发送服务器(smtp)
    //			fromAddress = mailCnfig.getAddress().substring(5,mailCnfig.getAddress().length());
    //		}
    fromAddress = mailCnfig.getAddress();
    return fromAddress;
  }

  public boolean configSendMail(sendMail sendmail, EmailMonitorConfig mailConfig)
      throws AddressException {
    Address[] ccAddress = {
      new InternetAddress("*****@*****.**"), new InternetAddress("*****@*****.**")
    };
    sendmail.setMailaddress(configAddress(mailConfig));
    System.out.println(configAddress(mailConfig));
    sendmail.setSendmail(mailConfig.getUsername());
    sendmail.setSendpasswd(mailConfig.getPassword());
    sendmail.setToAddr(mailConfig.getRecivemail());
    sendmail.setBody("邮件服务测试");
    sendmail.setSubject("邮件服务设置");
    sendmail.setFromAddr(mailConfig.getUsername() + "@" + mailConfig.getAddress());
    sendmail.setCcAddress(ccAddress);
    return true;
  }

  public void createEvent(EmailMonitorConfig mailconfig, String reason) {
    Calendar date = Calendar.getInstance();
    String time = sdf.format(date.getTime());
    EventList event = new EventList();
    event.setEventtype("mailserver");
    event.setEventlocation(mailconfig.getName());
    event.setBusinessid(mailconfig.getBid());
    event.setManagesign(new Integer(0));
    event.setReportman("系统轮询");
    event.setRecordtime(new GregorianCalendar());
    String errorcontent =
        time
            + " "
            + "邮件服务("
            + mailconfig.getName()
            + " IP:"
            + mailconfig.getIpaddress()
            + ")"
            + "的邮件服务停止";
    event.setContent(errorcontent);
    Integer level = new Integer(2);
    event.setLevel1(level);
    Vector eventtmpV = new Vector();
    eventtmpV.add(event);
    // EventListDao eventListDao = null ;
    try {
      // eventListDao = new EventListDao();
      // eventListDao.save(event);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      // eventListDao.close();
    }
    try {
      createSMS("mailserver", mailconfig.getId() + "", errorcontent, mailconfig.getName());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void createSMS(String mailserver, String mail_id, String errmsg, String mailstr) {
    // 建立短信
    // 从内存里获得当前这个IP的PING的值
    Calendar date = Calendar.getInstance();
    try {
      if (!sendeddata.containsKey(mailserver + ":" + mail_id)) {
        // 若不在,则建立短信,并且添加到发送列表里
        Smscontent smscontent = new Smscontent();
        smscontent.setMessage(errmsg);
        smscontent.setObjid(mail_id);
        Calendar _tempCal = Calendar.getInstance();
        Date _cc = _tempCal.getTime();
        String _time = sdf.format(_cc);
        smscontent.setRecordtime(_time);
        smscontent.setSubtype("mail");
        smscontent.setLevel(3 + "");
        // 发送短信
        SmscontentDao smsmanager = new SmscontentDao();
        smsmanager.sendURLSmscontent(smscontent);
        sendeddata.put(mailserver + ":" + mail_id, date);
      } else {
        // 若在,则从已发送短信列表里判断是否已经发送当天的短信
        Calendar formerdate = (Calendar) sendeddata.get(mailserver + ":" + mail_id);
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        Date last = null;
        Date current = null;
        Calendar sendcalen = formerdate;
        Date cc = sendcalen.getTime();
        String tempsenddate = formatter.format(cc);

        Calendar currentcalen = date;
        cc = currentcalen.getTime();
        last = formatter.parse(tempsenddate);
        String currentsenddate = formatter.format(cc);
        current = formatter.parse(currentsenddate);

        long subvalue = current.getTime() - last.getTime();
        if (subvalue / (1000 * 60 * 60 * 24) >= 1) {
          // 超过一天,则再发信息
          Smscontent smscontent = new Smscontent();
          // String time = sdf.format(date.getTime());
          smscontent.setMessage(errmsg.replace("&", " "));
          smscontent.setObjid(mail_id);
          Calendar _tempCal = Calendar.getInstance();
          Date _cc = _tempCal.getTime();
          String _time = sdf.format(_cc);
          smscontent.setRecordtime(_time);
          smscontent.setSubtype("mail");
          smscontent.setLevel(3 + "");
          // 发送短信
          SmscontentDao smsmanager = new SmscontentDao();
          smsmanager.sendURLSmscontent(smscontent);
          // 修改已经发送的短信记录
          sendeddata.put(mailserver + ":" + mail_id, date);
        } else {
          // 则写声音告警数据
          // 向声音告警表里写数据
          AlarmInfo alarminfo = new AlarmInfo();
          alarminfo.setContent(errmsg.replace("&", " "));
          alarminfo.setIpaddress(mailstr);
          alarminfo.setLevel1(new Integer(2));
          alarminfo.setRecordtime(Calendar.getInstance());
          AlarmInfoDao alarmdao = new AlarmInfoDao();
          alarmdao.save(alarminfo);
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}