Beispiel #1
0
        private void CreateTestCodeEditor(object parameter)
        {
            DomainConcept concept = new DomainConcept();
            CodeEditor    editor  = new CodeEditor()
            {
                DataContext = SyntaxTreeController.Current.CreateSyntaxNode(null, concept)
            };

            Shell.AddTabItem("DDL SCRIPT", editor);
        }
Beispiel #2
0
        private void CreateCodeEditor(object parameter)
        {
            ScriptConcept script = new ScriptConcept();
            CodeEditor    editor = new CodeEditor()
            {
                DataContext = SyntaxTreeController.Current.CreateSyntaxNode(null, script)
            };

            Shell.AddTabItem("SCRIPT", editor);
        }
Beispiel #3
0
        private void OpenScript(object parameter)
        {
            OpenFileDialog dialog = new OpenFileDialog()
            {
                Multiselect      = false,
                InitialDirectory = ModuleCatalogPath,
                Filter           = "Script files (.json)|*.json"
            };
            var result = dialog.ShowDialog();

            if (result != true)
            {
                return;
            }
            string filePath = dialog.FileName;

            string json = File.ReadAllText(filePath);

            if (string.IsNullOrWhiteSpace(json))
            {
                return;
            }

            SyntaxTreeJsonSerializer _serializer = new SyntaxTreeJsonSerializer();
            var knownTypes = _serializer.Binder.KnownTypes;

            foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()
                     .Where(a => a.FullName.StartsWith("OneCSharp") && a.GetName().Name.EndsWith("Model")))
            {
                foreach (Type type in assembly.GetTypes()
                         .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(SyntaxNode))))
                {
                    knownTypes.Add(type.FullName, type);
                }
            }
            if (knownTypes.Count == 0)
            {
                return;
            }

            SyntaxNode syntaxNode = _serializer.FromJson(json);

            CodeEditor editor = new CodeEditor()
            {
                DataContext = SyntaxTreeController.Current.CreateSyntaxNode(null, syntaxNode)
            };

            Shell.AddTabItem("SCRIPT FROM FILE", editor);
        }
        private void Translate(object parameter)
        {
            Metadata.UseServer(Settings.DataHost);
            Metadata.UseDatabase(Settings.Database);
            string sql          = Scripting.PrepareScript(QueryScript, out IList <ParseError> errors);
            string errorMessage = string.Empty;

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

            if (errors.Count > 0)
            {
                QueryEditorView view = new QueryEditorView()
                {
                    DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting)
                    {
                        QueryScript = errorMessage
                    }
                };
                Shell.AddTabItem("Errors", view);
            }
            else
            {
                FileInfo        file         = new FileInfo(FileFullPath);
                string          fileFullPath = Path.ChangeExtension(FileFullPath, "sql");
                QueryEditorView view         = new QueryEditorView()
                {
                    DataContext = new QueryEditorViewModel(Shell, Settings, fileFullPath, Metadata, Scripting)
                    {
                        QueryScript = sql
                    }
                };
                Shell.AddTabItem(Path.ChangeExtension(file.Name, "sql"), view);
            }
        }
        private void Execute(object parameter)
        {
            string errorMessage = string.Empty;

            Metadata.UseServer(Settings.DataHost);
            Metadata.UseDatabase(Settings.Database);

            string   sql;
            FileInfo file = new FileInfo(FileFullPath);

            if (file.Extension == ".sql")
            {
                sql = QueryScript;
            }
            else
            {
                sql = Scripting.PrepareScript(QueryScript, out IList <ParseError> errors);
                foreach (ParseError error in errors)
                {
                    errorMessage += error.Message + Environment.NewLine;
                }
                if (errors.Count > 0)
                {
                    QueryEditorView errorsView = new QueryEditorView()
                    {
                        DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting)
                        {
                            QueryScript = errorMessage
                        }
                    };
                    Shell.AddTabItem("Errors", errorsView);
                    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)
                {
                    QueryEditorView errorsView = new QueryEditorView()
                    {
                        DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting)
                        {
                            QueryScript = errorMessage
                        }
                    };
                    Shell.AddTabItem("Errors", errorsView);
                    return;
                }
            }
            catch (Exception ex)
            {
                QueryEditorView errorsView = new QueryEditorView()
                {
                    DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting)
                    {
                        QueryScript = ex.Message
                    }
                };
                Shell.AddTabItem("Error", errorsView);
                return;
            }
            JsonSerializerOptions serializerOptions = new JsonSerializerOptions();

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

            //QueryEditorView view = new QueryEditorView()
            //{
            //    DataContext = new QueryEditorViewModel(Shell, Settings, FileFullPath, Metadata, Scripting) { QueryScript = json }
            //};
            //Grid view = CreateDynamicGrid(data);
            DataGrid view = CreateDynamicDataGrid(data);

            Shell.AddTabItem($"{file.Name} - result", view);
        }