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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); } }