public void UpdateModelViews(ModelViewSerializable mvs) { if (ModelViews == null) { ModelViews = new ObservableCollection <ModelViewSerializable>(); } if ((mvs != null) && (SelectedEntity != null) && (CurrentDbContext != null)) { if (mvs.RootEntityFullClassName == SelectedEntity.CodeElementFullName) { if (CurrentDbContext.ModelViews != null) { ModelViewSerializable result = CurrentDbContext.ModelViews.FirstOrDefault(m => m.ViewName == mvs.ViewName); if (result != null) { if (!ModelViews.Any(m => m.ViewName == mvs.ViewName)) { ModelViews.Add(mvs); } } } } } OnPropertyChanged("SelectedEntity"); }
public void DoGenerateViewModel(DTE2 Dte, ITextTemplating textTemplating, SelectedItem DestinationSelectedItem, string T4TempatePath, ModelView modelView) { this.GenerateText = ""; this.GenerateError = ""; GeneratedModelView = new ModelViewSerializable(); modelView.ModelViewAssingTo(GeneratedModelView); ITextTemplatingSessionHost textTemplatingSessionHost = (ITextTemplatingSessionHost)textTemplating; textTemplatingSessionHost.Session = textTemplatingSessionHost.CreateSession(); TPCallback tpCallback = new TPCallback(); textTemplatingSessionHost.Session["Model"] = GeneratedModelView; if (string.IsNullOrEmpty(GenText)) { this.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, File.ReadAllText(T4TempatePath), tpCallback); } else { this.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, GenText, tpCallback); } FileExtension = tpCallback.FileExtension; if (tpCallback.ProcessingErrors != null) { foreach (TPError tpError in tpCallback.ProcessingErrors) { this.GenerateError = tpError.ToString() + "\n"; } } IsReady.DoNotify(this, string.IsNullOrEmpty(this.GenerateError)); }
public void DoAnalize(ModelViewSerializable srcModel) { if (SelectedModel == null) { SelectedModel = new ModelView(); } if ((SelectedEntity == null) || (SelectedDbContext == null)) { SelectedTreeViewItem = null; SelectedModel.ClearModelView(); } if ((SelectedEntity.CodeElementRef == null) || (SelectedDbContext.CodeElementRef == null)) { SelectedTreeViewItem = null; SelectedModel.ClearModelView(); } (SelectedEntity.CodeElementRef as CodeClass). DefineModelView(SelectedDbContext.CodeElementRef as CodeClass, SelectedModel, ViewNameSufix, PageViewNameSufix); SelectedModel.ViewProject = DestinationProject; SelectedModel.ViewDefaultProjectNameSpace = DefaultProjectNameSpace; SelectedModel.ViewFolder = DestinationFolder; if (srcModel != null) { srcModel.ModelViewSerializableAssingTo(SelectedModel, CurrentDbContext, false); } OnPropertyChanged("SelectedModel"); }
public void OnSelectedItemViewNameChanged() { if (SelectedItem == null) { return; } ModelViewForeignKey foreignKey = SelectedItem as ModelViewForeignKey; if (foreignKey == null) { return; } //foreignKey.IsAssinging = true; foreignKey.ViewName = SelectedItemViewName; //foreignKey.IsAssinging = false; if (foreignKey.ScalarProperties == null) { foreignKey.ScalarProperties = new ObservableCollection <ModelViewProperty>(); } if (string.IsNullOrEmpty(foreignKey.ViewName)) { return; } if (foreignKey.ScalarProperties.Count > 0) { return; } ModelViewSerializable modelViewSerializable = ModelViews.FirstOrDefault(mv => mv.ViewName == foreignKey.ViewName); if (modelViewSerializable.ScalarProperties == null) { return; } modelViewSerializable.ScalarProperties.ForEach(mv => foreignKey.ScalarProperties.Add(mv.ModelViewPropertySerializableAssingTo(new ModelViewProperty()))); bool isRequired = foreignKey.ModelViewForeignKeyIsRequired(); foreach (ModelViewProperty prop in foreignKey.ScalarProperties) { prop.IsRequiredInView = prop.IsRequiredInView && isRequired; } foreignKey.IsAssinging = true; foreignKey.ForeignKeyPrefix = foreignKey.NavigationName + modelViewSerializable.ViewName; foreignKey.IsAssinging = false; foreignKey.OnModelViewForeignKeyPrefixChanged(); foreignKey.ModelViewForeignKeyUpdateForeignKeyNameChain(); }
public virtual void ImportBtnCommandAction(Object param) { OpenFileDialog ofdlg = new OpenFileDialog(); ofdlg.Filter = "JSON-files(*.json)|*.json"; ofdlg.DefaultExt = "json"; ofdlg.Title = "Select a source to import"; if (ofdlg.ShowDialog() != DialogResult.OK) { return; } try { string jsonString = File.ReadAllText(ofdlg.FileName); DbContextSerializable srcContext = JsonConvert.DeserializeObject <DbContextSerializable>(jsonString); if (CurrentDbContext == null) { return; } if (CurrentDbContext.ModelViews == null) { CurrentDbContext.ModelViews = new List <ModelViewSerializable>(); } foreach (ModelViewSerializable itm in srcContext.ModelViews) { if (itm.RootEntityClassName != SelectedEntity.CodeElementName) { continue; } if (CurrentDbContext.ModelViews.Any(m => m.ViewName == itm.ViewName)) { continue; } ModelViewSerializable destItm = itm.ModelViewSerializableGetCopy(this.DestinationProject, this.DefaultProjectNameSpace, this.DestinationFolder, this.DbSetProppertyName, this.SelectedEntity); CurrentDbContext.ModelViews.Add(destItm); ModelViews.Add(destItm); } } catch (Exception e) { System.Windows.Forms.MessageBox.Show("Error:" + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }
private void OnContextChanged(Object sender) { if (CreateWebApiUC == null) { return; } if (CreateWebApiUC.DataContext == null) { return; } if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SerializableDbContext == null) { return; } if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).ModelViews == null) { return; } ModelViewSerializable mv = (CreateWebApiUC.DataContext as CreateWebApiViewModel).ModelViews.Where(m => m.ViewName == (CreateWebApiUC.DataContext as CreateWebApiViewModel).ContextItemViewName).FirstOrDefault(); if (mv == null) { return; } DbContextSerializable cn = (CreateWebApiUC.DataContext as CreateWebApiViewModel).SerializableDbContext; if (cn.CommonStaffs == null) { return; } if (mv.CommonStaffs == null) { mv.CommonStaffs = new List <CommonStaffSerializable>(); } mv.CommonStaffs.Clear(); foreach (CommonStaffSerializable csf in cn.CommonStaffs) { mv.CommonStaffs.Add(csf); } }
public void DoGenerateViewModel(DTE2 Dte, ITextTemplating textTemplating, string T4TempatePath, DbContextSerializable SerializableDbContext, ModelViewSerializable model, string defaultProjectNameSpace = null) { this.GenerateText = ""; this.GenerateError = ""; IsReady.DoNotify(this, false); if ((model == null) || (SerializableDbContext == null)) { return; } GeneratedModelView = model; ITextTemplatingSessionHost textTemplatingSessionHost = (ITextTemplatingSessionHost)textTemplating; textTemplatingSessionHost.Session = textTemplatingSessionHost.CreateSession(); TPCallback tpCallback = new TPCallback(); textTemplatingSessionHost.Session["Model"] = GeneratedModelView; textTemplatingSessionHost.Session["Context"] = SerializableDbContext; textTemplatingSessionHost.Session["DefaultProjectNameSpace"] = string.IsNullOrEmpty(defaultProjectNameSpace) ? "" : defaultProjectNameSpace; if (string.IsNullOrEmpty(GenText)) { this.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, File.ReadAllText(T4TempatePath), tpCallback); } else { this.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, GenText, tpCallback); } FileExtension = tpCallback.FileExtension; if (tpCallback.ProcessingErrors != null) { foreach (TPError tpError in tpCallback.ProcessingErrors) { this.GenerateError += tpError.ToString() + "\n"; } } IsReady.DoNotify(this, string.IsNullOrEmpty(this.GenerateError)); }
public override void SaveBtnCommandAction(Object param) { DbContextSerializable localDbContext = (CreateWebApiUC.DataContext as CreateWebApiViewModel).SerializableDbContext; ModelViewSerializable modelViewSerializable = (GenerateUC.DataContext as GenerateCommonStaffViewModel).GeneratedModelView; ModelViewSerializable existedModelViewSerializable = localDbContext.ModelViews.FirstOrDefault(mv => mv.ViewName == modelViewSerializable.ViewName); if (existedModelViewSerializable != null) { existedModelViewSerializable.ScalarProperties = modelViewSerializable.ScalarProperties; existedModelViewSerializable.WebApiServiceName = modelViewSerializable.WebApiServiceName; existedModelViewSerializable.IsWebApiSelectAll = modelViewSerializable.IsWebApiSelectAll; existedModelViewSerializable.IsWebApiSelectManyWithPagination = modelViewSerializable.IsWebApiSelectManyWithPagination; existedModelViewSerializable.IsWebApiSelectOneByPrimarykey = modelViewSerializable.IsWebApiSelectOneByPrimarykey; existedModelViewSerializable.IsWebApiAdd = modelViewSerializable.IsWebApiAdd; existedModelViewSerializable.IsWebApiUpdate = modelViewSerializable.IsWebApiUpdate; existedModelViewSerializable.IsWebApiDelete = modelViewSerializable.IsWebApiDelete; existedModelViewSerializable.WebApiServiceProject = modelViewSerializable.WebApiServiceProject; existedModelViewSerializable.WebApiServiceDefaultProjectNameSpace = modelViewSerializable.WebApiServiceDefaultProjectNameSpace; existedModelViewSerializable.WebApiServiceFolder = modelViewSerializable.WebApiServiceFolder; existedModelViewSerializable.UIFormProperties = modelViewSerializable.UIFormProperties; existedModelViewSerializable.UIListProperties = modelViewSerializable.UIListProperties; } else { localDbContext.ModelViews.Add(modelViewSerializable); } string projectName = ""; if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef != null) { if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef.ProjectItem != null) { projectName = (CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef.ProjectItem.ContainingProject.UniqueName; } } if (!string.IsNullOrEmpty(projectName)) { string locFileName = Path.Combine(projectName, (CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementFullName, JsonExtension); locFileName = locFileName.Replace("\\", "."); SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName); locFileName = Path.Combine(SolutionDirectory, locFileName); string jsonString = JsonConvert.SerializeObject(localDbContext); File.WriteAllText(locFileName, jsonString); } try { SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName); string FlNm = Path.Combine( SolutionDirectory, Path.GetDirectoryName(modelViewSerializable.WebApiServiceProject), modelViewSerializable.WebApiServiceFolder, modelViewSerializable.WebApiServiceName + (GenerateUC.DataContext as GenerateCommonStaffViewModel).FileExtension); File.WriteAllText(FlNm, (GenerateUC.DataContext as GenerateCommonStaffViewModel).GenerateText); DestinationProject.ProjectItems.AddFromFile(FlNm); MessageBox.Show(SuccessNotification, "Done", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception e) { MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
public virtual void StartBtnCommandBatchAction(Object param) { Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread(); IVsThreadedWaitDialog2 aDialog = null; bool aDialogStarted = false; if (this.DialogFactory != null) { this.DialogFactory.CreateInstance(out aDialog); if (aDialog != null) { aDialogStarted = aDialog.StartWaitDialog("Generation started", "VS is Busy", "Please wait", null, "Generation started", 0, false, true) == VSConstants.S_OK; } } StringBuilder sb = new StringBuilder(); try { sb.AppendLine("Json parsing started"); BatchSettings batchSettings = BatchSettingsHelper.ReadBatchSettingsFromString(CurrentBatchSetting); if (batchSettings == null) { throw new Exception("Could not Deserialize Object"); } sb.AppendLine("Json parsing finished"); if (batchSettings.BatchItems == null) { throw new Exception("Batch Items is empty"); } sb.AppendLine("Batch Items processing started"); foreach (BatchItem batchItem in batchSettings.BatchItems) { ModelViewSerializable currentSerializableModel = SerializableModel; if (!string.IsNullOrEmpty(batchItem.ViewModel)) { currentSerializableModel = SerializableDbContext.ModelViews.Where(m => m.ViewName == batchItem.ViewModel).FirstOrDefault(); if (currentSerializableModel == null) { throw new Exception("Could not find [" + batchItem.ViewModel + "] of the Batch Item = " + batchItem.GeneratorType); } } sb.AppendLine("Processing Batch Item: [DestinationFolder]=[" + batchItem.DestinationFolder + "]"); sb.AppendLine(" [GeneratorType]=[" + batchItem.GeneratorType + "]"); sb.AppendLine(" [GeneratorSript]=[" + batchItem.GeneratorSript + "]"); string tmpltPath = Path.Combine(T4RootFolder, batchItem.GeneratorType, batchItem.GeneratorSript); string FileName = ""; if (currentSerializableModel.ViewName == ContextItemViewName) { FileName = BatchSettingsHelper.TrimPrefix(Path.GetFileNameWithoutExtension(batchItem.GeneratorType)); } else { FileName = currentSerializableModel.ViewName + BatchSettingsHelper.TrimPrefix(Path.GetFileNameWithoutExtension(batchItem.GeneratorType)); } FileName = BatchSettingsHelper.GetHyphenedName(FileName); sb.AppendLine(" Batch Item: Creating Shallow Copy"); ModelViewSerializable ShallowCopy = null; if (currentSerializableModel.ViewName == SerializableModel.ViewName) { ShallowCopy = BatchSettingsHelper.GetSelectedModelCommonShallowCopy(currentSerializableModel, UIFormProperties, UIListProperties, DestinationProjectName, DefaultProjectNameSpace, DestinationFolder, batchItem.DestinationFolder, batchItem.GeneratorType, FileName); } else { ShallowCopy = BatchSettingsHelper.GetSelectedModelCommonShallowCopy(currentSerializableModel, null, null, DestinationProjectName, DefaultProjectNameSpace, DestinationFolder, batchItem.DestinationFolder, batchItem.GeneratorType, FileName); } sb.AppendLine(" Batch Item: Generating Code"); GeneratorBatchStep generatorBatchStep = BatchSettingsHelper.DoGenerateViewModel(Dte, TextTemplating, tmpltPath, SerializableDbContext, ShallowCopy, DefaultProjectNameSpace); if (!string.IsNullOrEmpty(generatorBatchStep.GenerateError)) { throw new Exception(generatorBatchStep.GenerateError); } sb.AppendLine(" Batch Item: Adding Generated file to project and Updating Wizard's Context Repository"); BatchSettingsHelper.UpdateDbContext(Dte, DestinationProject, SelectedDbContext, SerializableDbContext, ShallowCopy, ContextItemViewName, batchItem.GeneratorType, DestinationProjectRootFolder, DestinationFolder, batchItem.DestinationFolder, FileName, generatorBatchStep.FileExtension, generatorBatchStep.GenerateText); currentSerializableModel.CommonStaffs = ShallowCopy.CommonStaffs; sb.AppendLine("Batch Item Processing finished"); } sb.AppendLine("Batch Items processing finished"); } catch (Exception e) { LastError = "Exception thrown: " + e.Message; return; } finally { if (aDialogStarted) { int iOut; aDialog.EndWaitDialog(out iOut); } ReportText = sb.ToString(); } }
public override void SaveBtnCommandAction(Object param) { ModelViewSerializable modelViewSerializable = new ModelViewSerializable(); (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ModelViewAssingTo(modelViewSerializable); ModelViewSerializable existedModelViewSerializable = CurrentDbContext.ModelViews.FirstOrDefault(mv => mv.ViewName == modelViewSerializable.ViewName); if (existedModelViewSerializable != null) { existedModelViewSerializable.PageViewName = modelViewSerializable.PageViewName; existedModelViewSerializable.RootEntityClassName = modelViewSerializable.RootEntityClassName; existedModelViewSerializable.RootEntityFullClassName = modelViewSerializable.RootEntityFullClassName; existedModelViewSerializable.RootEntityUniqueProjectName = modelViewSerializable.RootEntityUniqueProjectName; existedModelViewSerializable.RootEntityDbContextPropertyName = modelViewSerializable.RootEntityDbContextPropertyName; existedModelViewSerializable.ViewProject = modelViewSerializable.ViewProject; existedModelViewSerializable.ViewDefaultProjectNameSpace = modelViewSerializable.ViewDefaultProjectNameSpace; existedModelViewSerializable.ViewFolder = modelViewSerializable.ViewFolder; existedModelViewSerializable.GenerateJSonAttribute = modelViewSerializable.GenerateJSonAttribute; if ((existedModelViewSerializable.ScalarProperties != null) && (modelViewSerializable.ScalarProperties != null)) { foreach (ModelViewPropertyOfVwSerializable srcProp in existedModelViewSerializable.ScalarProperties) { ModelViewPropertyOfVwSerializable dest = null; if (string.IsNullOrEmpty(srcProp.ForeignKeyNameChain)) { dest = modelViewSerializable.ScalarProperties .Where(p => ((p.OriginalPropertyName == srcProp.OriginalPropertyName) && string.IsNullOrEmpty(p.ForeignKeyNameChain))).FirstOrDefault(); } else { dest = modelViewSerializable.ScalarProperties .Where(p => ((p.OriginalPropertyName == srcProp.OriginalPropertyName) && (p.ForeignKeyNameChain == srcProp.ForeignKeyNameChain))).FirstOrDefault(); } if (dest != null) { dest.IsUsedBySorting = srcProp.IsUsedBySorting; dest.IsUsedByfilter = srcProp.IsUsedByfilter; } } } existedModelViewSerializable.ScalarProperties = modelViewSerializable.ScalarProperties; existedModelViewSerializable.ForeignKeys = modelViewSerializable.ForeignKeys; existedModelViewSerializable.PrimaryKeyProperties = modelViewSerializable.PrimaryKeyProperties; existedModelViewSerializable.AllProperties = modelViewSerializable.AllProperties; existedModelViewSerializable.UIFormProperties = modelViewSerializable.UIFormProperties; existedModelViewSerializable.UIListProperties = modelViewSerializable.UIListProperties; } else { CurrentDbContext.ModelViews.Add(modelViewSerializable); } if (SelectExistingUC != null) { (SelectExistingUC.DataContext as SelectExistingViewModel).UpdateModelViews(modelViewSerializable); } string projectName = ""; if ((SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext.CodeElementRef != null) { if ((SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext.CodeElementRef.ProjectItem != null) { projectName = (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext.CodeElementRef.ProjectItem.ContainingProject.UniqueName; } } if (!string.IsNullOrEmpty(projectName)) { string locFileName = Path.Combine(projectName, (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext.CodeElementFullName, JsonExtension); locFileName = locFileName.Replace("\\", "."); SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName); locFileName = Path.Combine(SolutionDirectory, locFileName); string jsonString = JsonConvert.SerializeObject(CurrentDbContext); File.WriteAllText(locFileName, jsonString); } try { SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName); if (CurrentUiStepId == 6) { string FlNm = Path.Combine( SolutionDirectory, Path.GetDirectoryName((CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewProject), (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewFolder, (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewName + (GenerateUC.DataContext as GenerateViewModel).FileExtension); File.WriteAllText(FlNm, (GenerateUC.DataContext as GenerateViewModel).GenerateText); DestinationProject.ProjectItems.AddFromFile(FlNm); } else if (CurrentUiStepId == 8) { string FlNm = Path.Combine( SolutionDirectory, Path.GetDirectoryName((CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewProject), (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewFolder, (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.PageViewName //+ "." + (GeneratePageUC.DataContext as GenerateViewPageModel).FileExtension); File.WriteAllText(FlNm, (GeneratePageUC.DataContext as GenerateViewPageModel).GenerateText); DestinationProject.ProjectItems.AddFromFile(FlNm); } MessageBox.Show(SuccessNotification, "Done", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception e) { MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
public override void NextBtnCommandAction(Object param) { switch (CurrentUiStepId) { case 0: CurrentUiStepId = 1; PrevBtnEnabled = true; NextBtnEnabled = false; SaveBtnEnabled = false; if (SelectDbContextUC == null) { SelectDbContextViewModel dataContext = new SelectDbContextViewModel(Dte); dataContext.UiCommandButtonVisibility = Visibility.Collapsed; dataContext.UiCommandCaption3 = "NameSpace: " + (InvitationUC.DataContext as InvitationViewModel).DefaultProjectNameSpace; string folder = (InvitationUC.DataContext as InvitationViewModel).DestinationFolder; if (!string.IsNullOrEmpty(folder)) { dataContext.UiCommandCaption3 = dataContext.UiCommandCaption3 + "." + folder.Replace("\\", "."); } SelectDbContextUC = new UserControlSelectSource(dataContext); dataContext.IsReady.IsReadyEvent += SelectDbContextViewModel_IsReady; } (SelectDbContextUC.DataContext as SelectDbContextViewModel).DoAnaliseDbContext(); this.CurrentUserControl = SelectDbContextUC; this.OnPropertyChanged("CurrentUserControl"); break; case 1: CurrentUiStepId = 2; PrevBtnEnabled = true; NextBtnEnabled = false; SaveBtnEnabled = false; if (SelectSourceEntityUC == null) { SelectEntityForGivenDbContextViewModel dataContext = new SelectEntityForGivenDbContextViewModel(Dte); dataContext.UiCommandButtonVisibility = Visibility.Collapsed; dataContext.IsReady.IsReadyEvent += SelectEntityForGivenDbContextViewModel_IsReady; SelectSourceEntityUC = new UserControlSelectSource(dataContext); } (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext = (SelectDbContextUC.DataContext as SelectDbContextViewModel).SelectedCodeElement; (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).CheckIsReady(); OnDbContextChanged(); this.CurrentUserControl = SelectSourceEntityUC; this.OnPropertyChanged("CurrentUserControl"); break; case 2: CurrentUiStepId = 3; PrevBtnEnabled = true; NextBtnEnabled = false; SaveBtnEnabled = false; if (SelectExistingUC == null) { SelectExistingViewModel dataContext = new SelectExistingViewModel(Dte); dataContext.IsReady.IsReadyEvent += SelectEntityForGivenDbContextViewModel_IsReady; SelectExistingUC = new UserControlSelectExisting(dataContext); } (SelectExistingUC.DataContext as SelectExistingViewModel).CurrentDbContext = CurrentDbContext; (SelectExistingUC.DataContext as SelectExistingViewModel).SelectedEntity = (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedCodeElement; (SelectExistingUC.DataContext as SelectExistingViewModel).DestinationProject = (InvitationUC.DataContext as InvitationViewModel).DestinationProject; (SelectExistingUC.DataContext as SelectExistingViewModel).DefaultProjectNameSpace = (InvitationUC.DataContext as InvitationViewModel).DefaultProjectNameSpace; (SelectExistingUC.DataContext as SelectExistingViewModel).DestinationFolder = (InvitationUC.DataContext as InvitationViewModel).DestinationFolder; (SelectExistingUC.DataContext as SelectExistingViewModel).DbSetProppertyName = (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedProppertyName; (SelectExistingUC.DataContext as SelectExistingViewModel).DoAnalize(); this.CurrentUserControl = SelectExistingUC; this.OnPropertyChanged("CurrentUserControl"); break; case 3: CurrentUiStepId = 4; PrevBtnEnabled = true; NextBtnEnabled = true; SaveBtnEnabled = false; if (CreateViewUC == null) { CreateViewViewModel dataContext = new CreateViewViewModel(Dte); dataContext.IsReady.IsReadyEvent += SelectEntityForGivenDbContextViewModel_IsReady; dataContext.DestinationProject = (InvitationUC.DataContext as InvitationViewModel).DestinationProject; dataContext.DefaultProjectNameSpace = (InvitationUC.DataContext as InvitationViewModel).DefaultProjectNameSpace; dataContext.DestinationFolder = (InvitationUC.DataContext as InvitationViewModel).DestinationFolder; CreateViewUC = new UserControlCreateView(dataContext); } (CreateViewUC.DataContext as CreateViewViewModel).SelectedDbContext = (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext; (CreateViewUC.DataContext as CreateViewViewModel).SelectedEntity = (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedCodeElement; (CreateViewUC.DataContext as CreateViewViewModel).CurrentDbContext = CurrentDbContext; (CreateViewUC.DataContext as CreateViewViewModel).DestinationDbSetProppertyName = (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedProppertyName; ModelViewSerializable srcModel = null; if ((SelectExistingUC.DataContext as SelectExistingViewModel).IsSelectExisting) { srcModel = (SelectExistingUC.DataContext as SelectExistingViewModel).SelectedModel; } (CreateViewUC.DataContext as CreateViewViewModel).DoAnalize(srcModel); this.CurrentUserControl = CreateViewUC; this.OnPropertyChanged("CurrentUserControl"); break; case 4: string checkErrorsText = (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.CheckCorrect(); if (!string.IsNullOrEmpty(checkErrorsText)) { (CreateViewUC.DataContext as CreateViewViewModel).CheckErrorsText = checkErrorsText; return; } CurrentUiStepId = 5; PrevBtnEnabled = true; NextBtnEnabled = true; SaveBtnEnabled = false; if (T4EditorUC == null) { string TemplatesFld = TemplatePathHelper.GetTemplatePath(); string templatePath = Path.Combine(TemplatesFld, "ViewModelTmplst"); T4EditorViewModel dataContext = new T4EditorViewModel(templatePath); dataContext.IsReady.IsReadyEvent += T4EditorViewModel_IsReady; T4EditorUC = new UserControlT4Editor(dataContext); } (T4EditorUC.DataContext as T4EditorViewModel).CheckIsReady(); this.CurrentUserControl = T4EditorUC; this.OnPropertyChanged("CurrentUserControl"); break; case 5: CurrentUiStepId = 6; PrevBtnEnabled = true; NextBtnEnabled = false; IVsThreadedWaitDialog2 aDialog = null; bool aDialogStarted = false; if (this.DialogFactory != null) { this.DialogFactory.CreateInstance(out aDialog); if (aDialog != null) { aDialogStarted = aDialog.StartWaitDialog("Generation started", "VS is Busy", "Please wait", null, "Generation started", 0, false, true) == VSConstants.S_OK; } } if (GenerateUC == null) { GenerateViewModel generateViewModel = new GenerateViewModel(); generateViewModel.IsReady.IsReadyEvent += GenerateViewModel_IsReady; GenerateUC = new UserControlGenerate(generateViewModel); } (GenerateUC.DataContext as GenerateViewModel).GenText = (T4EditorUC.DataContext as T4EditorViewModel).T4TempateText; try { (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.RootEntityDbContextPropertyName = (CreateViewUC.DataContext as CreateViewViewModel).DestinationDbSetProppertyName; (GenerateUC.DataContext as GenerateViewModel).DoGenerateViewModel(Dte, TextTemplating, null, (T4EditorUC.DataContext as T4EditorViewModel).T4TempatePath, (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel); NextBtnEnabled = true; if (aDialogStarted) { int iOut; aDialog.EndWaitDialog(out iOut); } MessageBox.Show(SuccessNotification, "Done", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception e) { if (aDialogStarted) { int iOut; aDialog.EndWaitDialog(out iOut); } MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } finally { this.CurrentUserControl = GenerateUC; this.OnPropertyChanged("CurrentUserControl"); } break; case 6: CurrentUiStepId = 7; PrevBtnEnabled = true; NextBtnEnabled = true; SaveBtnEnabled = false; if (T4EditorPageUC == null) { string TemplatesFld = TemplatePathHelper.GetTemplatePath(); string templatePath = Path.Combine(TemplatesFld, "ViewPageModelTmplst"); T4EditorViewModel dataContext = new T4EditorViewModel(templatePath); dataContext.IsReady.IsReadyEvent += T4EditorViewModel_IsReady; T4EditorPageUC = new UserControlT4Editor(dataContext); } (T4EditorPageUC.DataContext as T4EditorViewModel).CheckIsReady(); this.CurrentUserControl = T4EditorPageUC; this.OnPropertyChanged("CurrentUserControl"); break; case 7: CurrentUiStepId = 8; PrevBtnEnabled = true; NextBtnEnabled = true; IVsThreadedWaitDialog2 aaDialog = null; bool aaDialogStarted = false; if (this.DialogFactory != null) { this.DialogFactory.CreateInstance(out aaDialog); if (aaDialog != null) { aaDialogStarted = aaDialog.StartWaitDialog("Generation started", "VS is Busy", "Please wait", null, "Generation started", 0, false, true) == VSConstants.S_OK; } } if (GeneratePageUC == null) { GenerateViewPageModel generateViewModel = new GenerateViewPageModel(); generateViewModel.IsReady.IsReadyEvent += GenerateViewModel_IsReady; GeneratePageUC = new UserControlGenerate(generateViewModel); } (GeneratePageUC.DataContext as GenerateViewPageModel).GenText = (T4EditorPageUC.DataContext as T4EditorViewModel).T4TempateText; try { (GeneratePageUC.DataContext as GenerateViewPageModel).GeneratedModelView = (GenerateUC.DataContext as GenerateViewModel).GeneratedModelView; (GeneratePageUC.DataContext as GenerateViewPageModel).DoGenerateViewPageModel(Dte, TextTemplating, null, (T4EditorPageUC.DataContext as T4EditorViewModel).T4TempatePath); if (aaDialogStarted) { int iOut; aaDialog.EndWaitDialog(out iOut); } } catch (Exception e) { if (aaDialogStarted) { int iOut; aaDialog.EndWaitDialog(out iOut); } MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } finally { this.CurrentUserControl = GeneratePageUC; this.OnPropertyChanged("CurrentUserControl"); } break; case 8: CurrentUiStepId = 1; NextBtnCommandAction(param); break; default: break; } }
public override void SaveBtnCommandAction(Object param) { DbContextSerializable localDbContext = (CreateWebApiUC.DataContext as CreateWebApiViewModel).SerializableDbContext; ModelViewSerializable modelViewSerializable = (GenerateUC.DataContext as GenerateCommonStaffViewModel).GeneratedModelView; if (modelViewSerializable.ViewName == (CreateWebApiUC.DataContext as CreateWebApiViewModel).ContextItemViewName) { localDbContext.CommonStaffs = modelViewSerializable.CommonStaffs; if ((SelectFolderUC.DataContext as SelectFolderViewModel).SelectedModel != null) { (SelectFolderUC.DataContext as SelectFolderViewModel).SelectedModel.CommonStaffs = localDbContext.CommonStaffs; } if (localDbContext.CommonStaffs != null) { CommonStaffSerializable commonStaffSerializable = localDbContext.CommonStaffs .Where(c => c.FileType == (SelectFolderUC.DataContext as SelectFolderViewModel).T4SelectedFolder) .FirstOrDefault(); if (commonStaffSerializable != null) { commonStaffSerializable.Extension = (GenerateUC.DataContext as GenerateCommonStaffViewModel).FileExtension; } } } else { ModelViewSerializable existedModelViewSerializable = localDbContext.ModelViews.FirstOrDefault(mv => mv.ViewName == modelViewSerializable.ViewName); if (modelViewSerializable.CommonStaffs != null) { CommonStaffSerializable commonStaffSerializable = modelViewSerializable.CommonStaffs .Where(c => c.FileType == (SelectFolderUC.DataContext as SelectFolderViewModel).T4SelectedFolder) .FirstOrDefault(); if (commonStaffSerializable != null) { commonStaffSerializable.Extension = (GenerateUC.DataContext as GenerateCommonStaffViewModel).FileExtension; } } if (existedModelViewSerializable != null) { existedModelViewSerializable.ScalarProperties = modelViewSerializable.ScalarProperties; existedModelViewSerializable.CommonStaffs = modelViewSerializable.CommonStaffs; existedModelViewSerializable.UIFormProperties = modelViewSerializable.UIFormProperties; existedModelViewSerializable.UIListProperties = modelViewSerializable.UIListProperties; } else { localDbContext.ModelViews.Add(modelViewSerializable); } } (SelectFolderUC.DataContext as SelectFolderViewModel).OnCreatedActionsChanged(); string projectName = ""; if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef != null) { if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef.ProjectItem != null) { projectName = (CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef.ProjectItem.ContainingProject.UniqueName; } } if (!string.IsNullOrEmpty(projectName)) { string locFileName = Path.Combine(projectName, (CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementFullName, JsonExtension); locFileName = locFileName.Replace("\\", "."); SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName); locFileName = Path.Combine(SolutionDirectory, locFileName); string jsonString = JsonConvert.SerializeObject(localDbContext); File.WriteAllText(locFileName, jsonString); } try { // insert code here SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName); string FlNm = Path.Combine( //SolutionDirectory, //Path.GetDirectoryName((CreateWebApiUC.DataContext as CreateWebApiViewModel).DestinationProject), (InvitationUC.DataContext as InvitationViewModel).DestinationProjectRootFolder, (CreateWebApiUC.DataContext as CreateWebApiViewModel).DestinationFolder, (SelectFolderUC.DataContext as SelectFolderViewModel).FileName + (GenerateUC.DataContext as GenerateCommonStaffViewModel).FileExtension); File.WriteAllText(FlNm, (GenerateUC.DataContext as GenerateCommonStaffViewModel).GenerateText); DestinationProject.ProjectItems.AddFromFile(FlNm); MessageBox.Show(SuccessNotification, "Done", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception e) { MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error); } }
public static GeneratorBatchStep DoGenerateViewModel(DTE2 Dte, ITextTemplating textTemplating, string T4TempatePath, DbContextSerializable SerializableDbContext, ModelViewSerializable model, string defaultProjectNameSpace = null) { GeneratorBatchStep result = new GeneratorBatchStep() { GenerateText = "", GenerateError = "", FileExtension = "", T4TempatePath = T4TempatePath, }; if ((model == null) || (SerializableDbContext == null)) { result.GenerateError = "Model and/or Context is not defined"; return(result); } ITextTemplatingSessionHost textTemplatingSessionHost = (ITextTemplatingSessionHost)textTemplating; textTemplatingSessionHost.Session = textTemplatingSessionHost.CreateSession(); TPCallback tpCallback = new TPCallback(); textTemplatingSessionHost.Session["Model"] = model; textTemplatingSessionHost.Session["Context"] = SerializableDbContext; textTemplatingSessionHost.Session["DefaultProjectNameSpace"] = string.IsNullOrEmpty(defaultProjectNameSpace) ? "" : defaultProjectNameSpace; result.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, File.ReadAllText(result.T4TempatePath), tpCallback); result.FileExtension = tpCallback.FileExtension; if (tpCallback.ProcessingErrors != null) { foreach (TPError tpError in tpCallback.ProcessingErrors) { result.GenerateError += tpError.ToString() + "\n"; } } return(result); }
public static void UpdateDbContext(DTE2 Dte, Project DestinationProject, SolutionCodeElement SelectedDbContext, DbContextSerializable dbContextSerializable, ModelViewSerializable modelViewSerializable, string ContextItemViewName, string T4SelectedFolder, string DestinationProjectRootFolder, string DestinationFolder, string DestinationSubFolder, string FileName, string FileExtension, string GenerateText) { Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread(); if (modelViewSerializable.ViewName == ContextItemViewName) { dbContextSerializable.CommonStaffs = modelViewSerializable.CommonStaffs; if (dbContextSerializable.CommonStaffs == null) { dbContextSerializable.CommonStaffs = new List <CommonStaffSerializable>(); } CommonStaffSerializable commonStaffSerializable = dbContextSerializable.CommonStaffs .Where(c => c.FileType == T4SelectedFolder) .FirstOrDefault(); if (commonStaffSerializable != null) { commonStaffSerializable.Extension = FileExtension; } } else { ModelViewSerializable existedModelViewSerializable = dbContextSerializable.ModelViews.FirstOrDefault(mv => mv.ViewName == modelViewSerializable.ViewName); if (modelViewSerializable.CommonStaffs != null) { CommonStaffSerializable commonStaffSerializable = modelViewSerializable.CommonStaffs .Where(c => c.FileType == T4SelectedFolder) .FirstOrDefault(); if (commonStaffSerializable != null) { commonStaffSerializable.Extension = FileExtension; } } if (existedModelViewSerializable != null) { existedModelViewSerializable.CommonStaffs = modelViewSerializable.CommonStaffs; existedModelViewSerializable.UIFormProperties = modelViewSerializable.UIFormProperties; existedModelViewSerializable.UIListProperties = modelViewSerializable.UIListProperties; } else { dbContextSerializable.ModelViews.Add(modelViewSerializable); } } string projectName = ""; if (SelectedDbContext.CodeElementRef != null) { if (SelectedDbContext.CodeElementRef.ProjectItem != null) { projectName = SelectedDbContext.CodeElementRef.ProjectItem.ContainingProject.UniqueName; } } string SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName); if (!string.IsNullOrEmpty(projectName)) { string locFileName = Path.Combine(projectName, SelectedDbContext.CodeElementFullName, "json"); locFileName = locFileName.Replace("\\", "."); locFileName = Path.Combine(SolutionDirectory, locFileName); string jsonString = JsonConvert.SerializeObject(dbContextSerializable); File.WriteAllText(locFileName, jsonString); } string FlNm = ""; if (string.IsNullOrEmpty(DestinationSubFolder)) { FlNm = Path.Combine( DestinationProjectRootFolder, DestinationFolder); } else { FlNm = Path.Combine( DestinationProjectRootFolder, DestinationFolder, DestinationSubFolder); } System.IO.Directory.CreateDirectory(FlNm); FlNm = Path.Combine(FlNm, FileName + FileExtension); File.WriteAllText(FlNm, GenerateText); DestinationProject.ProjectItems.AddFromFile(FlNm); }
public static ModelViewSerializable GetSelectedModelCommonShallowCopy(ModelViewSerializable SelectedModel, ObservableCollection <ModelViewUIFormProperty> UIFormProperties, ObservableCollection <ModelViewUIListProperty> UIListProperties, string DestinationProject, string DefaultProjectNameSpace, string DestinationFolder, string DestinationSubFolder, string FileType, string FileName) { ModelViewSerializable result = SelectedModel.ModelViewSerializableGetShallowCopy(); if (result.CommonStaffs == null) { result.CommonStaffs = new List <CommonStaffSerializable>(); } else { result.CommonStaffs = new List <CommonStaffSerializable>(); SelectedModel.CommonStaffs.ForEach(c => result.CommonStaffs.Add(new CommonStaffSerializable() { Extension = c.Extension, FileType = c.FileType, FileName = c.FileName, FileProject = c.FileProject, FileDefaultProjectNameSpace = c.FileDefaultProjectNameSpace, FileFolder = c.FileFolder, //FileTypeData = c.FileTypeData })); } CommonStaffSerializable commonStaffItem = result.CommonStaffs.Where(c => c.FileType == FileType).FirstOrDefault(); if (commonStaffItem == null) { result.CommonStaffs.Add( commonStaffItem = new CommonStaffSerializable() { FileType = FileType }); } commonStaffItem.FileName = FileName; commonStaffItem.FileProject = DestinationProject; commonStaffItem.FileDefaultProjectNameSpace = DefaultProjectNameSpace; if (string.IsNullOrEmpty(DestinationSubFolder)) { commonStaffItem.FileFolder = DestinationFolder; } else { commonStaffItem.FileFolder = Path.Combine(DestinationFolder, DestinationSubFolder); } if (UIFormProperties != null) { result.UIFormProperties = new List <ModelViewUIFormPropertySerializable>(); foreach (ModelViewUIFormProperty srcProp in UIFormProperties) { result.UIFormProperties.Add(srcProp.ModelViewUIFormPropertyAssignTo(new ModelViewUIFormPropertySerializable())); } } if (result.UIFormProperties == null) { result.UIFormProperties = new List <ModelViewUIFormPropertySerializable>(); } if (UIListProperties != null) { result.UIListProperties = new List <ModelViewUIListPropertySerializable>(); foreach (ModelViewUIListProperty srcProp in UIListProperties) { result.UIListProperties.Add(srcProp.ModelViewUIListPropertyAssignTo(new ModelViewUIListPropertySerializable())); } } if (result.UIListProperties == null) { result.UIListProperties = new List <ModelViewUIListPropertySerializable>(); } return(result); }