package br.com.centralit.citcorpore.batch; import java.sql.Date; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.concurrent.ConcurrentHashMap; import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.NetMapDTO; import br.com.centralit.citcorpore.bean.ValorDTO; import br.com.centralit.citcorpore.comm.server.IPAddress; import br.com.centralit.citcorpore.comm.server.Subnet; import br.com.centralit.citcorpore.negocio.ItemConfiguracaoService; import br.com.centralit.citcorpore.negocio.ValorService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; @SuppressWarnings("unchecked") public class MonitoraDiscoveryIP extends Thread { public static List<NetMapDTO> lstAddressDiscovery; public static ConcurrentHashMap<String, String> hsmAddressDiscovery; public MonitoraDiscoveryIP() { lstAddressDiscovery = new ArrayList<NetMapDTO>(); hsmAddressDiscovery = new ConcurrentHashMap<String, String>(); System.out.println("CITSMART --> Inciando MonitoraDiscoveryIP..."); ItemConfiguracaoService itemConfiguracaoService = null; ValorService valorService = null; try { valorService = (ValorService) ServiceLocator.getInstance().getService(ValorService.class, null); itemConfiguracaoService = (ItemConfiguracaoService) ServiceLocator.getInstance().getService(ItemConfiguracaoService.class, null); } catch (ServiceException e1) { e1.printStackTrace(); } catch (Exception e1) { e1.printStackTrace(); } Collection<ItemConfiguracaoDTO> colItens = null; try { colItens = itemConfiguracaoService.listAtivos(); if (colItens != null && !colItens.isEmpty()) { for (ItemConfiguracaoDTO itemConfiguracaoAux : colItens) { Collection<ItemConfiguracaoDTO> colHardware = null; String enderecoIp = ""; Date dataUltInv = null; if (itemConfiguracaoAux.getDtUltimaCaptura() != null) { dataUltInv = new Date(itemConfiguracaoAux.getDtUltimaCaptura().getTime()); } colHardware = itemConfiguracaoService.listByIdItemPaiAndTagTipoItemCfg(itemConfiguracaoAux.getIdItemConfiguracao(), "HARDWARE"); if (colHardware != null && !colHardware.isEmpty()) { for (ItemConfiguracaoDTO itemConfiguracaoMem : colHardware) { Collection<ValorDTO> colCapacity = valorService.listByItemConfiguracaoAndTagCaracteristica(itemConfiguracaoMem.getIdItemConfiguracao(), "IPADDR"); if (colCapacity != null && !colCapacity.isEmpty()) { for (ValorDTO valorCapacidade : colCapacity) { enderecoIp = valorCapacidade.getValorStr(); break; } } } } if (enderecoIp != null && !enderecoIp.trim().equalsIgnoreCase("")) { synchronized (lstAddressDiscovery) { NetMapDTO netMapDTO = new NetMapDTO(); netMapDTO.setIp(enderecoIp); netMapDTO.setDataInventario(dataUltInv); if (!MonitoraDiscoveryIP.hsmAddressDiscovery.containsKey(enderecoIp)) { hsmAddressDiscovery.put(enderecoIp, enderecoIp); lstAddressDiscovery.add(netMapDTO); } } } } } } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { if (!CITCorporeUtil.START_MODE_DISCOVERY) { System.out.println("CITSMART --> Processo de Discovery Desativado... Ver arquivo de Configura��o..."); return; } String faixas = ""; faixas = CITCorporeUtil.IP_RANGE_DISCOVERY; if (faixas == null) { faixas = ""; } if (faixas.trim().equalsIgnoreCase("")) { try { faixas = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.FAIXA_DISCOVERY_IP, null); } catch (Exception e) { e.printStackTrace(); } } if (faixas == null) { faixas = ""; } if (faixas.trim().equalsIgnoreCase("N")) { faixas = ""; } if (faixas.trim().equalsIgnoreCase("")) { faixas = "10.0.0.1-10.255.255.255"; } faixas = faixas + ";"; String[] strFaixas = faixas.split(";"); for (int i = 0; i < strFaixas.length; i++) { if (strFaixas[i] != null && !strFaixas[i].trim().equalsIgnoreCase("")) { String strIps = strFaixas[i] + "- "; String[] ips = strIps.split("-"); if (ips != null) { if (ips.length > 1) { if (ips[0] == null && ips[1] == null) { continue; } if (ips[0].trim().equalsIgnoreCase("") && ips[1].trim().equalsIgnoreCase("")) { continue; } IPAddress ip1 = null; IPAddress ip2 = null; try { if (ips[1] == null || ips[1].trim().equalsIgnoreCase("")) { // O formato CIDR � 10.0.0.1/15 ou 192.168.1.255/24 Subnet subNet = new Subnet(ips[0].trim()); String address1 = subNet.getInfo().getLowAddress(); String address2 = subNet.getInfo().getHighAddress(); ip1 = new IPAddress(address1); ip2 = new IPAddress(address2); } else { ip1 = new IPAddress(ips[0]); ip2 = new IPAddress(ips[1]); } ThreadValidaFaixaIP t = new ThreadValidaFaixaIP(); t.setIp1(ip1); t.setIp2(ip2); t.start(); } catch (Exception e) { e.printStackTrace(); } } } } } } }