package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLElement;
import br.com.centralit.citcorpore.bean.InventarioDTO;
import br.com.centralit.citcorpore.bean.NetMapDTO;
import br.com.centralit.citcorpore.comm.server.NetDiscover;
import br.com.centralit.citcorpore.comm.server.Servidor;
import br.com.centralit.citcorpore.negocio.NetMapService;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilI18N;
/**
* @author Maycon.Fernandes
*
*/
public class Inventario extends AjaxFormAction {
private List<NetMapDTO> listNetMap;
private List<NetMapDTO> lstErro;
private DocumentHTML document1;
private static final String VALUE = "HARDWARE";
private static final List<String> VALUES_ATRIBUTOS = new ArrayList<String>(Arrays.asList(
new String[] {"NAME", "WORKGROUP", "USERDOMAIN", "OSNAME", "OSVERSION", "OSCOMMENTS", "ARCH", "PROCESSORT", "PROCESSORS",
"PROCESSORN", "MEMORY", "SWAP", "IPADDR", "ETIME", "LASTDATE", "USERID", "LASTLOGGEDUSER", "TYPE", "DESCRIPTION", "WINCOMPANY", "WINOWNER", "WINPRODID", "WINPRODKEY",
"UUID", "VMSYSTEM", "CHECKSUM"}
));
DocumentHTML doc;
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
doc = document;
List<NetMapDTO> listNetMapDto = this.getPesquisaListIp();
NetDiscover netDiscover = new NetDiscover();
if (listNetMapDto != null) {
for (NetMapDTO netMapDTO : listNetMapDto) {
String ipCor ="";
if(netMapDTO.getNome()!= null){
ipCor= netMapDTO.getNome();
}else{
ipCor = netMapDTO.getIp();
}
netMapDTO.setAtivo("");
netMapDTO.setCorRetorno("<span>" + ipCor + "</span>");
}
} else {
listNetMapDto = netDiscover.listaIpsAtivos();
for (NetMapDTO netMapDTO : listNetMapDto) {
String ipCor ="";
if(netMapDTO.getNome()!= null){
ipCor = "<span style='color: green'>" + netMapDTO.getNome() + "</span>";
}else{
ipCor = "<span style='color: green'>" + netMapDTO.getIp() + "</span>";
}
netMapDTO.setAtivo("");
netMapDTO.setCorRetorno(ipCor);
}
}
this.getPreencheTabelaIP(listNetMapDto, document,request);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
/**
* Pesquisar ips no banco de dados
*
* @return lista NetMap
* @throws Exception
* @throws ServiceException
*/
public List<NetMapDTO> getPesquisaListIp() throws ServiceException, Exception {
List<NetMapDTO> listnetMap = null;
try {
NetMapService netMapService = (NetMapService) ServiceLocator.getInstance().getService(NetMapService.class, null);
listnetMap = (List<NetMapDTO>) netMapService.listIp();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
// try {
// netMapService = (NetMapService) ServiceLocator.getInstance().getService(NetMapService.class, null);
// ParametroCorporeDTO paramentroDTO = null;
/*ParametroCorporeService parametroService = (ParametroCorporeService) ServiceLocator.getInstance().getService(ParametroCorporeService.class, null);
List<ParametroCorporeDTO> listDiasInventario = parametroService.pesquisarParamentro(Enumerados.ParametroSistema.DiasInventario.id(), Enumerados.ParametroSistema.DiasInventario.campo());
String diasInventario = "";
if (listDiasInventario == null) {
return null;
}
if ((paramentroDTO = (ParametroCorporeDTO) listDiasInventario.get(0)).getValor() != null) {
diasInventario = (paramentroDTO = (ParametroCorporeDTO) listDiasInventario.get(0)).getValor();
}
Date dataInventario = UtilDatas.getSqlDate(UtilDatas.incrementaDiasEmData(Util.getDataAtual(), -(new Integer(diasInventario.trim()))));
*/
// Pesquisa ips para geracao de inventario, passa data como
// parametro, para identificar a partir de que data sera inventariado.
//listnetMap = (List<NetMapDTO>) netMapService.listIpByDataInventario(dataInventario);
/* } catch (Exception e) {
System.out.println("Problema ao pesquisar lista de IPs: " + e.getMessage());
doc.alert("Problema ao pesquisar lista de IPs, confira os par�mentros do sistema.");
e.printStackTrace();
}*/
return listnetMap;
}
/**
* Preencher tabela IP Formulario Inventario
*
* @param listnetMap
* List NetMapDto
* @param document
* @throws Exception
*/
public void getPreencheTabelaIP(List<NetMapDTO> listnetMap, DocumentHTML document, HttpServletRequest request ) throws Exception {
StringBuilder dados = new StringBuilder();
try {
dados.append("<table class='table' id='tblip' >");
dados.append("<tr>");
dados.append("<td colspan = 10 style=' width: 100%; border: 1px solid #ddd;padding: 4px 10px; border-left: none; border-right: none; background: #eee; ' > ");
dados.append("<label class='marcaTodos'><input type='checkbox' id='marcatodos' name='marcatodos' onclick='marcarTodosCheckbox();'>"+UtilI18N.internacionaliza(request, "justificacaoFalhas.marcarTodos")+"</label>");
dados.append("<label class='persquisaNet'> <button type='button' class='light' id='pesquisarNetMap' name='pesquisarNetMap' onclick='netMapManual();'>"+UtilI18N.internacionaliza(request, "inventario.pesquisarIpNaRede")+"</button> </label>");
dados.append("</td></tr>");
int cont = 0;
String trAbre = "<tr>";
String trFecha = "</tr>";
if (listnetMap != null) {
for (NetMapDTO netMapDTO : listnetMap) {
String corRetorno = netMapDTO.getCorRetorno();
if (corRetorno == null)
corRetorno = "";
if (cont == 0) {
dados.append(trAbre);
dados.append("<td> ");
dados.append("<label><input type='checkbox' name='ips' value = '" + netMapDTO.getIp() + "_" + netMapDTO.getMac() + "' " + netMapDTO.getAtivo() + " /> " + corRetorno.replaceAll("null", "--"));
dados.append("</label></td>");
cont++;
} else if (cont == 5) {
dados.append("<td>");
dados.append("<label><input type='checkbox' name='ips' value = '" + netMapDTO.getIp() + "_" + netMapDTO.getMac() + "'" + netMapDTO.getAtivo() + " /> " + corRetorno.replaceAll("null", "--"));
dados.append("</label></td>" + trFecha);
cont = 0;
} else {
dados.append("<td> ");
dados.append("<label><input type='checkbox' name='ips' value = '" + netMapDTO.getIp() + "_" + netMapDTO.getMac() + "' " + netMapDTO.getAtivo() + " /> " + corRetorno.replaceAll("null", "--"));
dados.append("</label></td>");
}
cont++;
}
}
dados.append("</table>");
dados.append("<table class='table' id='totalIP' >");
dados.append("<tr>");
dados.append("<td colspan = 10 style=' width: 1206px; border: 1px solid #ddd;padding: 4px 10px; border-left: none; border-right: none; background: #eee; ' > ");
dados.append("<label class='quantIP'>Quantidade de IP Ativo</label>");
dados.append("<label style='margin-left: 940px'>");
if (listnetMap != null && listnetMap.size() > 0) {
dados.append(listnetMap.size());
} else {
dados.append(0);
}
dados.append("</label>");
dados.append("</td></tr>");
HTMLElement htmlele = document.getElementById("ipMac");
htmlele.setInnerHTML(dados.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Rotina para verificar ips ativos na rede e preencher tabela de Ips
*
* @param document
* @param request
* @param response
* @throws ServiceException
* @throws Exception
*/
public void netMapManual(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, LogicException, Exception {
NetDiscover netDiscover = new NetDiscover();
// Pesquisa Ips Ativos na Rede
List<NetMapDTO> lstAtivos = null;
List<NetMapDTO> lstPesquisa = null;
try {
lstAtivos = netDiscover.listaIpsAtivos();
lstPesquisa = getPesquisaListIp();
if((lstAtivos != null && !lstAtivos.isEmpty()) || (lstPesquisa != null && !lstPesquisa.isEmpty() )){
this.getPreencheTabelaIP(this.verificarIpInventarioAtivo(lstPesquisa, lstAtivos),document,request);
} else{
document.alert(UtilI18N.internacionaliza(request, "inventario.validacao.listaAtivos"));
}
} catch (LogicException e) {
document.alert(e.getMessage());
document.executeScript("JANELA_AGUARDE_MENU.hide();$('#loading_overlay').hide();");
}
document.executeScript("JANELA_AGUARDE_MENU.hide();$('#loading_overlay').hide();");
}
/**
* Verifica quais ips Est�o Ativos e seta CHECKED
*
* @param lstPesquisa
* NetMapDTO
* @param lstAtivos
* NetMapDTO
* @return List NetMapDTO
*/
public List<NetMapDTO> verificarIpInventarioAtivo(List<NetMapDTO> lstPesquisa, List<NetMapDTO> lstAtivos) {
List<NetMapDTO> lstRetorno = new ArrayList<NetMapDTO>();
NetMapService netMapService;
try {
netMapService = (NetMapService) ServiceLocator.getInstance().getService(NetMapService.class, null);
if (lstPesquisa.size() >= lstAtivos.size()) {
for (NetMapDTO netMapDTO : lstPesquisa) {
for (NetMapDTO netMapDTOPesquisa : lstAtivos) {
if (netMapDTOPesquisa == null || netMapDTO == null)
continue;
if (netMapDTO.getIp() != null && netMapDTO.getIp().equals(netMapDTOPesquisa.getIp())) {
String ipCor = "";
if (netMapDTO.getNome() != null) {
ipCor = netMapDTO.getNome();
} else {
ipCor = netMapDTO.getIp();
}
netMapDTO.setAtivo("CHECKED");
List<NetMapDTO> lstNetMap = netMapService.verificarExistenciaIp(netMapDTO);
String icNovo = "";
if(netMapDTOPesquisa.getIcNovo() != null){
if(netMapDTOPesquisa.getIcNovo().equalsIgnoreCase("true")){
icNovo = "<a href='#' style='color: red;' > NEW IC </a>";
}
}
netMapDTO.setCorRetorno("<span style='color: green'>" + ipCor + "</span>" + icNovo);
break;
} else {
String ipCor = "";
if (netMapDTO.getNome() != null) {
ipCor = netMapDTO.getNome();
} else {
ipCor = netMapDTO.getIp();
}
netMapDTO.setCorRetorno("<span style='color: black'>" + ipCor + "</span>");
netMapDTO.setAtivo("");
}
}
lstRetorno.add(netMapDTO);
}
} else {
for (NetMapDTO netMapDTO : lstAtivos) {
for (NetMapDTO netMapDTOPesquisa : lstPesquisa) {
if (netMapDTO.getIp().equals(netMapDTOPesquisa.getIp())) {
String ipCor = "";
if (netMapDTO.getNome() != null) {
ipCor = netMapDTO.getNome();
} else {
ipCor = netMapDTO.getIp();
}
netMapDTO.setAtivo("CHECKED");
List<NetMapDTO> lstNetMap = netMapService.verificarExistenciaIp(netMapDTO);
String icNovo = "";
if(netMapDTOPesquisa.getIcNovo() != null){
if(netMapDTOPesquisa.getIcNovo().equalsIgnoreCase("true")){
icNovo = "<a href='#' style='color: red;' > NEW IC </a>";
}
}
netMapDTO.setCorRetorno("<span style='color: green'>" + ipCor + "</span>" + icNovo);
break;
} else {
String ipCor = "";
if (netMapDTO.getNome() != null) {
ipCor = netMapDTO.getNome();
} else {
ipCor = netMapDTO.getIp();
}
netMapDTO.setCorRetorno("<span style='color: black'>" + ipCor + "</span>");
netMapDTO.setAtivo("");
}
}
lstRetorno.add(netMapDTO);
}
}
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return lstRetorno;
}
/**
* Rotina que gera inventario manual
*
* @param document
* @param request
* @param response
* @throws Exception
*/
@SuppressWarnings({ "unused", "rawtypes" })
public void InventarioManual(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
document1 = document;
try {
InventarioDTO inventarioDTO = (InventarioDTO) document.getBean();
Map map = document.getForm("form").getDocument().getValuesForm();
Object ips = map.get("IPS");
listNetMap = new ArrayList<NetMapDTO>();
NetMapDTO netMapDto = null;
String[] ipMac = null;
NetMapService netMapService = (NetMapService) ServiceLocator.getInstance().getService(NetMapService.class, null);
if (ips != null) {
if (ips.getClass().getName().equalsIgnoreCase("[Ljava.lang.String;")) {
String[] arrayIp = (String[]) ips;
for (String ip : arrayIp) {
netMapDto = new NetMapDTO();
ipMac = ip.split("_");
netMapDto.setIp(ipMac[0]);
if (ipMac.length > 1) {
netMapDto.setMac(ipMac[1]);
}
List<NetMapDTO> lstNetMap = netMapService.verificarExistenciaIp(netMapDto);
if (lstNetMap != null && lstNetMap.size() == 0) {
netMapDto.setIcNovo("false");
} else {
netMapDto.setIcNovo("true");
}
listNetMap.add(netMapDto);
}
} else {
String iP = (String) ips;
if (!iP.equals("")) {
netMapDto = new NetMapDTO();
ipMac = iP.split("_");
netMapDto.setIp(ipMac[0]);
if (ipMac.length > 1) {
netMapDto.setMac(ipMac[1]);
}
List<NetMapDTO> lstNetMap = netMapService.verificarExistenciaIp(netMapDto);
if (netMapDto != null && lstNetMap != null && lstNetMap.size() == 0) {
netMapDto.setIcNovo("false");
} else if(netMapDto != null) {
netMapDto.setIcNovo("true");
}
listNetMap.add(netMapDto);
}
}
}
String atributos = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.Atributo, " ");
String noPesquisa = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.NoPesquisa, " ");
String[] arr = (String[]) (atributos == null ? "" : atributos.trim().split(","));
if (VALUE.equalsIgnoreCase((noPesquisa == null ? "" : noPesquisa.trim())) && VALUES_ATRIBUTOS.containsAll(Arrays.asList(arr))) {
lstErro = new Servidor().carregarListaIP(listNetMap);
Thread messageHandling = new Thread() {
public void run() {
try {
this.getPreencheTabelaResultado(this.tabelaResultado(lstErro, listNetMap), document1);
} catch (Exception e) {
e.printStackTrace();
}
}
private void getPreencheTabelaResultado(List<NetMapDTO> listnetMap, DocumentHTML document) throws Exception {
StringBuilder dados = new StringBuilder();
dados.append("<table class='table' id='tblipResultado' >");
dados.append("<tr>");
dados.append("<td colspan = 10 style=' width: 590px; border: 1px solid #ddd;padding: 4px 10px; border-left: none; border-right: none; background: #eee; ' > ");
dados.append("</td></tr>");
int cont = 0;
String trAbre = "<tr>";
String trFecha = "</tr>";
if (listnetMap != null) {
for (NetMapDTO netMapDTO : listnetMap) {
if (cont == 0) {
dados.append(trAbre);
dados.append("<td> ");
dados.append("<label>" + netMapDTO.getCorRetorno());
dados.append("</label></td>");
cont++;
} else if (cont == 5) {
dados.append("<td>");
dados.append("<label>" + netMapDTO.getCorRetorno());
dados.append("</label></td>" + trFecha);
cont = 0;
} else {
dados.append("<td> ");
dados.append("<label>" + netMapDTO.getCorRetorno());
dados.append("</label></td>");
}
cont++;
}
}
dados.append("</table>");
HTMLElement htmlele = document.getElementById("resultado");
htmlele.setInnerHTML(dados.toString());
document.executeScript("JANELA_AGUARDE_MENU.hide();$('#loading_overlay').hide();");
document.executeScript("$('#POPUP_RESULTADO_INVENTARIO').dialog('open');");
}
private List<NetMapDTO> tabelaResultado(List<NetMapDTO> lstNetMapDtoErro, List<NetMapDTO> netMapDtoInventariar) {
List<NetMapDTO> lstRetorno = new ArrayList<NetMapDTO>();
for (NetMapDTO netMapDTO : netMapDtoInventariar) {
if (lstNetMapDtoErro != null && lstNetMapDtoErro.size() > 0) {
for (NetMapDTO netMapDTOErro : lstNetMapDtoErro) {
if (netMapDTO.getIp().equals(netMapDTOErro.getIp())) {
String ipCor = netMapDTO.getIp();
netMapDTO.setCorRetorno("<span style='color: red'>" + ipCor + "</span>");
break;
} else {
String ipCor = netMapDTO.getIp();
String icNovo = "";
if (netMapDTO.getIcNovo() == null && netMapDTOErro.getIcNovo() != null) {
netMapDTO.setIcNovo(netMapDTOErro.getIcNovo());
}
if (netMapDTO.getIcNovo().equalsIgnoreCase("true")) {
icNovo = "";
}
netMapDTO.setCorRetorno("<span style='color: green'>" + ipCor + "</span>" + icNovo);
netMapDTO.setAtivo("");
}
}
} else {
String ipCor = netMapDTO.getIp();
String icNovo = "";
if (netMapDTO.getIcNovo().equalsIgnoreCase("true")) {
icNovo = "";
}
netMapDTO.setCorRetorno("<span style='color: green'>" + ipCor + "</span>" + icNovo);
netMapDTO.setAtivo("");
}
lstRetorno.add(netMapDTO);
}
return lstRetorno;
}
};
messageHandling.start();
messageHandling.join();
} else {
document.alert(UtilI18N.internacionaliza(request, "inventario.validacao.atributoNoPesquisa"));
document.executeScript("JANELA_AGUARDE_MENU.hide();$('#loading_overlay').hide();");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Verifica Qual Ip nao foi feito o inventario e qual fez
*
* @param lstNetMapDtoErro
* (List NetMapDTO)
* @param netMapDtoInventariar
* (List NetMapDTO)
* @throws Exception
*/
@SuppressWarnings("unused")
private List<NetMapDTO> tabelaResultado(List<NetMapDTO> lstNetMapDtoErro, List<NetMapDTO> netMapDtoInventariar) throws Exception {
List<NetMapDTO> lstRetorno = new ArrayList<NetMapDTO>();
try {
for (NetMapDTO netMapDTO : netMapDtoInventariar) {
if (lstNetMapDtoErro != null && lstNetMapDtoErro.size() > 0) {
for (NetMapDTO netMapDTOErro : lstNetMapDtoErro) {
if (netMapDTO.getIp().equals(netMapDTOErro.getIp())) {
String ipCor = netMapDTO.getIp();
netMapDTO.setCorRetorno("<span style='color: red'>" + ipCor + "</span>");
break;
} else {
String ipCor = netMapDTO.getIp();
String icNovo = "";
if(netMapDTO.getIcNovo() == null && netMapDTOErro.getIcNovo() != null){
netMapDTO.setIcNovo(netMapDTOErro.getIcNovo());
}
if (netMapDTO.getIcNovo().equalsIgnoreCase("true")) {
icNovo = "";
}
netMapDTO.setCorRetorno("<span style='color: green'>" + ipCor + "</span>" + icNovo);
netMapDTO.setAtivo("");
}
}
} else {
String ipCor = netMapDTO.getIp();
String icNovo = "";
if (netMapDTO.getIcNovo().equalsIgnoreCase("true")) {
icNovo = "";
}
netMapDTO.setCorRetorno("<span style='color: green'>" + ipCor + "</span>" + icNovo);
netMapDTO.setAtivo("");
}
lstRetorno.add(netMapDTO);
}
} catch (Exception e) {
e.printStackTrace();
}
return lstRetorno;
}
/**
* Preenche tabela na POPUP_RESULTADO_INVENTARIO
*
* @param listnetMap
* @param document
* @throws Exception
*/
public void getPreencheTabelaResultado(List<NetMapDTO> listnetMap, DocumentHTML document) throws Exception {
StringBuilder dados = new StringBuilder();
dados.append("<table class='table' id='tblipResultado' >");
try {
dados.append("<tr>");
dados.append("<td colspan = 10 style=' width: 590px; border: 1px solid #ddd;padding: 4px 10px; border-left: none; border-right: none; background: #eee; ' > ");
dados.append("</td></tr>");
int cont = 0;
String trAbre = "<tr>";
String trFecha = "</tr>";
if (listnetMap != null) {
for (NetMapDTO netMapDTO : listnetMap) {
if (cont == 0) {
dados.append(trAbre);
dados.append("<td> ");
dados.append("<label>" + netMapDTO.getCorRetorno());
dados.append("</label></td>");
cont++;
} else if (cont == 5) {
dados.append("<td>");
dados.append("<label>" + netMapDTO.getCorRetorno());
dados.append("</label></td>" + trFecha);
cont = 0;
} else {
dados.append("<td> ");
dados.append("<label>" + netMapDTO.getCorRetorno());
dados.append("</label></td>");
}
cont++;
}
}
dados.append("</table>");
HTMLElement htmlele = document.getElementById("resultado");
htmlele.setInnerHTML(dados.toString());
document.executeScript("JANELA_AGUARDE_MENU.hide();$('#loading_overlay').hide();");
document.executeScript("$('#POPUP_RESULTADO_INVENTARIO').dialog('open');");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
@SuppressWarnings("rawtypes")
public Class getBeanClass() {
return InventarioDTO.class;
}
/**
* Rotina que gera inventario manual
*
* @param document
* @param request
* @param response
* @throws Exception
*/
@SuppressWarnings({"unused"})
public void InventarioAutomatico(String ip) throws Exception {
NetMapDTO netMapDto = new NetMapDTO();
List<NetMapDTO> listNetMap = new ArrayList<NetMapDTO>();
netMapDto.setIp(ip);
String[] ipMac = null;
listNetMap.add(netMapDto);
List<NetMapDTO> lstErro = new Servidor().carregarListaIP(listNetMap);
}
}