/// <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) }); } }
/// <summary> /// Proceso de sincronizacion /// </summary> private void sincroniceKPIs() { bool local = true; this.addText("***************** INICIANDO PROCESO DE SINCRONIZACIÓN DE KPIS *****************\n"); string compartida = System.Configuration.ConfigurationManager.AppSettings["CarpetaCompartida"]; this.addText("Obteniendo archivos de la carpeta remota \n"); string[] archivosTerritorio = this.obtenerArchivos(compartida,territorio+"*.zip"); if (archivosTerritorio.Length == 0) this.addText("No se detectaron archivos en la carpeta remota\n"); setMaxBar(archivosTerritorio.Length); Consultas c = new Consultas(); foreach (string file in archivosTerritorio) { try { FileInfo fkpi = new FileInfo(file); string kpi = fkpi.Name.Substring(fkpi.Name.IndexOf("_") + 1, (fkpi.Name.LastIndexOf("_") - 1 - 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_FILES para el KPI "+kpi+"\n"); c.InsertNMT_TMP_FILES(file,kpi,territorio,dateLong); } catch (Exception ex) { this.addText("Error insertando registro en NMT_TMP_FILES para el KPI del 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_FILES(); DataTable kpis = new DataTable(); kpis = c.SelectNMT_TMP_FILES().Tables[0]; if (kpis.Rows.Count == 0) this.addText("No se detectaron archivos a cargar \n"); foreach (DataRow g in kpis.Rows) { string file = (string)g["FULL_FILENAME"]; string kpi = (string)g["FILENAME_KPI"]; long dateLong = (long)g["FILENAME_DATE"]; this.cargaCurrentFiles(file, kpi, territorio, dateLong); } this.addText("Seleccionando archivos con bit para carga en CURRENT FILES\n"); DataTable kpisCurrent = new DataTable(); kpisCurrent = c.SelectNMT_CURRENT_FILES().Tables[0]; setMaxBar(kpisCurrent.Rows.Count); if (kpisCurrent.Rows.Count == 0) this.addText("No se detectaron archivos a cargar con bit en 1\n"); foreach (DataRow g in kpisCurrent.Rows) { string file = (string)g["FULL_FILENAME"]; string kpi = (string)g["FILENAME_KPI"]; long dateLong = (long)g["FILENAME_DATE"]; DateTime startTime = DateTime.Now; try { this.addText("Realizando la extracción del .zip\n"); List<string> files = this.descomprimir(file); this.addText("Homologando "+kpi+" \n"); bool exitoLectura = true; try { string tabla = this.homologue(kpi); DataTable datosTabla = new DataTable(); datosTabla = c.CreateTableKPITemp(tabla).Tables[0]; this.addText("Iniciando lectura de archivo\n"); StreamReader reader = null; try { reader = new StreamReader(files[0]); string line = string.Empty; while ((line = reader.ReadLine()) != null) { try { string[] valores = line.Split('|'); int index = 0; string columns = ""; string inserts = ""; bool a = false; foreach (DataRow gdata in datosTabla.Rows) { string column = (string)gdata["COLUMN_NAME"]; if (column == "Ciclo") a = true; string tipo = (string)gdata["TYPE_NAME"]; columns += column + ","; string val = ""; // --INI BZG ADECUACION COMILLAS if (tipo.ToLower().Contains("char")) val += "{\"}"; // --FIN BZG ADECUACION COMILLAS if (index < valores.Length) val += valores[index]; // --INI BZG ADECUACION COMILLAS if (tipo.ToLower().Contains("char")) val += "{\"}"; // --FIN BZG ADECUACION COMILLAS if (a == true) val = val.Substring(0, 6); inserts += val + ","; index++; a = false; } try { c.ExecuteSQLNMT_TMP_FILES(tabla, columns.Remove(columns.Length - 1, 1), inserts.Remove(inserts.Length - 1, 1),local); } catch (Exception ex2) { this.addText("Error insertando los datos en la tabla temporal\n" + ex2.Message); this.addText("Registro " + inserts.Remove(inserts.Length - 1, 1) + "\n"); exitoLectura = exitoLectura && false; } } catch (Exception ex3) { this.addText("Error mapeando columnas de tabla con columnas del archivo\n" + ex3.Message); exitoLectura = exitoLectura && false; } } reader.Close(); } catch (Exception ex4) { this.addText("Error en la lectura del archivo "+file+"\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 { c.Truncate_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"); //--------- BZG c.SetLoadedNMT_CURRENT_FILES(kpi); //--------- try { this.addText("Insertando a bitacora\n"); DateTime stopTime = DateTime.Now; TimeSpan duration = stopTime - startTime; double totalSeconds = (double)stopTime.Ticks / TimeSpan.TicksPerSecond; string dateFormat = stopTime.ToString("yyyyMMddHHmmssffff"); long fecha_sin_int = Convert.ToInt64(dateFormat); int duracion = Convert.ToInt32(duration.TotalSeconds); c.InsertVitacora(usuario, WindowsIdentity.GetCurrent().Name, DateTime.Now, versionCliente, duracion, kpi, territorio, fecha_sin_int, true); } catch (Exception ex5) { this.addText("Error en la inserción a bitacora\n" + ex5.Message); } this.addText("Eliminando tabla temporal " + tabla + "_TMP \n"); try { c.Drop_NMT_Table(tabla + "_TMP", local); } catch (Exception ex6) { this.addText("Error eliminando la tabla temporal " + tabla + "_TMP\n" + ex6.Message); } } catch (Exception ex7) { this.addText("Error al intentar cargar los datos desde la tabla temporal " + tabla + "_TMP\n" + ex7.Message); } } catch (Exception ex8) { this.addText("Error al intentar truncar la tabla\n" + ex8.Message); } } else { try { c.Drop_NMT_Table(tabla + "_TMP", local); } catch (Exception ex9) { this.addText("Error eliminando la tabla temporal " + tabla + "_TMP\n" + ex9.Message); } } } catch (Exception ex10) { this.addText("Ocurrió un error tratando de crear la tabla temporal\n" + ex10.Message); } } catch(Exception ex11) { this.addText("Ocurrió un error en la extracción del .zip\n" + ex11.Message); } actualProces++; Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { ProgressBar.ValueProperty, Convert.ToDouble(actualProces) }); } }