private void buttonFetch_Click(object sender, EventArgs e) { string csprojFilename = textBoxCsProjFile.Text; XmlDocument doc = new XmlDocument(); doc.LoadXml(fileController.ReadAllText(csprojFilename)); ArchAngel.Providers.EntityModel.Model.MappingLayer.MappingSet mappingSet = null; GetProject(mappingSet, doc, csprojFilename); }
public FormDatabase(IDatabase database, ArchAngel.Providers.EntityModel.Model.MappingLayer.MappingSet mappingSet) { InitializeComponent(); Instance = this; ArchAngel.Interfaces.SharedData.AboutToSave += new EventHandler(SharedData_AboutToSave); modelChanges1.RefreshCalled += new EventHandler(RefreshWasCalled); labelTablePrefixes.Top = ucDatabaseInformation1.BottomOfControls + 20; textBoxTablePrefixes.Top = labelTablePrefixes.Top; labelColumnPrefixes.Top = textBoxTablePrefixes.Bottom + 5; textBoxColumnPrefixes.Top = labelColumnPrefixes.Top; labelTableSuffixes.Top = textBoxColumnPrefixes.Bottom + 5; textBoxTableSuffixes.Top = labelTableSuffixes.Top; labelColumnSuffixes.Top = textBoxTableSuffixes.Bottom + 5; textBoxColumnSuffixes.Top = labelColumnSuffixes.Top; buttonResync.Top = textBoxColumnSuffixes.Bottom + 20; buttonTestConnection.Top = buttonResync.Top; if (DesignMode) { return; } superTabConnectionSettings.SelectedTab = superTabItemConnection; MappingSet = mappingSet; ucDatabaseInformation1.UsernameChanged += (sender, e) => UsernameChanged.RaiseEvent(sender, e); ucDatabaseInformation1.PasswordChanged += (sender, e) => PasswordChanged.RaiseEvent(sender, e); ucDatabaseInformation1.SelectedDatabaseChanged += (sender, e) => SelectedDatabaseChanged.RaiseEvent(sender, e); ucDatabaseInformation1.SelectedDatabaseTypeChanged += (sender, e) => SelectedDatabaseTypeChanged.RaiseEvent(sender, e); ucDatabaseInformation1.ServerNameChanged += (sender, e) => ServerNameChanged.RaiseEvent(sender, e); Database = database; if (Database != null) { labelHeader.Text = Database.Name; } else { labelHeader.Text = "No Database Selected"; } PopulatePrefixes(); buttonImport.Enabled = false; }
private void GetProject(ArchAngel.Providers.EntityModel.Model.MappingLayer.MappingSet mappingSet, XmlDocument csprojDocument, string filename) { var hbmFiles = ProjectLoader.GetHBMFilesFromCSProj(new CSProjFile(csprojDocument, filename), fileController); // Load HBMs var mappings = hbmFiles.Select(f => MappingFiles.Version_2_2.Utility.Open(f)).ToList(); // Parse the CSharp files var csharpFiles = ProjectLoader.GetCSharpFilesFromCSProj(new CSProjFile(csprojDocument, filename), fileController); ParseResults parseResults = ParseResults.ParseCSharpFiles(csharpFiles); //foreach (ArchAngel.Providers.CodeProvider.DotNet.Class c in parseResults.parsedClasses) //{ //} //mappingSet.CodeParseResults = parseResults; // Clear the current mapped class. //mappingSet.EntitySet.Entities.ForEach(e => e.MappedClass = null); // Map the Entity objects to the parsed Class var entities = mappingSet.EntitySet.Entities.ToDictionary(e => e.Name); foreach (var hm in mappings) { foreach (var hClass in hm.Classes()) { var fullClassName = HibernateMappingHelper.ResolveFullClassName(hClass, hm); var shortClassName = HibernateMappingHelper.ResolveShortClassName(hClass, hm); // try find the entity Entity entity; if (entities.TryGetValue(shortClassName, out entity)) { // try find class in parse results var parsedClass = parseResults.FindClass(fullClassName, entity.Properties.Select(p => p.Name).ToList()); entity.MappedClass = parsedClass; } else { //Log.InfoFormat("Could not find entity for class named {0} in the NHibernate project on disk.", shortClassName); } } } }
public FormDatabase(IDatabase database, ArchAngel.Providers.EntityModel.Model.MappingLayer.MappingSet mappingSet) { InitializeComponent(); Instance = this; ArchAngel.Interfaces.SharedData.AboutToSave += new EventHandler(SharedData_AboutToSave); modelChanges1.RefreshCalled += new EventHandler(RefreshWasCalled); labelTablePrefixes.Top = ucDatabaseInformation1.BottomOfControls + 20; textBoxTablePrefixes.Top = labelTablePrefixes.Top; labelColumnPrefixes.Top = textBoxTablePrefixes.Bottom + 5; textBoxColumnPrefixes.Top = labelColumnPrefixes.Top; labelTableSuffixes.Top = textBoxColumnPrefixes.Bottom + 5; textBoxTableSuffixes.Top = labelTableSuffixes.Top; labelColumnSuffixes.Top = textBoxTableSuffixes.Bottom + 5; textBoxColumnSuffixes.Top = labelColumnSuffixes.Top; buttonResync.Top = textBoxColumnSuffixes.Bottom + 20; buttonTestConnection.Top = buttonResync.Top; if (DesignMode) return; superTabConnectionSettings.SelectedTab = superTabItemConnection; MappingSet = mappingSet; ucDatabaseInformation1.UsernameChanged += (sender, e) => UsernameChanged.RaiseEvent(sender, e); ucDatabaseInformation1.PasswordChanged += (sender, e) => PasswordChanged.RaiseEvent(sender, e); ucDatabaseInformation1.SelectedDatabaseChanged += (sender, e) => SelectedDatabaseChanged.RaiseEvent(sender, e); ucDatabaseInformation1.SelectedDatabaseTypeChanged += (sender, e) => SelectedDatabaseTypeChanged.RaiseEvent(sender, e); ucDatabaseInformation1.ServerNameChanged += (sender, e) => ServerNameChanged.RaiseEvent(sender, e); Database = database; if (Database != null) labelHeader.Text = Database.Name; else labelHeader.Text = "No Database Selected"; PopulatePrefixes(); buttonImport.Enabled = false; }
private void RefreshSchema() { // Note: this is only ok because this method only runs on the UI thread. // Two instances of it will not run at once, so this is not a race condition. // The moment it can run from another thread, this assumption is false and the // code is incorrect. if (RefreshingSchema) { return; } Cursor = Cursors.WaitCursor; databaseLock.WaitOne(); RefreshingSchema = true; IDatabaseLoader loader = CreateDatabaseLoader(); // Test connection first if (TestConnection(false) == false) { databaseLock.Set(); RefreshingSchema = false; Cursor = Cursors.Default; return; } labelNoChanges.Visible = false; labelNoChangesExport.Visible = false; Thread thread = new Thread( () => { try { List <string> schemasToLimit = Database.Tables.Union(Database.Views).Select(t => t.Schema).Distinct().ToList(); IDatabase newDb = loader.LoadDatabase(loader.DatabaseObjectsToFetch, schemasToLimit); new DatabaseProcessor().CreateRelationships(newDb); if (Database.Name == "New Database" && Database.Tables.Count == 0) { var mappingSet = new EntityModel.Controller.MappingLayer.MappingProcessor(new EntityModel.Controller.MappingLayer.OneToOneEntityProcessor()) .CreateOneToOneMapping(newDb, Database.MappingSet.TablePrefixes, Database.MappingSet.ColumnPrefixes, Database.MappingSet.TableSuffixes, Database.MappingSet.ColumnSuffixes); MappingSet = mappingSet; _Database = newDb; if (NewDatabaseCreated != null) { NewDatabaseCreated(mappingSet); } } else { var result = new DatabaseProcessor().MergeDatabases(Database, newDb); if (result.AnyChanges) { databaseChanges1.Fill(result, Database, newDb); modelChanges1.Fill(result, Database, newDb); SetControlEnabled(buttonImport, true); } else { ShowNoChangesLabel(); } } } finally { databaseLock.Set(); RefreshingSchema = false; SetCursor(Cursors.Default); } }); thread.Start(); }
private void RefreshSchema() { // Note: this is only ok because this method only runs on the UI thread. // Two instances of it will not run at once, so this is not a race condition. // The moment it can run from another thread, this assumption is false and the // code is incorrect. if (RefreshingSchema) return; Cursor = Cursors.WaitCursor; databaseLock.WaitOne(); RefreshingSchema = true; IDatabaseLoader loader = CreateDatabaseLoader(); // Test connection first if (TestConnection(false) == false) { databaseLock.Set(); RefreshingSchema = false; Cursor = Cursors.Default; return; } labelNoChanges.Visible = false; labelNoChangesExport.Visible = false; Thread thread = new Thread( () => { try { List<string> schemasToLimit = Database.Tables.Union(Database.Views).Select(t => t.Schema).Distinct().ToList(); IDatabase newDb = loader.LoadDatabase(loader.DatabaseObjectsToFetch, schemasToLimit); new DatabaseProcessor().CreateRelationships(newDb); if (Database.Name == "New Database" && Database.Tables.Count == 0) { var mappingSet = new EntityModel.Controller.MappingLayer.MappingProcessor(new EntityModel.Controller.MappingLayer.OneToOneEntityProcessor()) .CreateOneToOneMapping(newDb, Database.MappingSet.TablePrefixes, Database.MappingSet.ColumnPrefixes, Database.MappingSet.TableSuffixes, Database.MappingSet.ColumnSuffixes); MappingSet = mappingSet; _Database = newDb; if (NewDatabaseCreated != null) NewDatabaseCreated(mappingSet); } else { var result = new DatabaseProcessor().MergeDatabases(Database, newDb); if (result.AnyChanges) { databaseChanges1.Fill(result, Database, newDb); modelChanges1.Fill(result, Database, newDb); SetControlEnabled(buttonImport, true); } else ShowNoChangesLabel(); } } finally { databaseLock.Set(); RefreshingSchema = false; SetCursor(Cursors.Default); } }); thread.Start(); }