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"); } }
//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); }