/// <summary>
 ///		Inicializa el ViewModel
 /// </summary>
 private void InitViewModel()
 {
     // Combo de formato de los archivos
     ComboFormat = new ComboViewModel(this);
     ComboFormat.AddItem((int)Application.SolutionManager.FormatType.Parquet, "Parquet");
     ComboFormat.AddItem((int)Application.SolutionManager.FormatType.Csv, "CSV");
     ComboFormat.SelectedItem = ComboFormat.Items[0];
     // Asigna las propiedades
     ValidateFiles            = true;
     MountPathVariable        = "MountPath";
     MountPathContent         = "/mnt/c/Test";
     DataBaseComputeVariable  = "DbCompute";
     DataBaseValidateVariable = "DbValidate";
     PathValidate             = "Validate";
     TablePrefixes            = "SRC_;EXT_;TRN_";
     GenerateQvs               = true;
     OutputPath                = string.Empty;
     CompareString             = true;
     DateFormat                = "d/M/yyyy";
     DecimalSeparator          = ",";
     DecimalType               = "decimal(10, 2)";
     CompareOnlyAlphaAndDigits = true;
     // Carga el árbol de conexiones
     TreeConnection.LoadConnection(ComboConnections.GetSelectedConnection());
     // Indica que no ha habido modificaciones
     IsUpdated = false;
 }
Пример #2
0
        /// <summary>
        ///		Exporta la tabla de datos
        /// </summary>
        private async Task ExportAsync()
        {
            if (string.IsNullOrWhiteSpace(Query))
            {
                SolutionViewModel.MainController.HostController.SystemController.ShowMessage("Introduzca una consulta para ejecutar");
            }
            else
            {
                ConnectionModel connection = ComboConnections.GetSelectedConnection();

                if (connection == null)
                {
                    SolutionViewModel.MainController.HostController.SystemController.ShowMessage("Seleccione una conexión");
                }
                else
                {
                    (ArgumentListModel arguments, string error) = SolutionViewModel.ConnectionExecutionViewModel.GetParameters();

                    if (!string.IsNullOrWhiteSpace(error))
                    {
                        SolutionViewModel.MainController.HostController.SystemController.ShowMessage(error);
                    }
                    else
                    {
                        string fileName = SolutionViewModel.MainController.DialogsController
                                          .OpenDialogSave(string.Empty, ExportDataController.MaskExportFiles, ExportDataController.DefaultFileName,
                                                          ExportDataController.DefaultExtension);

                        if (!string.IsNullOrEmpty(fileName))
                        {
                            // Arranca los temporizadores e inicializa el interface de usuario con el inicio de la consulta
                            StartQuery();
                            // Ejecuta la exportación
                            try
                            {
                                (bool exported, string exportError) = await ExportAsync(connection, arguments, fileName, _cancellationToken);

                                if (!exported)
                                {
                                    SolutionViewModel.MainController.HostController.SystemController.ShowMessage(error);
                                }
                                else
                                {
                                    SolutionViewModel.MainController.HostController.SystemController.ShowMessage("El archivo se ha grabado correctamente");
                                }
                            }
                            catch (Exception exception)
                            {
                                SolutionViewModel.MainController.Logger.Default.LogItems.Error($"Error al grabar el archivo '{fileName}'", exception);
                                SolutionViewModel.MainController.HostController.SystemController.ShowMessage($"Error al grabar el archivo '{fileName}'");
                            }
                            // Detiene la consulta
                            StopQuery();
                        }
                    }
                }
            }
        }
        /// <summary>
        ///		Comprueba los datos introducidos
        /// </summary>
        private bool ValidateData()
        {
            bool validated = false;

            // Comprueba los datos introducidos
            if (ComboConnections.GetSelectedConnection() == null)
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione una conexión");
            }
            else if (string.IsNullOrWhiteSpace(OutputPath))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el directorio de grabación de los archivos");
            }
            else if (string.IsNullOrWhiteSpace(DataBaseComputeVariable))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de la variable de base de datos de cálculo");
            }
            else if (string.IsNullOrWhiteSpace(DataBaseValidateVariable))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de la variable de base de datos de validación");
            }
            else if (TreeConnection.GetSelectedTables().Count == 0)
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione al menos una tabla");
            }
            else if (ValidateFiles)
            {
                if (string.IsNullOrWhiteSpace(MountPathVariable))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de la variable con el directorio de archivos");
                }
                else if (string.IsNullOrWhiteSpace(MountPathContent))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el directorio de archivos");
                }
                else if (string.IsNullOrWhiteSpace(PathValidate))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre del subdirectorio donde se encuentran los archivos a validar");
                }
                else
                {
                    validated = true;
                }
            }
            else
            {
                if (string.IsNullOrWhiteSpace(DataBaseTarget))
                {
                    SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de base de datos a comparar");
                }
                else
                {
                    validated = true;
                }
            }
            // Devuelve el valor que indica si los datos son correctos
            return(validated);
        }
        /// <summary>
        ///		Comprueba los datos introducidos
        /// </summary>
        private bool ValidateData()
        {
            bool validated = false;

            // Comprueba los datos introducidos
            if (ComboConnections.GetSelectedConnection() == null)
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione la conexión");
            }
            else if (string.IsNullOrWhiteSpace(Provider))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre del proveedor en el archivo");
            }
            else if (string.IsNullOrWhiteSpace(DataBase))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de la base de datos");
            }
            else if (string.IsNullOrWhiteSpace(PathVariable))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de la variable con el directorio de salida");
            }
            else if (string.IsNullOrWhiteSpace(DataBaseVariable))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de la variable de base de datos");
            }
            else if (string.IsNullOrWhiteSpace(OutputPath))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el directorio de grabación de los proyectos");
            }
            else if (string.IsNullOrWhiteSpace(FileNameTest))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre del archivo XML de pruebas");
            }
            else if (string.IsNullOrWhiteSpace(FileNameAssert))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre del archivo XML de comparación");
            }
            else
            {
                validated = true;
            }
            // Devuelve el valor que indica si los datos son correctos
            return(validated);
        }
        /// <summary>
        ///		Comprueba los datos introducidos
        /// </summary>
        private bool ValidateData()
        {
            bool validated = false;

            // Comprueba los datos introducidos
            if (ComboConnections.GetSelectedConnection() == null)
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione una conexión");
            }
            else if (string.IsNullOrWhiteSpace(OutputFileName))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione el nombre de archivo");
            }
            else
            {
                validated = true;
            }
            // Devuelve el valor que indica si los datos son correctos
            return(validated);
        }
        /// <summary>
        ///		Comprueba los datos introducidos
        /// </summary>
        private bool ValidateData()
        {
            bool validated = false;

            // Comprueba los datos introducidos
            if (ComboConnections.GetSelectedConnection() == null)
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Seleccione una conexión");
            }
            else if (string.IsNullOrWhiteSpace(DataBaseVariable))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de la base de datos");
            }
            else if (string.IsNullOrWhiteSpace(MountPathVariable))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre de la variable con el directorio de archivos");
            }
            else if (string.IsNullOrWhiteSpace(SubPath))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el subdirectorio de archivos");
            }
            else if (string.IsNullOrWhiteSpace(PathInputFiles) && !System.IO.Directory.Exists(PathInputFiles))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre del directorio donde se encuentran los archivos a importar");
            }
            else if (string.IsNullOrWhiteSpace(OutputFileName))
            {
                SolutionViewModel.MainController.SystemController.ShowMessage("Introduzca el nombre del archivo a generar");
            }
            else
            {
                validated = true;
            }
            // Devuelve el valor que indica si los datos son correctos
            return(validated);
        }
Пример #7
0
        /// <summary>
        ///		Ejecuta la consulta
        /// </summary>
        private async Task ExecuteQueryAsync()
        {
            if (string.IsNullOrWhiteSpace(Query))
            {
                SolutionViewModel.MainViewModel.MainController.HostController.SystemController.ShowMessage("Introduzca una consulta para ejecutar");
            }
            else
            {
                ConnectionModel connection = ComboConnections.GetSelectedConnection();

                if (connection == null)
                {
                    SolutionViewModel.MainViewModel.MainController.HostController.SystemController.ShowMessage("Seleccione una conexión");
                }
                else
                {
                    (Application.Connections.Models.ArgumentListModel arguments, string error) = SolutionViewModel.ConnectionExecutionViewModel.GetParameters();

                    if (!string.IsNullOrWhiteSpace(error))
                    {
                        SolutionViewModel.MainViewModel.MainController.HostController.SystemController.ShowMessage(error);
                    }
                    else
                    {
                        // Limpia los datos
                        DataResults = null;
                        // Inicializa el temporizador
                        _timer     = new System.Timers.Timer(TimeSpan.FromMilliseconds(500).TotalMilliseconds);
                        _stopwatch = new System.Diagnostics.Stopwatch();
                        // Indica que se está ejecutando una tarea y arranca el temporizador
                        IsExecuting     = true;
                        _timer.Elapsed += (sender, args) => ExecutionTime = _stopwatch.Elapsed.ToString();
                        _timer.Start();
                        _stopwatch.Start();
                        ExecutionTimeColor = BauMvvm.ViewModels.Media.MvvmColor.Red;
                        // Obtiene el token de cancelación
                        _tokenSource       = new CancellationTokenSource();
                        _cancellationToken = _tokenSource.Token;
                        // Ejecuta la consulta
                        try
                        {
                            // Actualiza la página actual si es una consulta nueva
                            if (string.IsNullOrWhiteSpace(_lastQuery) || !Query.Equals(_lastQuery, StringComparison.CurrentCultureIgnoreCase))
                            {
                                ActualPage = 1;
                            }
                            // Carga la consulta
                            if (PaginateQuery)
                            {
                                DataResults = await SolutionViewModel.MainViewModel.Manager.GetDatatableQueryAsync(connection, Query, arguments, ActualPage, PageSize,
                                                                                                                   connection.TimeoutExecuteScript,
                                                                                                                   _cancellationToken);
                            }
                            else
                            {
                                DataResults = await SolutionViewModel.MainViewModel.Manager.GetDatatableQueryAsync(connection, Query, arguments, 0, 0,
                                                                                                                   connection.TimeoutExecuteScript,
                                                                                                                   _cancellationToken);
                            }
                            // Guarda la consulta que se acaba de lanzar
                            _lastQuery = Query;
                        }
                        catch (Exception exception)
                        {
                            SolutionViewModel.MainViewModel.Manager.Logger.Default.LogItems.Error($"Error al ejecutar la consulta. {exception.Message}");
                        }
                        // Detiene la ejecucion
                        StopQuery();
                    }
                }
            }
        }
Пример #8
0
        /// <summary>
        ///		Ejecuta la consulta
        /// </summary>
        public async Task ExecuteQueryAsync()
        {
            string querySelected = GetEditorSelectedText();

            if (string.IsNullOrWhiteSpace(querySelected))
            {
                SolutionViewModel.MainController.HostController.SystemController.ShowMessage("Introduzca una consulta para ejecutar");
            }
            else
            {
                ConnectionModel connection = ComboConnections.GetSelectedConnection();

                if (connection == null)
                {
                    SolutionViewModel.MainController.HostController.SystemController.ShowMessage("Seleccione una conexión");
                }
                else
                {
                    (ArgumentListModel arguments, string error) = SolutionViewModel.ConnectionExecutionViewModel.GetParameters();

                    if (!string.IsNullOrWhiteSpace(error))
                    {
                        SolutionViewModel.MainController.HostController.SystemController.ShowMessage(error);
                    }
                    else
                    {
                        // Limpia los datos
                        DataResults = null;
                        // Arranca la consulta
                        StartQuery();
                        // Ejecuta la consulta
                        try
                        {
                            // Actualiza la página actual si es una consulta nueva
                            if (string.IsNullOrWhiteSpace(_lastQuery) || !querySelected.Equals(_lastQuery, StringComparison.CurrentCultureIgnoreCase))
                            {
                                ActualPage = 1;
                            }
                            // Carga la consulta
                            if (PaginateQuery)
                            {
                                DataResults = await SolutionViewModel.Manager.GetDatatableQueryAsync(connection, querySelected, arguments,
                                                                                                     ActualPage, PageSize,
                                                                                                     connection.TimeoutExecuteScript,
                                                                                                     _cancellationToken);
                            }
                            else
                            {
                                DataResults = await SolutionViewModel.Manager.GetDatatableQueryAsync(connection, querySelected, arguments, 0, 0,
                                                                                                     connection.TimeoutExecuteScript,
                                                                                                     _cancellationToken);
                            }
                            // Guarda la consulta que se acaba de lanzar
                            _lastQuery = querySelected;
                        }
                        catch (Exception exception)
                        {
                            SolutionViewModel.Manager.Logger.Default.LogItems.Error($"Error al ejecutar la consulta. {exception.Message}");
                        }
                        // Detiene la ejecucion
                        StopQuery();
                    }
                }
            }
        }
Пример #9
0
        /// <summary>
        ///		Muestra el plan de ejecución
        /// </summary>
        private async Task ShowExecutionPlanAsync()
        {
            string query = GetEditorSelectedText();

            if (string.IsNullOrWhiteSpace(query))
            {
                SolutionViewModel.MainController.HostController.SystemController.ShowMessage("Introduzca una consulta");
            }
            else
            {
                ConnectionModel connection = ComboConnections.GetSelectedConnection();

                if (connection == null)
                {
                    SolutionViewModel.MainController.HostController.SystemController.ShowMessage("Seleccione una conexión");
                }
                else
                {
                    (ArgumentListModel arguments, string error) = SolutionViewModel.ConnectionExecutionViewModel.GetParameters();

                    if (!string.IsNullOrWhiteSpace(error))
                    {
                        SolutionViewModel.MainController.HostController.SystemController.ShowMessage(error);
                    }
                    else
                    {
                        try
                        {
                            DataTable table = await SolutionViewModel.Manager.GetExecutionPlanAsync(connection, query, arguments,
                                                                                                    connection.TimeoutExecuteScript, _cancellationToken);

                            string plan = string.Empty;

                            // Obtiene el plan de ejecución
                            if (table != null)
                            {
                                foreach (DataRow row in table.Rows)
                                {
                                    // Añade el contenido de las columnas
                                    for (int column = 0; column < table.Columns.Count; column++)
                                    {
                                        if (!(row[column] is DBNull) && row[column] != null)
                                        {
                                            plan += row[column].ToString();
                                        }
                                    }
                                    // Añade un salto de línea
                                    plan += Environment.NewLine;
                                }
                            }
                            // Asigna el texto del plan de ejecución
                            ExecutionPlanText = plan;
                        }
                        catch (Exception exception)
                        {
                            SolutionViewModel.MainController.Logger.Default.LogItems.Error($"Error al obtener el plan de ejecución. {exception.Message}");
                        }
                    }
                }
            }
        }