Esempio n. 1
0
        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);
            }
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        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;
        }
Esempio n. 6
0
        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);
            }
        }