private void tsbGenerarExcel_Click(object sender, EventArgs e) { if (_excel == null) { MessageBox.Show(this, "Debes cargar un archivo de configuración para lanzar la actualización", "No hay archivo cargaddo", MessageBoxButtons.OK, MessageBoxIcon.Error); } try { _excel.ActualizarDatos(_conexion); } catch (Exception ex) { log.Error("Error al actualizar los datos desde el GUI", ex); } }
static int Main(string[] args) { // Carga la configuración de log4net desde App.congif log4net.Config.XmlConfigurator.Configure(); if (log.IsDebugEnabled) { log.Debug("Configurado log4net."); } Console.WriteLine(); bool showHelp = false; bool showGui = false; int errorLevel = 0; string server = String.Empty; string db = String.Empty; string fileConf = String.Empty; var p = new OptionSet() { { "g|gui", "En lugar de lanzar el proceso, muestra la interfaz gráfica para un uso manual.", v => showGui = (v != null) }, { "v|verbose=", "Especifica el nivel de detalle del archivo LOG ignorando la " + "configuración definida en el archivo .CONGIF.\n" + "\t5 - Todos los niveles: DEBUG, INFO, WARN, ERROR, FATAL\n" + "\t4 - INFO, WARN, ERROR, FATAL\n" + "\t3 - WARN, ERROR, FATAL\n" + "\t2 - ERROR, FATAL\n" + "\t1 - FATAL\n", v => errorLevel = Int32.Parse(v) }, { "s|server=", "Servidor SQL Server para la conexión", v => server = v }, { "d|database=", "Nombre de la base de datos de inicio en el servidor SQL Server para la conexión", v => db = v }, { "c|config=", "Ruta completa del archivo JSON de configuración de las actualizaciones", v => fileConf = v }, { "h|help", "Muestra las opciones de la línea de comandos", v => showHelp = (v != null) } }; List <string> extra; try { log.Debug("Parseando los argumentos"); extra = p.Parse(args); } catch (Exception ex) { log.Fatal("Argumentos de la línea de comandos no válidos", ex); ShowHelp(p); } switch (errorLevel) { case 0: // se utiliza el nivel establecido en la configuración de la app. break; case 1: log.Logger.Repository.Threshold = Level.Fatal; break; case 2: log.Logger.Repository.Threshold = Level.Error; break; case 3: log.Logger.Repository.Threshold = Level.Warn; break; case 4: log.Logger.Repository.Threshold = Level.Info; break; case 5: log.Logger.Repository.Threshold = Level.Debug; break; default: Console.WriteLine(); Console.WriteLine("El parámetro -verbose solamente puede tener los valores [0-5]"); Console.WriteLine("Utiliza sql2excel -h para obtener más detalles"); Console.WriteLine(); break; } if (log.IsDebugEnabled) { log.DebugFormat("Nivel de mensajes establecido a {0}", log.Logger.Repository.Threshold.DisplayName); } if (showHelp) { log.Debug("Mostrando ayuda"); ShowHelp(p); return(0); } else if (showGui) { if (log.IsDebugEnabled) { log.Debug("Iniciando entorno gráfico según el parámetro de la línea de comandos -g"); } System.Windows.Forms.Application.EnableVisualStyles(); System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false); System.Windows.Forms.Application.Run(new MainForm()); return(0); } else { if (log.IsDebugEnabled) { log.Debug("Iniciando en modo comandos sin entorno gráfico"); } Console.WriteLine(); // 1. Cargar el archivo de configuración if (String.IsNullOrWhiteSpace(fileConf)) { log.Fatal("No se ha especificado archivo de configuración"); return(1); } String conf = String.Empty; try { log.Info("Cargando archivo de actualizaciones"); using (StreamReader reader = new StreamReader(fileConf)) { conf = reader.ReadToEnd(); } } catch (Exception ex) { log.Fatal("No se ha podido leer el archivo de configuración", ex); } ArchivoExcel excel = JsonConvert.DeserializeObject <ArchivoExcel>(conf); // 2. Cargar configuración de conexión y realizar prueba if (String.IsNullOrWhiteSpace(server)) { log.Fatal("No se ha especificado un servidor SQL Server"); return(2); } if (String.IsNullOrWhiteSpace(db)) { log.Fatal("No se ha especificado una base de datos"); return(3); } Conexion conexion = new Conexion { Servidor = server, BaseDatos = db }; log.InfoFormat("Probando la conexión a {0}/{1}", server, db); if (conexion.Probar() == false) { log.Fatal("Ha fallado la prueba de conexión a la base de datos"); return(4); } // 3. Aplicamos las actualizaciones try { log.Info("Aplicando actualizaciones"); excel.ActualizarDatos(conexion); } catch (Exception ex) { log.Fatal("Error al actualizar los datos", ex); return(5); } // 4. Salimos sin errores log.Info("Proceso terminado"); return(0); } }