예제 #1
0
        private void cmdDeploy_Click(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor;

            if (txtSourceFolder.Text == string.Empty)
            {
                string mensaje = "Debe indicar la carpeta origen. La misma debe contener las incidencias a aplicar";
                MessageBox.Show(mensaje);
                this.Cursor = Cursors.Default;
                return;
            }

            try
            {
                var    gestor           = new IssueManager();
                string directorioActual = string.Empty;
                string scriptActual     = string.Empty;

                try
                {
                    var listaIncidencias = ObtenerIncidenciasSeleccionadas(tvwSource, SortDirection.Ascending);
                    gestor.BeginTransaction();

                    foreach (IssueEntity incidencia in listaIncidencias)
                    {
                        directorioActual = incidencia.Nombre;

                        foreach (ScriptEntity script in incidencia.Scripts.Values)
                        {
                            scriptActual = script.Nombre;
                            gestor.AplicarScript(script);
                            gestor.SaveTransaction(script.Nombre + "_" + script.Secuencia);
                        }

                        DeseleccionarNodo(tvwSource, incidencia);

                        incidencia.Aplicada = true;
                    }

                    gestor.CommitTransaction();
                }
                catch (Exception ex)
                {
                    gestor.RollbackTransaction();
                    var listaIncidencias = ObtenerIncidenciasSeleccionadas(tvwSource, SortDirection.Ascending);
                    foreach (var i in listaIncidencias)
                    {
                        i.Aplicada = false;
                    }

                    frmMensaje frm = new frmMensaje();
                    frm.Mensaje = string.Format("Se ha producido un error al aplicar el script {0} de la incidencia {1}.", scriptActual, directorioActual);
                    frm.Detalle = ex.Message + "\n" + "\n" + ex.StackTrace;
                    frm.ShowDialog();
                }

                LeerIncidenciasAplicadas();
                LeerRepositorioDeIncidencias();
                MostrarIncidenciasAplicadas();
                MostrarRepositorioDeIncidencias();
            }
            catch (ApplicationException appEx)
            {
                MessageBox.Show(appEx.Message);
            }

            this.Cursor = Cursors.Default;
        }