GetProjectGenerators() public method

public GetProjectGenerators ( IGenerator generator ) : List
generator IGenerator
return List
Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
		// 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;
			}

		}