Exemplo n.º 1
0
        private void TranslateCommandHandler(object parameter)
        {
            IMetadataService metadata = Services.GetService <IMetadataService>();

            metadata.AttachDatabase(string.IsNullOrWhiteSpace(MyServer.Address) ? MyServer.Name : MyServer.Address, MyDatabase);

            IScriptingService scripting    = Services.GetService <IScriptingService>();
            string            sql          = scripting.PrepareScript(ScriptCode, out IList <ParseError> errors);
            string            errorMessage = string.Empty;

            foreach (ParseError error in errors)
            {
                errorMessage += error.Message + Environment.NewLine;
            }

            MainWindowViewModel   mainWindow   = Services.GetService <MainWindowViewModel>();
            ScriptEditorViewModel scriptEditor = Services.GetService <ScriptEditorViewModel>();

            if (errors.Count > 0)
            {
                scriptEditor.Name       = "Errors";
                scriptEditor.ScriptCode = errorMessage;
            }
            else
            {
                scriptEditor.Name       = $"{Name} (SQL)";
                scriptEditor.ScriptCode = sql;
            }
            ScriptEditorView scriptView = new ScriptEditorView()
            {
                DataContext = scriptEditor
            };

            mainWindow.AddNewTab(scriptEditor.Name, scriptView);
        }
Exemplo n.º 2
0
        private void ShowMainWindowTab(string caption, string script)
        {
            MainWindowViewModel   mainWindow = Services.GetService <MainWindowViewModel>();
            ScriptEditorViewModel viewModel  = Services.GetService <ScriptEditorViewModel>();

            viewModel.Name       = caption;
            viewModel.ScriptCode = script;
            ScriptEditorView view = new ScriptEditorView()
            {
                DataContext = viewModel
            };

            mainWindow.AddNewTab(viewModel.Name, view);
        }
Exemplo n.º 3
0
        private void ShowException(string errorMessage)
        {
            MainWindowViewModel   mainWindow      = Services.GetService <MainWindowViewModel>();
            ScriptEditorViewModel errorsViewModel = Services.GetService <ScriptEditorViewModel>();

            errorsViewModel.Name       = "Error";
            errorsViewModel.ScriptCode = errorMessage;
            ScriptEditorView errorsView = new ScriptEditorView()
            {
                DataContext = errorsViewModel
            };

            mainWindow.AddNewTab(errorsViewModel.Name, errorsView);
        }
Exemplo n.º 4
0
        private void ShowScriptUrlCommand(object node)
        {
            if (!(node is TreeNodeViewModel treeNode))
            {
                return;
            }
            if (!(treeNode.NodePayload is MetaScript script))
            {
                return;
            }

            WebServer      webServer = treeNode.GetAncestorPayload <WebServer>();
            DatabaseInfo   database  = treeNode.GetAncestorPayload <DatabaseInfo>();
            DatabaseServer server    = treeNode.GetAncestorPayload <DatabaseServer>();

            string url = GetExecuteScriptUrl(webServer, server, database, script);

            ScriptingController controller = Services.GetService <ScriptingController>();
            string sourceCode = controller.ReadScriptSourceCode(server, database, MetaScriptType.Script, script.Name);

            IMetadataService metadata = Services.GetService <IMetadataService>();

            metadata.AttachDatabase(string.IsNullOrWhiteSpace(server.Address) ? server.Name : server.Address, database);

            IScriptingService scripting  = Services.GetService <IScriptingService>();
            TSqlFragment      syntaxTree = scripting.ParseScript(sourceCode, out IList <ParseError> errors);

            if (errors.Count > 0)
            {
                ShowParseErrors(errors); return;
            }

            DeclareVariableStatementVisitor visitor = new DeclareVariableStatementVisitor();

            syntaxTree.Accept(visitor);
            string jsonDTO = visitor.GenerateJsonParametersObject();

            MainWindowViewModel   mainWindow = Services.GetService <MainWindowViewModel>();
            ScriptEditorViewModel editor     = Services.GetService <ScriptEditorViewModel>();

            editor.Name       = $"{script.Name} (URL)";
            editor.ScriptCode = url + Environment.NewLine + jsonDTO;
            ScriptEditorView scriptView = new ScriptEditorView()
            {
                DataContext = editor
            };

            mainWindow.AddNewTab(editor.Name, scriptView);
        }
Exemplo n.º 5
0
        private void ShowHttpError(string header, HttpResponseMessage response)
        {
            string errorHeader      = ((int)response.StatusCode).ToString() + " (" + response.StatusCode.ToString() + "): " + response.ReasonPhrase;
            string errorDescription = response.Content.ReadAsStringAsync().Result;

            MainWindowViewModel   mainWindow      = Services.GetService <MainWindowViewModel>();
            ScriptEditorViewModel errorsViewModel = Services.GetService <ScriptEditorViewModel>();

            errorsViewModel.Name       = header;
            errorsViewModel.ScriptCode = errorHeader + Environment.NewLine + errorDescription;
            ScriptEditorView errorsView = new ScriptEditorView()
            {
                DataContext = errorsViewModel
            };

            mainWindow.AddNewTab(errorsViewModel.Name, errorsView);
        }
Exemplo n.º 6
0
        private void ReadConfigFileCommand(object node)
        {
            if (!(node is TreeNodeViewModel treeNode))
            {
                return;
            }
            if (!(treeNode.NodePayload is MetaObject metaObject))
            {
                return;
            }

            DatabaseServer server = treeNode.GetAncestorPayload <DatabaseServer>();

            if (server == null)
            {
                _ = MessageBox.Show("SQL Server is not found.", "DaJet", MessageBoxButton.OKCancel, MessageBoxImage.Warning);
                return;
            }
            DatabaseInfo database = treeNode.GetAncestorPayload <DatabaseInfo>();

            if (database == null)
            {
                _ = MessageBox.Show("Database is not found.", "DaJet", MessageBoxButton.OKCancel, MessageBoxImage.Warning);
                return;
            }

            IMetadataService  metadata = Services.GetService <IMetadataService>();
            IMetadataProvider provider = metadata.GetMetadataProvider(database);

            provider.UseServer(server);
            provider.UseDatabase(database);
            string configFile = provider.ReadConfigFile(metaObject.UUID.ToString());

            MainWindowViewModel   mainWindow   = Services.GetService <MainWindowViewModel>();
            ScriptEditorViewModel scriptEditor = Services.GetService <ScriptEditorViewModel>();

            scriptEditor.Name       = $"{metaObject.Name} (metadata)";
            scriptEditor.ScriptCode = configFile;
            ScriptEditorView editorView = new ScriptEditorView()
            {
                DataContext = scriptEditor
            };

            mainWindow.AddNewTab(scriptEditor.Name, editorView);
        }
Exemplo n.º 7
0
        private void ShowParseErrors(IList <ParseError> errors)
        {
            string errorMessage = string.Empty;

            foreach (ParseError error in errors)
            {
                errorMessage += error.Message + Environment.NewLine;
            }

            MainWindowViewModel   mainWindow      = Services.GetService <MainWindowViewModel>();
            ScriptEditorViewModel errorsViewModel = Services.GetService <ScriptEditorViewModel>();

            errorsViewModel.Name       = "Errors";
            errorsViewModel.ScriptCode = errorMessage;
            ScriptEditorView errorsView = new ScriptEditorView()
            {
                DataContext = errorsViewModel
            };

            mainWindow.AddNewTab(errorsViewModel.Name, errorsView);
        }
Exemplo n.º 8
0
        private void ExecuteCommandHandler(object parameter)
        {
            MainWindowViewModel mainWindow = Services.GetService <MainWindowViewModel>();

            IMetadataService metadata = Services.GetService <IMetadataService>();

            metadata.AttachDatabase(string.IsNullOrWhiteSpace(MyServer.Address) ? MyServer.Name : MyServer.Address, MyDatabase);

            IScriptingService scripting    = Services.GetService <IScriptingService>();
            string            sql          = scripting.PrepareScript(ScriptCode, out IList <ParseError> errors);
            string            errorMessage = string.Empty;

            foreach (ParseError error in errors)
            {
                errorMessage += error.Message + Environment.NewLine;
            }
            if (errors.Count > 0)
            {
                ScriptEditorViewModel scriptEditor = Services.GetService <ScriptEditorViewModel>();
                scriptEditor.Name       = "Errors";
                scriptEditor.ScriptCode = errorMessage;
                ScriptEditorView scriptView = new ScriptEditorView()
                {
                    DataContext = scriptEditor
                };
                mainWindow.AddNewTab(scriptEditor.Name, scriptView);
                return;
            }

            string json = "[]";

            try
            {
                json = scripting.ExecuteScript(sql, out IList <ParseError> executeErrors);
                foreach (ParseError error in executeErrors)
                {
                    errorMessage += error.Message + Environment.NewLine;
                }
                if (executeErrors.Count > 0)
                {
                    ScriptEditorViewModel scriptEditor = Services.GetService <ScriptEditorViewModel>();
                    scriptEditor.Name       = "Errors";
                    scriptEditor.ScriptCode = errorMessage;
                    ScriptEditorView scriptView = new ScriptEditorView()
                    {
                        DataContext = scriptEditor
                    };
                    mainWindow.AddNewTab(scriptEditor.Name, scriptView);
                    return;
                }
            }
            catch (Exception ex)
            {
                ScriptEditorViewModel scriptEditor = Services.GetService <ScriptEditorViewModel>();
                scriptEditor.Name       = "Errors";
                scriptEditor.ScriptCode = ex.Message;
                ScriptEditorView scriptView = new ScriptEditorView()
                {
                    DataContext = scriptEditor
                };
                mainWindow.AddNewTab(scriptEditor.Name, scriptView);
                return;
            }
            JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

            serializerOptions.Converters.Add(new DynamicJsonConverter());
            dynamic data = JsonSerializer.Deserialize <dynamic>(json, serializerOptions);

            DataGrid dataView = DynamicGridCreator.CreateDynamicDataGrid(data);

            mainWindow.AddNewTab($"{Name} (result)", dataView);
        }
Exemplo n.º 9
0
        private void ExecuteScriptCommand(object node)
        {
            if (!(node is TreeNodeViewModel treeNode))
            {
                return;
            }
            if (!(treeNode.NodePayload is MetaScript script))
            {
                return;
            }

            WebServer      webServer = treeNode.GetAncestorPayload <WebServer>();
            DatabaseInfo   database  = treeNode.GetAncestorPayload <DatabaseInfo>();
            DatabaseServer server    = treeNode.GetAncestorPayload <DatabaseServer>();

            string url = GetExecuteScriptUrl(null, server, database, script);

            //ScriptingController controller = Services.GetService<ScriptingController>();
            //string sourceCode = controller.ReadScriptSourceCode(server, database, MetaScriptType.Script, script.Name);

            //IMetadataService metadata = Services.GetService<IMetadataService>();
            //metadata.AttachDatabase(string.IsNullOrWhiteSpace(server.Address) ? server.Name : server.Address, database);

            //IScriptingService scripting = Services.GetService<IScriptingService>();
            //TSqlFragment syntaxTree = scripting.ParseScript(sourceCode, out IList<ParseError> errors);
            //if (errors.Count > 0) { ShowParseErrors(errors); return; }

            //DeclareVariableStatementVisitor visitor = new DeclareVariableStatementVisitor();
            //syntaxTree.Accept(visitor);

            string        requestJson = string.Empty;
            StringContent body        = new StringContent(requestJson, Encoding.UTF8, "application/json");

            IHttpClientFactory http   = Services.GetService <IHttpClientFactory>();
            HttpClient         client = http.CreateClient(webServer.Name);

            if (client.BaseAddress == null)
            {
                client.BaseAddress = new Uri(webServer.Address);
            }

            try
            {
                var response = client.PostAsync(url, body).Result;

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    MainWindowViewModel   mainWindow = Services.GetService <MainWindowViewModel>();
                    ScriptEditorViewModel editor     = Services.GetService <ScriptEditorViewModel>();
                    editor.Name = $"{script.Name} (WEB response)";
                    string responseJson = response.Content.ReadAsStringAsync().Result;
                    editor.ScriptCode = url + Environment.NewLine + responseJson;
                    ScriptEditorView scriptView = new ScriptEditorView()
                    {
                        DataContext = editor
                    };
                    mainWindow.AddNewTab(editor.Name, scriptView);
                }
                else
                {
                    ShowHttpError(script.Name + " (error)", response);
                }
            }
            catch (Exception ex)
            {
                _ = MessageBox.Show(ex.Message, script.Name);
            }
        }