public List <ConexionBDDto> EncontrarConexionesJava() { ExcluyeComentarios ExcCom = new ExcluyeComentarios(); ErrLog.EscribeLogWS("Buscando conexiones a BD..."); int NumLinea; List <ConexionBDDto> ListadoConexiones = new List <ConexionBDDto>(); foreach (ArchivoDto archivo in ArchivosConfiguracionJava) { //si el nombre del archivo tiene numeros entonces exluimos el archivo porque es un duplicado Match m = Regex.Match(archivo.Nombre, @"\d+"); if (m.Success || archivo.Nombre.ToLower().IndexOf("copy") >= 0) { continue; } NumLinea = 1; VerCom.ComentarioBloque = ""; using (StreamReader sr = new StreamReader(archivo.Ruta)) { while (sr.Peek() >= 0) { string linea = sr.ReadLine().Trim(); string lineaCodigo = linea.ToLower(); if (!String.IsNullOrEmpty(lineaCodigo)) { //lineaCodigo = ExcCom.BuscarComentario(lineaCodigo, archivo.Extension); lineaCodigo = VerCom.BuscarComentario(lineaCodigo); if (!string.IsNullOrEmpty(lineaCodigo) && lineaCodigo.IndexOf("jdbc") >= 0) { string nombreBd = "", nombreConexion = ""; Match match = Regex.Match(lineaCodigo, @"jdbc:\w+:|jdbc\/\w+"); if (match.Success) { string[] patrones = { @"database=\w+\s*\w+", @"databasename=\w+", @"jdbc\/\w+", @"[^jdbc]\/\w+[^\.{0}]" }; int index = 0; foreach (var patron in patrones) { Match mat = Regex.Match(lineaCodigo, patron); if (mat.Success) { switch (index) { case 0: nombreBd = mat.Value; nombreBd = nombreBd.Replace("database", string.Empty).Replace("=", string.Empty).Trim(); break; case 1: nombreBd = mat.Value; nombreBd = nombreBd.Replace("databasename", string.Empty).Replace("=", string.Empty).Trim(); break; case 2: nombreConexion = mat.Value; break; case 3: nombreBd = mat.Value; nombreBd = nombreBd.Replace("/", string.Empty).Replace("\"", string.Empty).Trim(); break; } //en el primer match true salimos break; } index++; } if (!string.IsNullOrEmpty(nombreBd) || !string.IsNullOrEmpty(nombreConexion)) { if (!ListadoConexiones.Exists(x => x.BaseDatos == nombreBd && x.Nombre == nombreConexion)) { ListadoConexiones.Add(new ConexionBDDto { BaseDatos = nombreBd, Jndi = nombreConexion, Nombre = nombreConexion }); } } } } } NumLinea++; } } } return(ListadoConexiones); }
//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"); } }
public List <ConexionBDDto> EncontrarConexionesNet() { ExcluyeComentarios ExcCom = new ExcluyeComentarios(); int NumLinea; List <ConexionBDDto> ListadoConexiones = new List <ConexionBDDto>(); foreach (ArchivoDto archivo in ArchivosConfiguracionNET) { //si el nombre del archivo tiene numeros entonces exluimos el archivo porque es un duplicado Match m = Regex.Match(archivo.Nombre, @"\d+"); if (m.Success) { continue; } if (archivo.Nombre.IndexOf("CambiaPwd") > -1) { NumLinea = 0; } NumLinea = 1; VerCom.ComentarioBloque = ""; using (StreamReader sr = new StreamReader(archivo.Ruta)) { while (sr.Peek() >= 0) { string linea = sr.ReadLine().Trim(); string lineaCodigo = linea.ToLower(); if (!String.IsNullOrEmpty(lineaCodigo)) { lineaCodigo = VerCom.BuscarComentario(lineaCodigo); if (!string.IsNullOrEmpty(lineaCodigo)) { string nombreBd = "", nombreConexion = "", nombreServidor = ""; if (lineaCodigo.IndexOf("connectionstring") >= 0) { string[] patrones = { @"database\s*=\s*(\w+)", @"initial\s*catalog\s*=\s*(\w+)\s*(\w*)", "name\\s*=\\s*\"(\\w+)\"", @"server\s*=\s*\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", @"data source=\w+", @"provider=\w+" }; int index = 0; foreach (var patron in patrones) { Match match = Regex.Match(lineaCodigo, patron); if (match.Success) { switch (index) { case 0: nombreBd = match.Value; nombreBd = nombreBd.Replace("database", string.Empty).Replace("=", string.Empty).Trim(); break; case 1: nombreBd = match.Value; nombreBd = nombreBd.Replace("initial", string.Empty).Replace("catalog", string.Empty).Replace("=", string.Empty).Trim(); break; case 2: nombreConexion = match.Value; nombreConexion = nombreConexion.Replace("name", string.Empty).Replace("=", string.Empty).Replace("\"", string.Empty).Trim(); break; case 3: nombreServidor = match.Value; nombreServidor = nombreServidor.Replace("server", string.Empty).Replace("=", string.Empty).Trim(); break; case 4: nombreBd = match.Value; nombreBd = nombreBd.Replace("data source", string.Empty).Replace("=", string.Empty).Trim(); break; case 5: nombreConexion = match.Value; nombreConexion = nombreConexion.Replace("provider", string.Empty).Replace("=", string.Empty).Replace("\"", string.Empty).Trim(); break; } } index++; } if (!string.IsNullOrEmpty(nombreBd) && !string.IsNullOrEmpty(nombreConexion)) { if (!ListadoConexiones.Exists(x => x.BaseDatos == nombreBd && x.Nombre == nombreConexion)) { ListadoConexiones.Add(new ConexionBDDto { BaseDatos = nombreBd, Nombre = nombreConexion, Servidor = nombreServidor }); } } } } } NumLinea++; } } } return(ListadoConexiones); }