public Generator(ProjectDefinaton project, PatternProject pattern, DbDatabase database, ExSchemaEngine schemaEngine) { _patternProject = pattern; _projectDef = project; _database = database; _schemaEngine = schemaEngine; _optionGenerateUnselectedForeigns = false; }
/// <summary> /// Reloads tables and views list from database /// </summary> public void RefetchDatabaseCache() { using (DbConnection conn = GetNewConnection()) using (ExSchemaEngine engine = GetSchemaEngine(conn)) { StringCollection dbTables, dbViews; // Open the connection conn.Open(); // Woot! no error! // the schema engine // shcema engine options engine.SpecificOwner = this.DatabaseProvider == DatabaseProvider.Oracle ? this.SqlUsername : this.SchemaName; // Read schema list from db engine.ReadViewsTablesList(out dbTables, out dbViews); List <SelectedTablesType> newTables = new List <SelectedTablesType>(); List <SelectedTablesType> newViews = new List <SelectedTablesType>(); // Adding new tables foreach (var tableName in dbTables) { bool added = false; // looking for previous setting foreach (var prevTable in Tables) { if (prevTable.Name == tableName) { newTables.Add(new SelectedTablesType() { Name = tableName, Selected = prevTable.Selected }); added = true; break; } } if (added) { continue; } // nothing found, add as not selected newTables.Add(new SelectedTablesType() { Name = tableName, Selected = false }); } // Adding new views foreach (var viewName in dbViews) { bool added = false; // looking for previous settings foreach (var prevView in Views) { if (prevView.Name == viewName) { newViews.Add(new SelectedTablesType() { Name = viewName, Selected = prevView.Selected }); added = true; break; } } if (added) { continue; } // nothing found, add as not selected newViews.Add(new SelectedTablesType() { Name = viewName, Selected = false }); } // Replacing the old ones Tables.Clear(); Views.Clear(); Tables = newTables; Views = newViews; // sort Views.Sort((x, y) => string.Compare(x.Name, y.Name)); Tables.Sort((x, y) => string.Compare(x.Name, y.Name)); } }
private void UiAction_Generate() { PleaseWait.ShowPleaseWait("Connecting to database server", true, false); using (System.Data.Common.DbConnection conn = _projectDefinition.DbSettions.GetNewConnection()) using (ExSchemaEngine schemaEngine = _projectDefinition.DbSettions.GetSchemaEngine(conn)) { // Connection to database conn.Open(); // Let application catchup Application.DoEvents(); // Reading database PleaseWait.WaitingState = "Reading database schema"; // 1 ========================== // Database schema reader var schemaDatabase = new DbDatabase(); schemaDatabase.Provider = _projectDefinition.DbSettions.DatabaseProvider; // shcema engine options schemaEngine.SpecificOwner = _projectDefinition.DbSettions.DatabaseProvider == DatabaseProvider.Oracle ? _projectDefinition.DbSettions.SqlUsername : _projectDefinition.DbSettions.SchemaName; // columns descriptions schemaEngine.ReadColumnsDescription = _projectDefinition.CodeGenSettings.GenerateColumnsDescription; schemaEngine.ReadTablesForeignKeys = _projectDefinition.CodeGenSettings.GenerateTablesForeignKeys; schemaEngine.ReadConstraintKeys = _projectDefinition.CodeGenSettings.GenerateConstraintKeys; // only selected tables schemaEngine.OnlyReadSelectedItems = true; schemaEngine.SelectedTables = _projectDefinition.DbSettions.GetSelectedTablesList(); schemaEngine.SelectedViews = _projectDefinition.DbSettions.GetSelectedViewsList(); // read database schema schemaEngine.FillSchema(schemaDatabase); PleaseWait.WaitingState = "Analyzing database schema"; // 2 ====================== var alanyzer = new SchemaAnalyzer(_projectDefinition, _patternProject, schemaDatabase); alanyzer.AnalyzeAndRename(); PleaseWait.WaitingState = "Generating output files"; // 3 ========================== // Start the generator var engine = new Generator(_projectDefinition, _patternProject, schemaDatabase, schemaEngine); engine.Generate(); // Update last generation _projectDefinition.LastGeneration = DateTime.Now; // 4 ========================== // Reaload the form Refresh_Form(); // Abort the please wait PleaseWait.Abort(); // Data is modified SetModified(true); // to active tab tabMainProject.SelectedTab = tabGenFiles; } }