public void Generate(nHydrateModel model, Microsoft.VisualStudio.Modeling.Diagrams.Diagram diagram, Microsoft.VisualStudio.Modeling.Shell.ModelingDocData docData) { this.ErrorList = new List <string>(); GeneratedFileList = new List <nHydrate.Generator.Common.EventArgs.ProjectItemGeneratedEventArgs>(); try { #region Generation //Clean up delete tracking model.RemovedTables.Remove(x => model.Entities.Select(y => y.PascalName).Contains(x)); model.RemovedViews.Remove(x => model.Views.Select(y => y.PascalName).Contains(x)); var g = new nHydrate.Generator.Common.GeneratorFramework.GeneratorHelper(); g.ProjectItemGenerated += new nHydrate.Generator.Common.GeneratorFramework.ProjectItemGeneratedEventHandler(g_ProjectItemGenerated); var genList = BuildModelList(model, diagram, docData); var excludeList = new List <Type>(); var generatorTypeList = g.GetProjectGenerators(genList.First()); if (generatorTypeList.Count == 0) { return; //add message box } if (ChooseGenerators(model, genList, generatorTypeList, excludeList, g)) { //Perform actual generation if (genList.Count > 0) { PerformGeneration(model, genList, diagram.Store, docData, excludeList, g); } model.RemovedTables.Clear(); model.RemovedViews.Clear(); } #endregion //Remove temp file try { genList.ForEach(x => System.IO.File.Delete(x.FileName)); } catch { } #if DEBUG if (this.ErrorList.Count > 0) { var F = new nHydrate.DslPackage.Forms.ErrorForm(); F.SetErrors(this.ErrorList); F.ShowDialog(); } #endif } catch (Exception ex) { throw; } }
public void Generate(nHydrateModel model, Microsoft.VisualStudio.Modeling.Diagrams.Diagram diagram, Microsoft.VisualStudio.Modeling.Shell.ModelingDocData docData) { this.ErrorList = new List<string>(); GeneratedFileList = new List<nHydrate.Generator.Common.EventArgs.ProjectItemGeneratedEventArgs>(); //Verify registered version if (!nHydrate.Generator.Common.GeneratorFramework.AddinAppData.Instance.PremiumValidated) { //REGISTERED FEATURES: //Entity > 50 //Use Modules //Use Functions //if (model.Modules.Count > 0 || // model.Entities.Count(x => x.IsGenerated) > 50 || // model.Functions.Count > 0) //{ // if (MessageBox.Show("You must register this product to use the following functionality:\n\n1. Use more than 50 Entities\n2. Use Modules\n3.Use Functions\n\nDo you wish to go to the nHydrate.org website and register this software?", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.Yes) // { // System.Diagnostics.Process.Start("http://www.nhydrate.org"); // } // return; //} } try { #region Generation //Clean up delete tracking model.RemovedTables.Remove(x => model.Entities.Select(y => y.PascalName).Contains(x)); model.RemovedViews.Remove(x => model.Views.Select(y => y.PascalName).Contains(x)); model.RemovedStoredProcedures.Remove(x => model.StoredProcedures.Select(y => y.PascalName).Contains(x)); model.RemovedFunctions.Remove(x => model.Functions.Select(y => y.PascalName).Contains(x)); var g = new nHydrate.Generator.Common.GeneratorFramework.GeneratorHelper(); g.ProjectItemGenerated += new nHydrate.Generator.Common.GeneratorFramework.ProjectItemGeneratedEventHandler(g_ProjectItemGenerated); var genList = BuildModelList(model, diagram, docData); var excludeList = new List<Type>(); var generatorTypeList = g.GetProjectGenerators(genList.First()); if (generatorTypeList.Count == 0) return; //add message box var generateModuleList = new List<string>(); if (ChooseGenerators(model, genList, generatorTypeList, excludeList, g, generateModuleList)) { //Perform actual generation if (genList.Count > 0) { PerformGeneration(model, genList, diagram.Store, docData, excludeList, g, generateModuleList); } model.RemovedTables.Clear(); model.RemovedViews.Clear(); model.RemovedStoredProcedures.Clear(); model.RemovedFunctions.Clear(); } #endregion //Remove temp file try { genList.ForEach(x => System.IO.File.Delete(x.FileName)); } catch { } #if DEBUG if (this.ErrorList.Count > 0) { var F = new nHydrate.DslPackage.Forms.ErrorForm(); F.SetErrors(this.ErrorList); F.ShowDialog(); } #endif } catch (Exception ex) { throw; } }
// private IVsOutputWindowPane outputWindow = null; private void GenerateAll() { var processKey = string.Empty; try { var startTime = DateTime.Now; //object outputWindow = this.CreatePane(new Guid("{2C997982-CA6C-4640-8073-DB1B9BD8D93B}"), "Generation", true, true); processKey = UIHelper.ProgressingStarted(); this.FilesSkipped = 0; this.FilesSuccess = 0; this.FilesFailed = 0; this.GeneratedFileList.Clear(); this.tvwModel.Enabled = false; this.ClearContentPane(); try { //If error then do not gen var messageCollection = ((INHydrateGenerator)this.Generator).RootController.Verify(); UIHelper.ProgressingComplete(processKey); if (messageCollection.Count > 0) { var errorCount = messageCollection.Count(x => x.MessageType == MessageTypeConstants.Error); this.lvwError.ClearMessages(); this.lvwError.AddMessages(messageCollection); if (errorCount > 0) { MessageBox.Show("The model cannot be generated until all errors are corrected.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } tabControl1.SelectedTab = tabControl1.TabPages[1]; //Show the output window lvwOutput.Items.Clear(); var g = new GeneratorHelper(); var excludeList = new List<Type>(); var generatorTypeList = g.GetProjectGenerators(this.Generator); if (generatorTypeList.Count == 0) return; //Show wizard first var F1 = new GenerateSettingsWizard(this.Generator, generatorTypeList); List<System.Type> selectedTypes = null; if (F1.IsValid) { if (F1.ShowDialog() == DialogResult.OK) { selectedTypes = F1.SelectGenerators; } } //Show generator list using (var F = new GenerateSettings(this.Generator, generatorTypeList, selectedTypes)) { if (F.ShowDialog() != DialogResult.OK) return; excludeList = F.ExcludeList; } g.ProjectItemGenerated += new ProjectItemGeneratedEventHandler(ProjectItemGeneratedHandler); g.GenerationComplete += new ProjectItemGenerationCompleteEventHandler(GenerationCompleteHandler); g.ProjectItemGeneratedError += new ProjectItemGeneratedEventHandler(ProjectItemGeneratedError); g.GenerateAll(this.Generator, excludeList); } catch (Exception ex) { throw; } finally { this.ResetContentPane(); } var endTime = DateTime.Now; var duration = endTime.Subtract(startTime); using (var F = new StatisticsForm()) { var text = "The generation was successful.\r\n\r\n"; text += "Files generated: " + this.FilesSuccess + "\r\n"; text += "Files skipped: " + this.FilesSkipped + "\r\n"; text += "Files failed: " + this.FilesFailed + "\r\n"; text += "\r\n\r\n"; text += "Generation time: " + duration.Hours.ToString("00") + ":" + duration.Minutes.ToString("00") + ":" + duration.Seconds.ToString("00"); F.DisplayText = text; F.GeneratedFileList = this.GeneratedFileList; F.ShowDialog(); } } catch (Exception ex) { GlobalHelper.ShowError(ex); } finally { UIHelper.ProgressingComplete(processKey); this.tvwModel.Enabled = true; } }