예제 #1
0
        //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");
            }
        }
예제 #2
0
        public List <CadenaAEncontrarDto> ReordenarCadenas(List <CadenaAEncontrarDto> cadenas, List <ConexionBDDto> conexionesBd, AplicacionDto AppDto)
        {
            if (AppDto.Tecnologia == "NET")
            {
                string conPrincipal = conexionesBd.FirstOrDefault().BaseDatos.ToLower();

                foreach (CadenaAEncontrarDto cadena in cadenas)
                {
                    if (cadena.Grupo.ToLower() == conPrincipal)
                    {
                        CadenasApp.Add(cadena);
                    }
                }

                foreach (CadenaAEncontrarDto cadena in cadenas)
                {
                    var con = conexionesBd.FirstOrDefault(c => c.BaseDatos.ToLower() == cadena.Grupo.ToLower() && c.BaseDatos.ToLower() != conPrincipal);
                    if (con != null)
                    {
                        CadenasApp.Add(cadena);
                    }
                    else
                    {
                        if (cadena.Grupo.ToLower() != conPrincipal)
                        {
                            OtrasCadenas.Add(cadena);
                        }
                    }
                }
                //Quitamos las cadenas de bases de datos diferentes a las de la app
                //if (CadenasApp != null && OtrasCadenas != null)
                //    OtrasCadenas.ForEach(x => { CadenasApp.Add(x); });
            }
            else
            {
                string jndi = "", baseDatos = "";
                foreach (var con in conexionesBd)
                {
                    if (!string.IsNullOrEmpty(con.BaseDatos))
                    {
                        baseDatos = baseDatos + "," + "'" + con.BaseDatos + "'";
                    }
                    else
                    {
                        jndi = jndi + "," + "'" + con.Jndi + "'";
                    }
                }
                baseDatos = baseDatos.TrimStart(',');
                jndi      = jndi.TrimStart(',');
                if (string.IsNullOrEmpty(jndi))
                {
                    jndi = "''";
                }
                if (string.IsNullOrEmpty(baseDatos))
                {
                    baseDatos = "''";
                }
                //DataTable tabla = Entrada.EjecutaConsulta("SELECT obj.nombre_bd, obj.nombre_objeto, obj.Tipo_Objeto, jndi.jndi from BD_JNDI Jndi " +
                //                                           "inner join OBJETOS_BD obj on " +
                //                                           "lower(obj.nombre_bd) = lower(jndi.basedatos) " +
                //                                           "where lower(Jndi.jndi) in ("+ jndi.ToLower() +") or lower(Jndi.BaseDatos) in ("+ baseDatos.ToLower() + ");");

                //SqlParameter[] Params = new SqlParameter[2];
                //Params[0] = new SqlParameter("@ListaJndi", SqlDbType.VarChar);
                string ListaJNDI = jndi.ToLower();
                //Params[1] = new SqlParameter("@ListaBd", SqlDbType.VarChar);
                string ListaBD = baseDatos.ToLower();

                using (DataTable tabla = SeleccionaObjetosBD(ListaBD, ListaJNDI))
                {
                    if (tabla != null && tabla.Rows.Count > 0)
                    {
                        foreach (DataRow fila in tabla.Rows)
                        {
                            CadenasApp.Add(new CadenaAEncontrarDto
                            {
                                Grupo        = fila["NOMBRE_BD"].ToString(),
                                TipoObjeto   = fila["TIPO_OBJETO"].ToString(),
                                NombreObjeto = fila["NOMBRE_OBJETO"].ToString(),
                                //TipoBusqueda = secciones[4] == "" ? TipoBusqueda.PalabraCompleta : (TipoBusqueda)Convert.ToInt32(secciones[4])
                                TipoBusqueda = 0
                            });
                        }
                    }
                    else
                    {
                        //cadenas.ForEach(x => { CadenasApp.Add(x); });
                        CadenasApp.AddRange(cadenas);
                    }
                }
            }
            return(CadenasApp);
        }
예제 #3
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);
        }
예제 #4
0
        public void CargarCadenasDesdeBD(List <CadenaAEncontrarDto> listadoObjetos, string tipoAnalisis, AplicacionDto AppDto)
        {
            List <CadenaAEncontrarDto> listado = new List <CadenaAEncontrarDto>();

            try
            {
                //SqlParameter[] Params = new SqlParameter[2];
                //Params[0] = new SqlParameter("@Tecnologia", SqlDbType.VarChar);
                string Tecnologia = AppDto.Tecnologia;
                //Params[1] = new SqlParameter("@Grupos", SqlDbType.VarChar);
                string Grupos;
                if (tipoAnalisis == "WS")
                {
                    Grupos = "webservice";
                }
                else
                {
                    Grupos = "conexionbd";
                }

                using (DataTable tabla = ConsultaPalabras(Tecnologia, Grupos))
                {
                    if (tabla == null || tabla.Rows.Count < 1)
                    {
                        ErrLog.EscribeLogWS("No hay mas cadenas a encontrar en la BD...");
                    }
                    else
                    {
                        foreach (DataRow fila in tabla.Rows)
                        {
                            if (!listado.Exists(x => x.TipoObjeto == fila["TipoPalabra"].ToString() && x.NombreObjeto == fila["PalabraClave"].ToString()))
                            {
                                int temp = 0;
                                listado.Add(new CadenaAEncontrarDto()
                                {
                                    Grupo        = fila["GRUPO"].ToString(),
                                    TipoObjeto   = fila["TipoPalabra"].ToString(),
                                    NombreObjeto = fila["PalabraClave"].ToString(),
                                    TipoBusqueda = int.TryParse(fila["TipoBusqueda"].ToString(), out temp) ? (TipoBusqueda)Convert.ToInt32(temp) : 0,
                                    Tecnologia   = fila["TECNOLOGIA"].ToString()
                                });
                            }
                        }
                    }
                }
                ErrLog.EscribeLogWS("Cargando palabras a buscar desde la BD.");
                listadoObjetos.AddRange(listado);
            }
            catch (Exception ex)
            {
                ErrLog.EscribeLogWS("No se pudieron cargar los palabras buscar desde la BD" + ex.Message);
            }
        }