public void GenerarSalidaCM(HashSet <string> InventarioCM, List <string> Archivos, string App, ProcesoDto pdt)
        {
            ProcesoAvanceDto pdtoA  = new ProcesoAvanceDto();
            Proceso          proc   = new Proceso();
            double           total  = Archivos.Count();
            double           avance = 27 / total;

            for (int i = 0; i <= Archivos.Count() - 1; i++)
            {
                //Aquí van a ir los parametros para iniciar
                string      Ruta       = Archivos[i];
                string      Archivo    = Path.GetFileName(Ruta);
                int         NoLinea    = 0;
                RevisaLinea datosLinea = new RevisaLinea();

                //Empezar a leer el archivo
                using (StreamReader sr = new StreamReader(Ruta))
                {
                    while (sr.Peek() >= 0)
                    {
                        string lineaCodigo = sr.ReadLine().Trim();

                        //Contar No. Linea
                        ++NoLinea;

                        if (NoLinea == 1639)
                        {
                            NoLinea = NoLinea;
                        }

                        if (!String.IsNullOrEmpty(lineaCodigo))
                        {
                            //Actualizar el nuevo VerificaComentarios
                            lineaCodigo = VerCom.BuscarComentario(lineaCodigo);
                            if (!String.IsNullOrEmpty(lineaCodigo))
                            {
                                datosLinea.ObtenerSalida(lineaCodigo, Archivo, InventarioCM, Resultado, NoLinea, Ruta, Librerias);
                            }
                        }
                    }
                }
                proc.SeteaAvance("En Proceso", "OK", "OK", Math.Round((72 + avance * i), 0).ToString(), "70", "", "Recuperando Datos", pdtoA, pdt);
                proc.ActualizaProcesoAvance(pdtoA, pdt);
            }

            proc.SeteaAvance("En Proceso", "OK", "OK", "OK", "70", "", "Recuperando Datos", pdtoA, pdt);
            proc.ActualizaProcesoAvance(pdtoA, pdt);

            GuardaProcesoCM(pdtoA, pdt, Resultado);
            //System.IO.File.WriteAllLines(@"C:\INFONAVIT\ClasesMetodos.txt", Resultado);
        }
        public HashSet <string> GenerarInventarioCM(string Ruta, ProcesoDto pdto)
        {
            RevisaLinea DatosInventario = new RevisaLinea();

            try
            {
                string Archivo = Path.GetFileName(Ruta);
                Archivo = Regex.Replace(Archivo, @"\.\w+", string.Empty).Trim();
                using (StreamReader sr = new StreamReader(Ruta))
                {
                    while (sr.Peek() >= 0)
                    {
                        string lineaCodigo = sr.ReadLine().Trim();

                        if (!String.IsNullOrEmpty(lineaCodigo))
                        {
                            //if (lineaCodigo.IndexOf("oWorkgroup") > -1)
                            //    lineaCodigo = lineaCodigo;

                            lineaCodigo = VerCom.BuscarComentario(lineaCodigo);
                            if (!String.IsNullOrEmpty(lineaCodigo))
                            {
                                DatosInventario = DatosInventario.ObtenerInventario(lineaCodigo, Librerias);
                                if (DatosInventario.EsValido)
                                {
                                    InventarioCM.Add((string.IsNullOrEmpty(DatosInventario.NombreEspacio) ?
                                                      Archivo : DatosInventario.NombreEspacio) + "|" + DatosInventario.Nombre +
                                                     "|" + DatosInventario.Tipo);
                                }
                            }
                        }
                    }
                }
            }catch (Exception Err) {
                EscribeLogWS("ParseadorCM.GenerarInventarioCM " + Err.Message.ToString());
                ProcesoAvanceDto pdtoA = new ProcesoAvanceDto();
                Proceso          proc  = new Proceso();
                proc.SeteaAvance("Error", "OK", "X", "--", "--", Err.Message.ToString(), "Error al realizar la descompresión del archivo", pdtoA, pdto);
                proc.ActualizaProcesoAvance(pdtoA, pdto);
            }
            return(InventarioCM);
        }
        //ConfigurationManager.AppSettings["pcsv"].ToString()
        public void GeneraSalida(int CveAplicacion, string Ruta, ProcesoDto pdto)
        {
            ControlLog         ErrLog   = new ControlLog();
            Entrada            Ent      = new Entrada();
            AplicacionDto      AppDto   = new AplicacionDto();
            ExcluyeComentarios ExcCom   = new ExcluyeComentarios();
            Procesos           Procesos = new Procesos();
            Salida             Salida   = new Salida();
            DataTable          configuracionDt;
            DataRow            configuracion;
            string             extensiones  = "";
            ProcesoAvanceDto   pdtoA        = new ProcesoAvanceDto();
            Proceso            proc         = new Proceso();
            string             TipoAnalisis = "BD";

            proc.SeteaAvance("En Proceso", "OK", "OK", "1", "--", "", "Iniciando Parseo BD", pdtoA, pdto);
            proc.ActualizaProcesoAvance(pdtoA, pdto);

            //Carga los datos de configuracion la ruta ya se trae, no se utiliza la de configuración
            using (configuracionDt = Consultas(1, CveAplicacion));
            {
                if (configuracionDt == null || configuracionDt.Rows.Count < 1)
                {
                    ErrLog.EscribeLogWS("No se encontraron los datos de configuración de la aplicación");
                    configuracion = null;
                }
                else
                {
                    configuracion = configuracionDt.Rows[0];
                }
            }

            //Determina que extensiones se deben leer deacuerdo al lenguaje
            DataTable LenguajeApp = ConsultaLenguaje(Convert.ToString(CveAplicacion));

            if (LenguajeApp == null || LenguajeApp.Rows.Count < 1)
            {
                ErrLog.EscribeLogWS("No se encontraron los datos de lenguaje de la Aplicación");
                LenguajeApp = null;
            }

            DataRow Lenguaje = LenguajeApp.Rows[0];

            //if (Lenguaje["Lenguaje"].ToString() == "ASP")
            extensiones = configuracion["Extensiones"].ToString();
            //else
            // extensiones = configuracion["ExtensionesJava"].ToString();

            String[] extArray = extensiones.ToLower().Split(',');


            //Validación
            if (String.IsNullOrEmpty(Convert.ToString(CveAplicacion)))
            {
                ErrLog.EscribeLogWS("No asigno la clave de la aplicación a analizar.");
                return;
            }

            //Obtiene todos los archivos de la ruta que deben leerse se cambio la ruta como parametro
            Ent.ListarArchivos(listaArchivos, Ruta, extArray, Convert.ToString(CveAplicacion));

            //Validación
            if (listaArchivos.Where(l => l.Extension == "java").Count() > 5)
            {
                AppDto.Tecnologia = "JAVA";
            }
            else if (listaArchivos.Where(l => l.Extension == "cs").Count() > 5)
            {
                AppDto.Tecnologia = "NET";
            }
            else if (listaArchivos.Where(l => l.Extension == "asp").Count() > 5)
            {
                AppDto.Tecnologia = "ASP";
            }
            else if (listaArchivos.Where(l => l.Extension == "sql").Count() > 5)
            {
                AppDto.Tecnologia = "Oracle";
            }
            else if (listaArchivos.Where(l => l.Extension == "frm").Count() > 5)
            {
                AppDto.Tecnologia = "Visual Basic 6";
            }

            AppDto.CveAplicacion = Convert.ToString(CveAplicacion);

            ////Obtiene lista de marcas de comentarios
            //Comentarios = Ent.CargarComentarios(configuracion["RutaComentarios"].ToString());
            //if (Comentarios == null || !Comentarios.Any())
            //{
            //    ErrLog.EscribeLogWS("El archivo de comentarios esta vacío");
            //    return;
            //}
            //ExcCom.Comentarios = Comentarios;
            //ErrLog.EscribeLogWS("El archivo de comentarios ha sido cargado.");

            //Carga las cadenas que no deben considerarse
            _CadenasAIgnorar = Ent.CargarAIgnorar();
            if (_CadenasAIgnorar == null || !_CadenasAIgnorar.Any())
            {
                ErrLog.EscribeLogWS("No se encontraron cadenas a Ignorar");
                return;
            }
            ErrLog.EscribeLogWS("Cargando cadenas a encontrar...");

            //Obtener las lineas que contienen palabras relacionadas con objetos de la BD
            if (TipoAnalisis == "BD")
            {
                _CadenasAEncontrar = Ent.CargarObjetosBD();
                if (_CadenasAEncontrar == null)
                {
                    ErrLog.EscribeLogWS("No hay cadenas a encontrar, verifique el inventario de objetos");
                    return;
                }
                ErrLog.EscribeLogWS("Las cadenas a encontrar han sido cargadas.");

                if (AppDto.Tecnologia == "NET" || AppDto.Tecnologia == "ASP")
                {
                    ConexionesBd = Ent.EncontrarConexionesNet();
                }

                if (AppDto.Tecnologia == "JAVA")
                {
                    ConexionesBd = Ent.EncontrarConexionesJava();
                }

                if (ConexionesBd == null || ConexionesBd.Count < 1)
                {
                    ErrLog.EscribeLogWS("Dentro de la aplicación no se encontraron conexiones a BD");
                }
                else
                {
                    ErrLog.EscribeLogWS("Se encontraron en la aplicación conexiones a BD");
                    ConexionesBd.ForEach(conexion =>
                    {
                        _CadenasAEncontrar.Add(new CadenaAEncontrarDto
                        {
                            Grupo        = conexion.BaseDatos,
                            NombreObjeto = conexion.Nombre,
                            TipoObjeto   = "ConexionBD",
                            TipoBusqueda = 0,
                            TipoObjetoID = 7
                        });
                    });
                    _CadenasAEncontrar = Procesos.ReordenarCadenas(_CadenasAEncontrar, ConexionesBd, AppDto);
                }
            }

            Ent.CargarCadenasDesdeBD(_CadenasAEncontrar, TipoAnalisis, AppDto);
            Parseador parser = new Parseador()
            {
                CadenasAIgnorar   = _CadenasAIgnorar,
                CadenasAEncontrar = _CadenasAEncontrar,
                RutaAnalisis      = Ruta,
                Comentarios       = Comentarios,
                ConexionesBd      = ConexionesBd
            };

            proc.SeteaAvance("En Proceso", "OK", "OK", "2", "--", "", "Guardando Datos", pdtoA, pdto);
            proc.ActualizaProcesoAvance(pdtoA, pdto);

            try
            {
                listaHallazgos = parser.ProcesarArchivos(listaArchivos, AppDto, pdto);
            }
            catch (Exception ex)
            {
                ErrLog.EscribeLogWS("Fallo el procesamiento de archivos: " + ex.Message + " " + ex.StackTrace);
                return;
            }
            StringBuilder csvSalida = new StringBuilder();

            try
            {
                csvSalida.AppendLine("AplicacionID" + separador + "ClaveAplicacion" + separador + "NumLinea" + separador + "Referencia" + separador + "ObjetoBDID" + separador +
                                     "Objeto" + separador + "TipoObjetoID" + separador + "TipoObjeto" + separador + "BaseDatosID" + separador + "BaseDatos" + separador + "Archivo" + separador
                                     + "Extension" + separador + "BibPadre" + separador + "ObjPadre");

                ErrLog.EscribeLogWS("Generando salida ...");

                List <string> resultado = new List <string>();
                resultado = Salida.GenerarSalida(separador, csvSalida, listaHallazgos);
                GuardaProcesoBD(pdtoA, pdto, resultado);
            }
            catch (Exception ex)
            {
                ErrLog.EscribeLogWS("Fallo en GenerarSalida " + ex.Message + " " + ex.StackTrace);
                return;
            }

            string rutaSalida = pathsalida + pdto.ProcesoID + ".csv";

            try
            {
                //Agregar la carga a la tabla
                File.WriteAllText(rutaSalida + "", csvSalida.ToString());
                ErrLog.EscribeLogWS("Salida CSV '" + rutaSalida + "' generada.");
            }
            catch (Exception ex)
            {
                ErrLog.EscribeLogWS("El archivo de salida CSV no pudo generarse: " + ex.Message);
                return;
            }
            finally
            {
                ErrLog.EscribeLogWS("Proceso terminado");
            }
        }
Beispiel #4
0
        //Este metodo se encarga de comparar linea por linea del archivo con las cadenas
        //a encontrar e ignorar
        public List <ObjetoDto> ProcesarArchivos(List <ArchivoDto> listaArchivos, AplicacionDto AppDto, ProcesoDto pdto)
        {
            double           total  = listaArchivos.Count();
            double           avance = 38 / total;
            ProcesoAvanceDto pdtoA  = new ProcesoAvanceDto();
            Proceso          proc   = new Proceso();

            //if (AppDto.Tecnologia == "NET")
            //    EncontrarWsNet(listaArchivos);
            //else
            //    EncontrarWsJava(listaArchivos);

            int numArchivo = 1;

            Archivos = listaArchivos;

            foreach (ArchivoDto archivo in listaArchivos)
            //Parallel.ForEach(listaArchivos, archivo =>
            {
                ErrLog.EscribeLogWS("Procesando archivo: " + numArchivo + " de " + listaArchivos.Count + " " + archivo.Ruta);
                VerCom.ComentarioBloque = "";
                EncMet.Limpiar();

                using (StreamReader sr = new StreamReader(archivo.Ruta))
                {
                    NumLinea = 1;
                    while (sr.Peek() >= 0)
                    {
                        string lineaCodigo = sr.ReadLine().Trim();

                        if (!String.IsNullOrEmpty(lineaCodigo))
                        {
                            //lineaCodigo = ExcCom.BuscarComentario(lineaCodigo, archivo.Extension);
                            lineaCodigo = VerCom.BuscarComentario(lineaCodigo);
                            if (archivo.Extension == "cs" || archivo.Extension == "java")
                            {
                                ClaseMetodo = EncMet.EncuentraNombre(lineaCodigo);
                            }
                            else
                            {
                                ClaseMetodo = "";
                            }

                            if (!Excluir(lineaCodigo) && !string.IsNullOrEmpty(lineaCodigo))
                            {
                                ArchivoActual = archivo;

                                if (archivo.Extension == "aspx")
                                {
                                    if (lineaCodigo.ToLower().IndexOf("command") >= 0)
                                    {
                                        EncontrarCadena(lineaCodigo);
                                    }
                                }
                                else
                                {
                                    EncontrarCadena(lineaCodigo);
                                }
                            }
                        }
                        NumLinea++;
                    }
                }
                numArchivo++;
                proc.SeteaAvance("En Proceso", "OK", "OK", Math.Round(2 + (avance * numArchivo), 0).ToString(), "--", "", "Leyendo Archivos", pdtoA, pdto);
                proc.ActualizaProcesoAvance(pdtoA, pdto);
            }
            return(Objetos);
        }
        public HashSet <string> GenerarInventarioWS(string Ruta, ProcesoDto pdto, string Tipo)
        {
            try
            {
                using (StreamReader sr = new StreamReader(Ruta))
                {
                    IntDto.Nombre     = string.Empty;
                    IntDto.IP         = string.Empty;
                    IntDto.Middleware = string.Empty;
                    while (sr.Peek() >= 0)
                    {
                        string LineaCodigo = sr.ReadLine().Trim();

                        //if (LineaCodigo.IndexOf("http://www.presidencia.gob.mx") > -1)
                        //    LineaCodigo = LineaCodigo;

                        if (!String.IsNullOrEmpty(LineaCodigo))
                        {
                            // Los datos para los servicios de C# se encuentran dentro de la misma línea
                            if (Tipo.IndexOf("config") > -1)
                            {
                                IntDto = RI.ObtenerInventario(LineaCodigo, pdto);
                                if (!string.IsNullOrEmpty(IntDto.Nombre) && !string.IsNullOrEmpty(IntDto.IP))
                                {
                                    InventarioWS.Add(IntDto.Nombre + "|" + IntDto.IP + "|" + IntDto.Tipo + "|" + IntDto.Middleware);
                                }
                            }

                            // Los datos para los servicios de C# se encuentran dentro de la misma línea
                            if (Tipo.IndexOf("asp") > -1)
                            {
                                IntDto = RI.ObtenerInventario(LineaCodigo, pdto);
                                if (!string.IsNullOrEmpty(IntDto.Nombre) && !string.IsNullOrEmpty(IntDto.IP))
                                {
                                    InventarioWS.Add(IntDto.Nombre + "|" + IntDto.IP + "|" + IntDto.Tipo + "|" + IntDto.Middleware);
                                }
                            }

                            //Los datos para los servicios Java se encuentran en varias líneas
                            if (Tipo.IndexOf("wsdl") > -1)
                            {
                                //string Linea = LineaCodigo.ToLower();
                                Regex Regex = new Regex(@"service name=""\w+");
                                Match Match = Regex.Match(LineaCodigo);
                                if (Match.Success)
                                {
                                    string Nombre = Regex.Replace(Match.Value, @"service name=", string.Empty);
                                    Nombre        = Nombre.Replace(@"""", string.Empty).Replace("Service", string.Empty);
                                    IntDto.Nombre = Nombre.Trim();
                                }

                                Regex = new Regex(@"\bhttp://\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\S+\b");
                                Match = Regex.Match(LineaCodigo);
                                if (Match.Success)
                                {
                                    string IP = Match.Value;
                                    IntDto.IP = IP.Trim();
                                }

                                if (!string.IsNullOrEmpty(IntDto.IP))
                                {
                                    if (ObtenMiddleware(pdto.UsuarioID))
                                    {
                                        XmlDocument consultaxml = PAvanceXML;
                                        foreach (XmlNode Fila in consultaxml.DocumentElement.SelectSingleNode("Middleware").SelectNodes("row"))
                                        {
                                            if (IntDto.IP.IndexOf(Fila.Attributes["IP"].Value.ToString()) > -1)
                                            {
                                                IntDto.Middleware = Fila.Attributes["Middleware"].Value.ToString();
                                                break;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(IntDto.Nombre) && !string.IsNullOrEmpty(IntDto.IP))
                    {
                        InventarioWS.Add(IntDto.Nombre + "|" + IntDto.IP + "|" + IntDto.Tipo + "|" + IntDto.Middleware);
                    }
                }
            }
            catch (Exception Err)
            {
                EscribeLogWS("ParseadorWS.GenerarInventarioWS " + Err.Message.ToString());
                ProcesoAvanceDto pdtoA = new ProcesoAvanceDto();
                Proceso          proc  = new Proceso();
                proc.SeteaAvance("Error", "OK", "X", "--", "--", Err.Message.ToString(), "Error al realizar la descompresión del archivo", pdtoA, pdto);
                proc.ActualizaProcesoAvance(pdtoA, pdto);
            }
            return(InventarioWS);
        }