public static string Convert(this string name) { Project = LocalUtils.GetActiveProjectNode(); ProjectParameters.Contruct(); MetaModelProviders = ServiceLocator.GetService(typeof(IMetaModelProviders)) as IMetaModelProviders; MetaModelService = MetaModelProviders.CurrentMetaModelService; var extension = ProjectParameters.Instance.Extension; var englishLabelFile = MetaModelService.GetLabelFileNames() .FirstOrDefault( lableFileName => lableFileName.StartsWith(extension) && lableFileName.Contains("en-US")); var lableFile = MetaModelService.GetLabelFile(englishLabelFile); var labelKey = name.Replace(extension, ""); var lableTxt = Regex.Replace(labelKey, "((?<=[a-z])[A-Z]|[A-Z](?=[a-z]))", " $1").Trim().ToLower().UppercaseFirst(); LabelControllerFactory factory = new LabelControllerFactory(); LabelEditorController labelEditorController = factory.GetOrCreateLabelController(lableFile, LocalUtils.Context); //CoreUtility.DisplayInfo(labelKey); if (!labelEditorController.Exists(labelKey)) { labelEditorController.Insert(labelKey, lableTxt, string.Empty); labelEditorController.Save(); } return($"@{extension}Labels:{labelKey}"); }
public ElementType() { MetaService = LocalUtils.MetaService; Model = LocalUtils.GetModel(); Project = LocalUtils.GetActiveProjectNode(); }
/// <summary> /// Receive the current class info (loaded from current classes present on runtime and check against the persisted meta model /// </summary> public bool Check(IDictionary<Type, ClassInfo> currentCIs, IMetaModelService metaModelService) { foreach (var persistedCI in metaModelService.GetAllClasses()) CheckClass(currentCIs, persistedCI); foreach (var result in _results) { DLogger.Info(string.Format("MetaModelCompabilityChecker: Class {0} has changed :", result.GetFullClassName())); DLogger.Info("MetaModelCompabilityChecker: " + result); } return _results.Count != 0; }
public static string Convert(this string name, string alternative = null) { Project = GetActiveProjectNode(); ProjectParameters.Contruct(); MetaModelProviders = CoreUtility.ServiceProvider.GetService(typeof(IMetaModelProviders)) as IMetaModelProviders; if (MetaModelProviders != null) { MetaModelService = MetaModelProviders.CurrentMetaModelService; } var extension = ProjectParameters.Instance.Extension; var defaultLablesFileName = ProjectParameters.Instance.DefaultLabelsFileName; if (string.IsNullOrEmpty(defaultLablesFileName)) { throw new System.Exception( "Label file name not specified in the Settings: Dynamics 365 > Addins > Ninja DevTools Settings"); } var lableFile = MetaModelService.GetLabelFile(defaultLablesFileName); if (lableFile == null) { throw new Exception("Labels file not found"); } var labelKey = name.Replace(extension, ""); string lableTxt; if (alternative != null && !alternative.StartsWith("@")) { lableTxt = alternative; } else { lableTxt = Regex.Replace(labelKey, "((?<=[a-z])[A-Z]|[A-Z](?=[a-z]))", " $1").Trim().ToLower().UppercaseFirst(); } LabelControllerFactory factory = new LabelControllerFactory(); LabelEditorController labelEditorController = factory.GetOrCreateLabelController(lableFile, LocalUtils.Context); if (!labelEditorController.Exists(labelKey)) { labelEditorController.Insert(labelKey, lableTxt, string.Empty); labelEditorController.Save(); } return($"@{extension}Labels:{labelKey}"); }
/// <summary> /// Receive the current class info (loaded from current classes present on runtime and check against the persisted meta model /// </summary> public bool Check(IDictionary <Type, ClassInfo> currentCIs, IMetaModelService metaModelService) { foreach (var persistedCI in metaModelService.GetAllClasses()) { CheckClass(currentCIs, persistedCI); } foreach (var result in _results) { DLogger.Info(string.Format("MetaModelCompabilityChecker: Class {0} has changed :", result.GetFullClassName())); DLogger.Info("MetaModelCompabilityChecker: " + result); } return(_results.Count != 0); }
public ModelServices(IMetaModelService _metaModelService) { System.Diagnostics.Debug.Print("--------Inicio de carga---------------///////"); try { metaModelService = _metaModelService; objectModel = new ObjectModel(); objectModel.app_Objects.AddRange(metaModelService.Objects.Cast <dynamic>().Select(x => new app_object { Name = x.Title, object_id = x.ObjectId })); //objectModel.app_Objects.Where(x => x.object_id == 2022040).FirstOrDefault().instances.AddRange(metaModelService.ReadInstancesWithObjectIdForDesigner(2022040).Cast<dynamic>().Select(x => new Instance { instance_id = x.instance_id })); System.Diagnostics.Debug.Print("--------Objectos Cargados---------------///////"); }catch (Exception e) { System.Diagnostics.Debug.Print("--------ERROR---------------:" + e.Message); } }
/// <summary> /// /Handle the click event in the OnClick method. Here we will test the selected object, get the object’s model and label file, and create the label. /// </summary> /// <param name="e">The context of the VS tools and metadata</param> public override void OnClick(AddinDesignerEventArgs e) { // Dont display Already exists message helper.PromptOnDuplicate = false; try { // Get the metamodelService IMetaModelService metaModelService = helper.MetaModelService; // Is the selected element a table? if (e.SelectedElement is ITable) { ITable table = e.SelectedElement as ITable; helper.setModelAndLabelFile(metaModelService.GetTableModelInfo(table.Name)); helper.createPropertyLabels(table, table.Name); // Loop through each BaseField. Similar logic coulde be added for FieldGroups Ect. foreach (IBaseField baseField in table.BaseFields) { var labelPrefix = String.Format("{0}_{1}", baseField.Table.Name, baseField.Name); helper.createPropertyLabels(baseField, labelPrefix); } } if (e.SelectedElement is IView) { IView view = e.SelectedElement as IView; helper.setModelAndLabelFile(metaModelService.GetViewModelInfo(view.Name)); helper.createPropertyLabels(view, view.Name); // Loop through each BaseField. Similar logic coulde be added for FieldGroups Ect. foreach (IViewBaseField baseField in view.ViewBaseFields) { var labelPrefix = String.Format("{0}_{1}", baseField.View.Name, baseField.Name); helper.createPropertyLabels(baseField, labelPrefix); } } // Is this a Form Design Element? else if (e.SelectedElement is IFormDesign) { IFormDesign formDesign = e.SelectedElement as IFormDesign; var form = formDesign.Form; helper.setModelAndLabelFile(metaModelService.GetFormModelInfo(form.Name)); helper.createPropertyLabels(formDesign, formDesign.Form.Name); // Loop through all children FormControls. this.crawlDesignControls(formDesign.VisualChildren, form.Name); } else if (e.SelectedElement is IBaseEnum) { IBaseEnum axEnum = e.SelectedElement as IBaseEnum; helper.setModelAndLabelFile(metaModelService.GetEnumModelInfo(axEnum.Name)); var labelPrefix = String.Format("{0}_{1}", Tags.EnumTag, axEnum.Name); helper.createPropertyLabels(axEnum, labelPrefix); // Was unable to locate a way of finding the parent enum of a enumValue. No model could be found without it. // Loop through all values foreach (IBaseEnumValue enumValue in axEnum.BaseEnumValues) { var enumValueLabelPrefix = String.Format("{0}_{1}_{2}", Tags.EnumTag, axEnum.Name, enumValue.Name); helper.createPropertyLabels(enumValue, enumValueLabelPrefix); } } else if (e.SelectedElement is IReport) { IReport Report = e.SelectedElement as IReport; helper.setModelAndLabelFile(metaModelService.GetReportModelInfo(Report.Name)); foreach (IReportDataSet dataSet in Report.DataSets) { foreach (IReportDataSetField dataField in dataSet.Fields) { var labelPrefix = String.Format("{0}_{1}_{2}", dataSet.Report.Name, dataSet.Name, dataField.Name); helper.createPropertyLabels(dataField, labelPrefix); } } } else if (e.SelectedElement is IReportDataSet) { IReportDataSet dataSet = e.SelectedElement as IReportDataSet; helper.setModelAndLabelFile(metaModelService.GetReportModelInfo(dataSet.Report.Name)); foreach (IReportDataSetField dataField in dataSet.Fields) { var labelPrefix = String.Format("{0}_{1}_{2}", dataSet.Report.Name, dataSet.Name, dataField.Name); helper.createPropertyLabels(dataField, labelPrefix); } } } catch (Exception ex) { Microsoft.Dynamics.Framework.Tools.MetaModel.Core.CoreUtility.HandleExceptionWithErrorMessage(ex); } }
/// <summary> /// /Handle the click event in the OnClick method. Here we will test the selected object, get the object’s model and label file, and create the label. /// </summary> /// <param name="e">The context of the VS tools and metadata</param> public override void OnClick(AddinDesignerEventArgs e) { try { // Get the metamodel service IMetaModelService metaModelService = helper.MetaModelService; // Is the selected element a table? if (e.SelectedElement is ITable) { ITable table = e.SelectedElement as ITable; helper.setModelAndLabelFile(metaModelService.GetTableModelInfo(table.Name)); labelPrefix = table.Name; } else if (e.SelectedElement is IBaseField) { IBaseField baseField = e.SelectedElement as IBaseField; var table = baseField.Table; helper.setModelAndLabelFile(metaModelService.GetTableModelInfo(table.Name)); labelPrefix = String.Format("{0}_{1}", baseField.Table.Name, baseField.Name); } if (e.SelectedElement is IView) { IView view = e.SelectedElement as IView; helper.setModelAndLabelFile(metaModelService.GetTableModelInfo(view.Name)); labelPrefix = view.Name; } else if (e.SelectedElement is IViewBaseField) { IViewBaseField baseField = e.SelectedElement as IViewBaseField; var view = baseField.View; helper.setModelAndLabelFile(metaModelService.GetViewModelInfo(view.Name)); labelPrefix = String.Format("{0}_{1}", baseField.View.Name, baseField.Name); } else if (e.SelectedElement is IFormDesign) { IFormDesign formDesign = e.SelectedElement as IFormDesign; var form = formDesign.Form; helper.setModelAndLabelFile(metaModelService.GetFormModelInfo(form.Name)); labelPrefix = formDesign.Form.Name; } else if (e.SelectedElement is IFormControl) { IFormControl formControl = e.SelectedElement as IFormControl; IRootElement rootElement = formControl.RootElement as IRootElement; if (rootElement is IFormExtension) { helper.setModelAndLabelFile(metaModelService.GetFormExtensionModelInfo(rootElement.Name)); labelPrefix = String.Format("{0}_{1}", rootElement.Name, formControl.Name); labelPrefix = labelPrefix.Replace(".","_"); } else { helper.setModelAndLabelFile(metaModelService.GetFormModelInfo(rootElement.Name)); labelPrefix = String.Format("{0}_{1}", rootElement.Name, formControl.Name); } } else if (e.SelectedElement is ISecurityPrivilege) { ISecurityPrivilege securityObject = e.SelectedElement as ISecurityPrivilege; helper.setModelAndLabelFile(metaModelService.GetSecurityPrivilegeModelInfo(securityObject.Name)); labelPrefix = String.Format("{0}_{1}", Tags.PrivilegeTag, securityObject.Name); } else if (e.SelectedElement is ISecurityDuty) { ISecurityDuty securityObject = e.SelectedElement as ISecurityDuty; helper.setModelAndLabelFile(metaModelService.GetSecurityDutyModelInfo(securityObject.Name)); labelPrefix = String.Format("{0}_{1}", Tags.DutyTag, securityObject.Name); } else if (e.SelectedElement is ISecurityRole) { ISecurityRole securityObject = e.SelectedElement as ISecurityRole; helper.setModelAndLabelFile(metaModelService.GetSecurityRoleModelInfo(securityObject.Name)); labelPrefix = String.Format("{0}_{1}", Tags.RoleTag, securityObject.Name); } else if (e.SelectedElement is IEdtBase) { IEdtBase edt = e.SelectedElement as IEdtBase; helper.setModelAndLabelFile(metaModelService.GetExtendedDataTypeModelInfo(edt.Name)); labelPrefix = String.Format("{0}_{1}", Tags.EDTTag, edt.Name); } else if (e.SelectedElement is IMenuItem) { IMenuItem AxMenuItem = e.SelectedElement as IMenuItem; labelPrefix = String.Format("{0}_{1}", Tags.MenuItemTag, AxMenuItem.Name); if (AxMenuItem is IMenuItemAction) { helper.setModelAndLabelFile(metaModelService.GetMenuItemActionModelInfo(AxMenuItem.Name)); } else if (AxMenuItem is IMenuItemDisplay) { helper.setModelAndLabelFile(metaModelService.GetMenuItemDisplayModelInfo(AxMenuItem.Name)); } else if (AxMenuItem is IMenuItemOutput) { helper.setModelAndLabelFile(metaModelService.GetMenuItemOutputModelInfo(AxMenuItem.Name)); } } else if (e.SelectedElement is IReportDataSetField) { IReportDataSetField dataField = e.SelectedElement as IReportDataSetField; helper.setModelAndLabelFile(metaModelService.GetReportModelInfo(dataField.DataSet.Report.Name)); labelPrefix = String.Format("{0}_{1}_{2}", dataField.DataSet.Report.Name, dataField.DataSet.Name, dataField.Name); } helper.createPropertyLabels(e.SelectedElement, labelPrefix); } catch (Exception ex) { Microsoft.Dynamics.Framework.Tools.MetaModel.Core.CoreUtility.HandleExceptionWithErrorMessage(ex); } }
public ObjecTreeController(IModelServices ms, IServiceProvider provider, IMetaModelService injectedService) { Provider = provider; InjectedMeta_Model = Provider.GetService <IMetaModelService>(); modelServices = Provider.GetService <IModelServices>(); }