예제 #1
0
        private void UiAction_SelectNewPattern()
        {
            var codeGenFile = Common.AppVarPathMakeAbsolute(_projectDefinition.CodeGenSettings.CodeGenPatternFile);

            dlgOpenPattern.FileName         = codeGenFile;
            dlgOpenPattern.InitialDirectory = Path.GetDirectoryName(codeGenFile);
            if (dlgOpenPattern.ShowDialog() == DialogResult.OK)
            {
                string projectFile = dlgOpenPattern.FileName;
                try
                {
                    _patternProject = PatternProject.ReadFromFile(projectFile);

                    var prjRelativePath = Common.AppVarPathMakeRelative(projectFile);
                    _projectDefinition.CodeGenSettings.CodeGenPatternFile = prjRelativePath;

                    Refresh_PatternProjectsCombo();

                    SetModified(true);
                }
                catch (Exception)
                {
                    MessageBox.Show("Failed to open the selected pattern!", "Pattern project", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                }

                Refresh_PatternsList(true);
            }
        }
예제 #2
0
        private void UiAction_ChangePatternFromCombo()
        {
            if (cmbPatternProjectFile.SelectedIndex >= 0)
            {
                PatternProject prjPattern = (PatternProject)cmbPatternProjectFile.SelectedItem;
                // if they are same
                if (_patternProject.Equals(prjPattern))
                {
                    return;
                }

                if (MessageBox.Show(string.Format("Do you want to change the pattern project to '{0}'?", prjPattern.Name), "Pattern Project", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    _patternProject = prjPattern;
                    var patFile = Common.AppVarPathMakeRelative(_patternProject.PatternFileName);
                    _projectDefinition.CodeGenSettings.CodeGenPatternFile = patFile;

                    SetModified(true);

                    // reload pattern
                    Refresh_PatternsList(true);
                }
                else
                {
                    cmbPatternProjectFile.Text         = _patternProject.Name;
                    cmbPatternProjectFile.SelectedItem = _patternProject;
                }
            }
        }
예제 #3
0
        private void Reload_ProjectDefinition(string patternProjectFile)
        {
            _patternProject = PatternProject.ReadFromFile(patternProjectFile);

            // realod combo
            Refresh_PatternProjectsCombo();
        }
예제 #4
0
 public Generator(ProjectDefinaton project, PatternProject pattern, DbDatabase database, ExSchemaEngine schemaEngine)
 {
     _patternProject = pattern;
     _projectDef = project;
     _database = database;
     _schemaEngine = schemaEngine;
     _optionGenerateUnselectedForeigns = false;
 }
예제 #5
0
        private void InitializeApplication()
        {
            _projectDefinition = ProjectDefinition.LoadDefaultProject();
            _patternProject    = new PatternProject();
            _recentProjects    = new RecentProjects(mnuReopen, mnuReopenRecentFile_Click);
            Reload_ProjectDefinition();

            // refresh presentation
            Refresh_Form(true);

            // recent projects list
            InitializeRecentMenu();

            // Modified
            SetModified(false);
        }
예제 #6
0
        private void UiAction_NewProject()
        {
            using (var frmNew = new frmProjectDetails(frmProjectDetails.FormEditMode.New)) {
                frmNew.ProjectInstance = ProjectDefinition.LoadDefaultProject();
                if (frmNew.ShowDialog() == DialogResult.OK)
                {
                    _projectDefinaton = frmNew.ProjectInstance;
                    _patternProject   = PatternProject.ReadFromFile(
                        Common.AppVarPathMakeAbsolute(_projectDefinaton.CodeGenSettings.CodeGenPatternFile));
                    Refresh_Form(true);

                    SetModified(true);
                    _currentProject_Opened = false;
                    // Reload everything
                }
            }
        }
예제 #7
0
        /// <summary>
        /// Reads pattern projects list
        /// </summary>
        private void Refresh_PatternProjectsList()
        {
            string patPrjExt = "*" + AppConfig.PatternProjectExtension;

            try
            {
                string[] projectFiles = Directory.GetFiles(AppConfig.PatternProjectsDirectory, patPrjExt, SearchOption.AllDirectories);

                _patternProjectsList.Clear();
                foreach (var project in projectFiles)
                {
                    try
                    {
                        // load the pattern
                        PatternProject patPrj = PatternProject.ReadFromFile(project);

                        // add to list
                        _patternProjectsList.Add(patPrj);
                    }
                    catch (Exception)
                    {
                        // failed!
                        // TODO: notify user about failed pattern
                    }
                }

                // sort patterns list
                _patternProjectsList.Sort((x, y) => string.Compare(x.Name, y.Name));

                //_patternProjectsList.Sort(new Comparison<PatternProject>((x, y) => string.Compare(x.Name, y.Name)));

                //// sort patterns list
                //_patternProjectsList.Sort(new Comparison<PatternProject>(delegate(PatternProject x, PatternProject y)
                //{
                //    return string.Compare(x.Name, y.Name);
                //}));

                // pattern projects
                Refresh_PatternProjectsCombo();
            }
            catch (Exception ex)
            {
                throw new Exception("Failed to read pattern projects list.", ex);
            }
        }
        public override void OnBack()
        {
            if (!PatternSelectionDto.IsUpdated)
            {
                return;
            }

            var newPatterns = PatternSelectionDto.Patterns
                              .Where(ps => !Project.PatternProjects.Any(pp => pp.PatternId == ps.PatternId))
                              .ToArray();

            var removedPatterns = Project.PatternProjects
                                  .Where(ps => !PatternSelectionDto.Patterns.Any(psd => ps.Pattern != null && psd.PatternId == ps.Pattern.PatternId))
                                  .ToArray();

            foreach (var removedPattern in removedPatterns.Where(rp => !rp.IsDefault()))
            {
                _removedPatternProjects[removedPattern.PatternProjectId] = removedPattern;
            }

            foreach (var pattern in newPatterns)
            {
                var toAdd = new PatternProject
                {
                    Pattern   = pattern,
                    PatternId = pattern.PatternId,
                    Project   = Project,
                    ProjectId = Project.ProjectId,
                };

                Project.PatternProjects.Add(toAdd);
            }

            foreach (var pattern in removedPatterns)
            {
                var toRemove = Project.PatternProjects.Single(pp => pp.PatternId == pattern.PatternId);
                Project.PatternProjects.Remove(toRemove);
            }

            UpdateThreadSummary();
        }
        public void InitializeSchemaProject()
        {
            Project  = new ProjectDefinaton();
            Pattern  = new PatternProject();
            Database = new DbDatabase();

            Project.GenerationPath = Path.Combine(Path.GetTempPath(), @"SalarDbCodeGenerator.Tests\" + DateTime.Now.Ticks);
            Project.ProjectName    = "SalarDbCodeGenerator.Tests";

            Pattern.LanguageSettings.KeywordsCaseSensitive        = true;
            Pattern.LanguageSettings.LanguageInvalidChars         = ", ./<>?;'\\:\"|[]{}`-=~!@#$%^&*()+";
            Pattern.LanguageSettings.LanguageInvalidCharsSuppress = '_';
            Pattern.LanguageSettings.LanguageKeywords.AddRange(new string[]
            {
                "readonly", "base", "break", "byte", "case", "catch", "checked",
                "class", "const", "continue", "default", "delegate", "do",
                "value", "else", "enum", "event", "explicit", "extern", "false",
                "finally", "fixed", "for", "foreach", "goto", "if", "implicit",
                "in", "interface", "internal", "is", "namespace", "new", "null",
                "object", "operator", "out", "override", "private", "protected",
                "public", "readonly", "ref", "return", "sealed", "sizeof",
                "static", "struct", "switch", "this", "throw", "true", "try",
                "typeof", "typeof", "unchecked", "unsafe", "using", "virtual",
                "while"
            });
            Pattern.LanguageSettings.NullableDataTypes.AddRange(new[] { "String", "Object" });
            Pattern.LanguageSettings.ExplicitCastDataTypes.AddRange(new[] { "Object", "Guid", "DateTimeOffset", "TimeSpan" });
            Pattern.LanguageSettings.VoidDataType             = "void";
            Pattern.LanguageSettings.TextFieldIdenticator     = "text";
            Pattern.LanguageSettings.ArrayIdenticator         = "[]";
            Pattern.LanguageSettings.DbDecimalName            = "decimal";
            Pattern.LanguageSettings.DbNumericName            = "numeric";
            Pattern.LanguageSettings.DbDecimalType            = "decimal([:Precision:],[:Scale:])";
            Pattern.LanguageSettings.DbNumericType            = "numeric([:Precision:],[:Scale:])";
            Pattern.LanguageSettings.LanguageKeywordsSuppress = "{0}_{1}";


            Database.DatabaseName = "SalarDbCodeGeneratorTests";
            Database.Provider     = DatabaseProvider.SQLServer;
        }
        public void InitializeSchemaProject()
        {
            Project = new ProjectDefinaton();
            Pattern = new PatternProject();
            Database = new DbDatabase();

            Project.GenerationPath = Path.Combine(Path.GetTempPath(), @"SalarDbCodeGenerator.Tests\" + DateTime.Now.Ticks);
            Project.ProjectName = "SalarDbCodeGenerator.Tests";

            Pattern.LanguageSettings.KeywordsCaseSensitive = true;
            Pattern.LanguageSettings.LanguageInvalidChars = ", ./<>?;'\\:\"|[]{}`-=~!@#$%^&*()+";
            Pattern.LanguageSettings.LanguageInvalidCharsSuppress = '_';
            Pattern.LanguageSettings.LanguageKeywords.AddRange(new string[]
                                                               	{
                                                               		"readonly", "base", "break", "byte", "case", "catch", "checked",
                                                               		"class", "const", "continue", "default", "delegate", "do",
                                                               		"value", "else", "enum", "event", "explicit", "extern", "false",
                                                               		"finally", "fixed", "for", "foreach", "goto", "if", "implicit",
                                                               		"in", "interface", "internal", "is", "namespace", "new", "null",
                                                               		"object", "operator", "out", "override", "private", "protected",
                                                               		"public", "readonly", "ref", "return", "sealed", "sizeof",
                                                               		"static", "struct", "switch", "this", "throw", "true", "try",
                                                               		"typeof", "typeof", "unchecked", "unsafe", "using", "virtual",
                                                               		"while"
                                                               	});
            Pattern.LanguageSettings.NullableDataTypes.AddRange(new[] { "String", "Object" });
            Pattern.LanguageSettings.ExplicitCastDataTypes.AddRange(new[] { "Object", "Guid", "DateTimeOffset", "TimeSpan" });
            Pattern.LanguageSettings.VoidDataType = "void";
            Pattern.LanguageSettings.TextFieldIdenticator = "text";
            Pattern.LanguageSettings.ArrayIdenticator = "[]";
            Pattern.LanguageSettings.DbDecimalName = "decimal";
            Pattern.LanguageSettings.DbNumericName = "numeric";
            Pattern.LanguageSettings.DbDecimalType = "decimal([:Precision:],[:Scale:])";
            Pattern.LanguageSettings.DbNumericType = "numeric([:Precision:],[:Scale:])";
            Pattern.LanguageSettings.LanguageKeywordsSuppress = "{0}_{1}";

            Database.DatabaseName = "SalarDbCodeGeneratorTests";
            Database.Provider = DatabaseProvider.SQLServer;
        }
 public SchemaAnalyzer(ProjectDefinaton project, PatternProject pattern, DbDatabase database)
 {
     _patternProject = pattern;
     _projectDef = project;
     _database = database;
 }
 public SchemaAnalyzer(ProjectDefinaton project, PatternProject pattern, DbDatabase database)
 {
     _patternProject = pattern;
     _projectDef     = project;
     _database       = database;
 }