Ejemplo n.º 1
0
        /// <summary>
        /// Proceso de sincronizacion catalogos
        /// </summary>
        private void sincroniceCatalogos()
        {
            bool local = true;
            this.addText("*****************  INICIANDO PROCESO DE SINCRONIZACIÓN DE CATÁLOGOS  *****************\n");
            string compartida = System.Configuration.ConfigurationManager.AppSettings["CarpetaCompartidaCatalogos"];
            this.addText("Obteniendo archivos de la carpeta remota para los catálogos \n");
            string[] archivosTerritorio = this.obtenerArchivos(compartida, "*.zip");
            if(archivosTerritorio.Length==0)
                this.addText("No se detectaron archivos en la carpeta remota para los catálogos \n");
            setMaxBar(archivosTerritorio.Length);
            Consultas c = new Consultas();
            foreach (string file in archivosTerritorio)
            {
                try
                {
                    FileInfo fkpi = new FileInfo(file);
                    string catalogo = fkpi.Name.Substring(0, (fkpi.Name.IndexOf("_")));
                    string date = file.Substring(file.LastIndexOf("_") + 1, (file.Length - 5 - file.LastIndexOf("_")));
                    long dateLong = -1;
                    try
                    {
                        dateLong = Convert.ToInt64(date);
                    }
                    catch{ }
                    this.addText("Insertando registro en NMT_TMP_CAT_FILES para el catálogo " + catalogo + "\n");
                    c.InsertNMT_TMP_CAT_FILES(file, catalogo, dateLong);
                }
                catch (Exception ex)
                {
                    this.addText("Error insertando registro en NMT_TMP_CAT_FILES para el catálogo en el archivo" + file + "\n" + ex.Message);
                }
                actualProces++;
                Dispatcher.Invoke(updatePbDelegate,
                System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, Convert.ToDouble(actualProces) });
            }
            this.addText("Seleccionando archivos a cargar\n");
            c.CompareNMT_TMP_CAT_FILES();
            DataTable cata = new DataTable();
            cata = c.SelectNMT_TMP_CAT_FILES().Tables[0];
            if(cata.Rows.Count==0)
                this.addText("No se detectaron archivos a cargar \n");
            foreach (DataRow g in cata.Rows)
            {
                string file = (string)g["FULL_FILENAME"];
                string catalog = (string)g["CATALOG_NAME"];
                long dateLong = (long)g["FILENAME_DATE"];
                this.cargaCurrentCatalogos(file, catalog, dateLong);
            }
            this.addText("Seleccionando archivos con bit para carga en CURRENT CAT\n");
            DataTable catCurrent = new DataTable();
            catCurrent = c.SelectNMT_CURRENT_CAT_FILES().Tables[0];
            setMaxBar(catCurrent.Rows.Count);
            if (catCurrent.Rows.Count==0)
                this.addText("No se detectaron archivos a cargar con bit en 1\n");
            foreach (DataRow g in catCurrent.Rows)
            {
                string file = (string)g["FULL_FILENAME"];
                string catalog = (string)g["CATALOG_NAME"];
                long dateLong = (long)g["FILENAME_DATE"];
                try
                {
                    this.addText("Realizando la extracción del .zip\n");
                    List<string> files = this.descomprimir(file);
                    this.addText("Homologando " + catalog + " \n");
                    try
                    {
                        string tabla = this.homologueCatalogo(catalog);
                        DataTable datosTabla = new DataTable();
                        datosTabla = c.CreateTableCatalogoTemp(tabla,local).Tables[0];
                        this.addText("Iniciando lectura de archivo\n");
                        StreamReader reader = null;
                        bool exitoLectura = true;
                        try
                        {
                            reader = new StreamReader(files[0], Encoding.Default);
                            string line = string.Empty;
                            while ((line = reader.ReadLine()) != null)
                            {
                                try
                                {
                                    string[] valores = line.Split('|');
                                    int index = 0;
                                    string columns = "";
                                    string inserts = "";
                                    foreach (DataRow gdata in datosTabla.Rows)
                                    {
                                        string column = (string)gdata["COLUMN_NAME"];
                                        string tipo = (string)gdata["TYPE_NAME"];
                                        columns += column + ",";
                                        string val = "";
                                        if (tipo.ToLower().Contains("char")) val += "{\"}";
                                        if (index < valores.Length) val += valores[index];
                                        if (tipo.ToLower().Contains("char")) val += "{\"}";
                                        inserts += val + ",";
                                        index++;
                                    }
                                    try
                                    {
                                        c.ExecuteSQLNMT_CAT_TMP_FILES(tabla, columns.Remove(columns.Length - 1, 1), inserts.Remove(inserts.Length - 1, 1), local);
                                    }
                                    catch (Exception ex2)
                                    {
                                        exitoLectura = exitoLectura && false;
                                        this.addText("Error insertando los datos en la tabla temporal\n" + ex2.Message);
                                    }
                                }
                                catch (Exception ex3)
                                {
                                    exitoLectura = exitoLectura && false;
                                    this.addText("Error mapeando columnas de tabla con columnas del archivo\n" + ex3.Message);
                                }
                            }
                            reader.Close();
                        }
                        catch (Exception ex4)
                        {
                            this.addText("Error en la lectura del archivo\n" + ex4.Message);
                            if (reader != null)
                                reader.Close();
                            exitoLectura = exitoLectura && false;
                        }
                        if (exitoLectura)
                        {
                            this.addText("Tabla temporal " + tabla + "_TMP creada y cargada\n");
                            this.addText("Truncando la tabla " + tabla + "\n");
                            try
                            {
                                //AQUI TRUNCA LA TABLA DE KPI NORMAL
                                c.Truncate_NMT_Table(tabla, local);
                                //c.Drop_NMT_Table(tabla, local);
                                this.addText("Tabla " + tabla + " truncada\n");
                                this.addText("Cargando los datos desde la tabla temporal " + tabla + "_TMP\n");
                                try
                                {
                                    c.Merge_NMT_Table(tabla + "_TMP", tabla, local);
                                    this.addText("Carga de datos desde la tabla temporal " + tabla + "_TMP exitosa\n");
                                    // ----- INI - BZG - 20120227 -----------
                                    c.SetLoadedNMT_CURRENT_CAT_FILES(catalog);
                                    // ----- FIN - BZG - 20120227 -----------
                                    this.addText("Eliminando tabla temporal " + tabla + "_TMP \n");
                                    try
                                    {
                                        c.Drop_NMT_Table(tabla + "_TMP", local);
                                    }
                                    catch (Exception ex5)
                                    {
                                        this.addText("Error eliminando la tabla temporal " + tabla + "_TMP\n"+ ex5.Message);
                                    }
                                }
                                catch (Exception ex6)
                                {
                                    this.addText("Error al intentar cargar los datos desde la tabla temporal " + tabla + "_TMP\n"+ex6.Message);
                                }
                            }
                            catch (Exception ex7)
                            {
                                this.addText("Error al intentar truncar la tabla\n" + ex7.Message);
                            }
                        }
                    }
                    catch (Exception ex8)
                    {
                        this.addText("Ocurrió un error tratando de crear la tabla temporal\n" + ex8.Message);
                    }

                }
                catch (Exception ex9)
                {
                    this.addText("Ocurrió un error en la extracción del .zip\n" + ex9.Message);
                }

                this.addText("\nEl proceso ha finalizado.\n");
                actualProces++;
                Dispatcher.Invoke(updatePbDelegate,
                System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, Convert.ToDouble(actualProces) });
            }
        }