public static string CreateTableExtension(ITable table) { var name = table.Name + Common.Constants.DotEXTENSION; name = Common.CommonUtil.GetNextTableExtension(name); // Find current model //Create menu item in the right model var metaModelProviders = ServiceLocator.GetService(typeof(IMetaModelProviders)) as IMetaModelProviders; //Create an extension object var axExtension = new AxTableExtension() { Name = name }; //var tableExts = metaModelProviders.CurrentMetadataProvider.TableExtensions.Common.CommonUtil.GetCurrentModel().Name); Common.CommonUtil.GetMetaModelProviders() .CurrentMetadataProvider .TableExtensions.Create(axExtension, Common.CommonUtil.GetCurrentModelSaveInfo()); // Add to project Common.CommonUtil.AddElementToProject(axExtension); return(name); }
public void CheckData(List <NewFieldEngine> fieldsValuesList, AxHelper axHelperLocal) { KeyedObjectCollection <AxTableField> tableFields; List <string> newFieldsList = new List <string>(); if (TableName.Contains(".") == false) { AxTable axTable = axHelperLocal.MetadataProvider.Tables.Read(TableName); tableFields = axTable.Fields; } else { AxTableExtension axTableExtension = axHelperLocal.MetadataProvider.TableExtensions.Read(TableName); tableFields = axTableExtension.Fields; } foreach (NewFieldEngine newFieldEngine in GetFieldsValues()) { if (tableFields.Contains(newFieldEngine.FieldName)) { throw new Exception($"Field {newFieldEngine.FieldName} already exists in the table {TableName}"); } if (newFieldsList.Contains(newFieldEngine.FieldName)) { throw new Exception($"Field {newFieldEngine.FieldName} specified several times"); } newFieldsList.Add(newFieldEngine.FieldName); } }
protected void addField(Metadata.MetaModel.AxTableField field) { if (this.namedElement is Table) { AxTable axTable = this.MetadataProvider.Tables.Read(this.namedElement.Name); axTable.Fields.Add(field); this.MetadataProvider.Tables.Update(axTable, this.ModelSaveInfo); } else { var extensionName = this.namedElement.Name.Split('.'); AxTableExtension axTableExtension = this.MetadataProvider.TableExtensions.Read(this.namedElement.Name); axTableExtension.Fields.Add(field); this.MetadataProvider.TableExtensions.Update(axTableExtension, this.ModelSaveInfo); } }
/// <summary> /// The method is called when the user has selected to view a table extension instance. /// The method generates a select on all fields, with no joins. /// </summary> /// <param name="selectedExtensionTable">The designer metadata designating the view.</param> /// <returns>The string containing the SQL command.</returns> private StringBuilder GenerateFromTableExtension(TablesAutomation.ITableExtension selectedExtensionTable) { var result = new StringBuilder(); bool first = true; result.AppendLine(string.Format(CultureInfo.InvariantCulture, "use {0}", BusinessDatabaseName)); result.AppendLine("go"); result.AppendLine(); AxTableExtension extension = this.MetadataProvider.TableExtensions.Read(selectedExtensionTable.Name); var baseTableName = selectedExtensionTable.Name.Split('.').First(); var tables = this.SuperTables(baseTableName); HashSet <string> extendedFields = new HashSet <string>(StringComparer.OrdinalIgnoreCase); foreach (var extendedField in extension.Fields) { extendedFields.Add(extendedField.Name); } result.AppendLine("select "); // List the extension fields first... this.AddFields(result, tables.First(), extension.Fields, ref first); // Then the normal ones... this.AddFields(result, tables.First(), tables.First().Fields.Where(f => !extendedFields.Contains(f.Name)), ref first); // And then system fields this.AddSystemFields(result, tables.First(), ref first); result.AppendLine("from " + SqlNameMangling.GetSqlTableName(tables.First().Name)); if (tables.First().SaveDataPerCompany == Metadata.Core.MetaModel.NoYes.Yes) { result.AppendLine("-- where " + SqlNameMangling.GetValidSqlNameForField("DataAreaId") + " = 'DAT'"); } return(result); }
public void InitFromSelectedElement(AddinDesignerEventArgs e) { if (_axHelper == null) { _axHelper = new AxHelper(); } BaseField baseField = e.SelectedElements.OfType <BaseField>().First(); SelectedField = baseField.Name; TableName = baseField.Table != null?baseField.Table.GetMetadataType().Name : baseField.TableExtension?.GetMetadataType().Name; NewFieldEngine newFieldEngine = new NewFieldEngine(); newFieldEngine.GetSetHelper = _axHelper; if (TableName.Contains(".") == false) { _axTable = _axHelper.MetadataProvider.Tables.Read(TableName); AxTableField axTableField = _axTable.Fields[baseField.Name]; TableRelationForeignKey = newFieldEngine.AddTableRelation(axTableField, _axTable.Relations); } else { _axTableExtension = _axHelper.MetadataProvider.TableExtensions.Read(TableName); AxTableField axTableField = _axTableExtension.Fields[baseField.Name]; TableRelationForeignKey = newFieldEngine.AddTableRelation(axTableField, _axTableExtension.Relations); } if (TableRelationForeignKey == null) { throw new System.Exception($"Field {baseField.Name} doesn't have an EDT relation"); } RelationName = TableRelationForeignKey.Name; }
public static string CreateTableExtension(ITable table) { AxTableExtension axExtension; axExtension = TableHelper.GetFirstExtension(table.Name); if (axExtension != null) { // Add existing extension to project & quit Common.CommonUtil.AddElementToProject(axExtension); return(axExtension.Name); } var name = table.Name;// + Common.Constants.DotEXTENSION; name = Common.CommonUtil.GetNextTableExtension(name); // Find current model //Create menu item in the right model var metaModelProviders = ServiceLocator.GetService <IMetaModelProviders>() as IMetaModelProviders; //Create an extension object axExtension = new AxTableExtension() { Name = name }; //var tableExts = metaModelProviders.CurrentMetadataProvider.TableExtensions.Common.CommonUtil.GetCurrentModel().Name); Common.CommonUtil.GetMetaModelProviders() .CurrentMetadataProvider .TableExtensions.Create(axExtension, Common.CommonUtil.GetCurrentModelSaveInfo()); // Add to project Common.CommonUtil.AddElementToProject(axExtension); return(name); }
protected void AddField(AxTableField field) { AxTableFieldGroup axTableFieldGroup; AxTableFieldGroupField axTableFieldGroupField = new AxTableFieldGroupField(); axTableFieldGroupField.Name = field.Name; axTableFieldGroupField.DataField = field.Name; if (TableName.Contains(".") == false) { AxTable axTable = _axHelper.MetadataProvider.Tables.Read(TableName); if (IsDisplayMethod) { AxMethod axMethod = new AxMethod(); axMethod.Name = field.Name; axMethod.Source = $"public display {field.ExtendedDataType} {field.Name}() " + Environment.NewLine + "{" + Environment.NewLine + " return '';" + Environment.NewLine + "}"; axTable.AddMethod(axMethod); } else { axTable.Fields.Add(field); } if (GroupName != String.Empty) { if (axTable.FieldGroups.Contains(GroupName)) { axTableFieldGroup = axTable.FieldGroups.getObject(GroupName); axTableFieldGroup.AddField(axTableFieldGroupField); } else { axTableFieldGroup = new AxTableFieldGroup { Name = GroupName }; axTableFieldGroup.AddField(axTableFieldGroupField); axTable.AddFieldGroup(axTableFieldGroup); } } if (!IsDisplayMethod) { AxTableRelationForeignKey axTableRelationForeignKey = AddTableRelation(field, axTable.Relations); if (axTableRelationForeignKey != null) { axTable.AddRelation(axTableRelationForeignKey); } } _axHelper.MetadataProvider.Tables.Update(axTable, _axHelper.ModelSaveInfo); } else { AxTableExtension axTableExtension = _axHelper.MetadataProvider.TableExtensions.Read(TableName); if (!IsDisplayMethod) { axTableExtension.Fields.Add(field); } if (GroupName != String.Empty) { if (axTableExtension.FieldGroups.Contains(GroupName)) { axTableFieldGroup = axTableExtension.FieldGroups.getObject(GroupName); axTableFieldGroup.AddField(axTableFieldGroupField); } else { axTableFieldGroup = new AxTableFieldGroup { Name = GroupName }; axTableFieldGroup.AddField(axTableFieldGroupField); axTableExtension.FieldGroups.Add(axTableFieldGroup); } } if (!IsDisplayMethod) { AxTableRelationForeignKey axTableRelationForeignKey = AddTableRelation(field, axTableExtension.Relations); if (axTableRelationForeignKey != null) { axTableExtension.Relations.Add(axTableRelationForeignKey); } } _axHelper.MetadataProvider.TableExtensions.Update(axTableExtension, _axHelper.ModelSaveInfo); } }