//edt can be null
        public AxTableField BuildField(AxEdt edt)
        {
            AxTableField axTableField;

            switch (FieldType)
            {
            case FieldType.String:
                axTableField = new AxTableFieldString();
                if (edt == null)
                {
                    if (NewStrEdtLen > 0)
                    {
                        AxTableFieldString axTableFieldString = (AxTableFieldString)axTableField;
                        axTableFieldString.StringSize = NewStrEdtLen;
                    }
                }

                break;

            case FieldType.Integer:
                axTableField = new AxTableFieldInt();
                break;

            case FieldType.Real:
                axTableField = new AxTableFieldReal();
                break;

            case FieldType.DateTime:
                axTableField = new AxTableFieldUtcDateTime();
                break;

            case FieldType.Guid:
                axTableField = new AxTableFieldGuid();
                break;

            case FieldType.Int64:
                axTableField = new AxTableFieldInt64();
                break;

            case FieldType.Enum:
                axTableField = new AxTableFieldEnum();

                if (edt != null)
                {
                    AxEdtEnum        edtEnum   = edt as AxEdtEnum;
                    AxTableFieldEnum fieldEnum = axTableField as AxTableFieldEnum;
                    if (edtEnum != null)
                    {
                        fieldEnum.EnumType = edtEnum.EnumType;
                    }
                }

                break;

            case FieldType.Time:
                axTableField = new AxTableFieldTime();
                break;

            case FieldType.Container:
                axTableField = new AxTableFieldContainer();
                break;

            case FieldType.Memo:
                axTableField = new AxTableFieldString();
                break;

            case FieldType.Date:
                axTableField = new AxTableFieldDate();
                break;

            default:
                throw new NotImplementedException(
                          $"Field type {FieldType.ToString()} is not supported");
            }
            axTableField.Name = FieldName;
            if (IsMandatory)
            {
                axTableField.Mandatory = NoYes.Yes;
            }

            if (edt != null)
            {
                axTableField.ExtendedDataType = edt.Name;
            }
            else
            {
                if (LabelText != String.Empty)
                {
                    axTableField.Label = LabelText;
                }

                if (HelpTextText != String.Empty)
                {
                    axTableField.HelpText = HelpTextText;
                }
            }

            if (IsEdtExist && edt != null)
            {
                if (LabelText != String.Empty && edt.Label != LabelText)
                {
                    axTableField.Label = LabelText;
                }

                if (HelpTextText != String.Empty && edt.HelpText != HelpTextText)
                {
                    axTableField.HelpText = HelpTextText;
                }
            }

            return(axTableField);
        }
Example #2
0
        void DoTableCreate()
        {
            AxTable newTable = _axHelper.MetadataProvider.Tables.Read(TableName);

            if (newTable == null)
            {
                newTable                  = new AxTable();
                newTable.Name             = TableName;
                newTable.Label            = TableLabel;
                newTable.TitleField1      = KeyFieldName;
                newTable.CacheLookup      = RecordCacheLevel.Found;
                newTable.ClusteredIndex   = $"{KeyFieldName}Idx";
                newTable.PrimaryIndex     = newTable.ClusteredIndex;
                newTable.ReplacementKey   = newTable.ClusteredIndex;
                newTable.TableGroup       = TableGroup.Group;
                newTable.CreatedBy        = NoYes.Yes;
                newTable.CreatedDateTime  = NoYes.Yes;
                newTable.ModifiedBy       = NoYes.Yes;
                newTable.ModifiedDateTime = NoYes.Yes;

                AxTableField primaryField = new AxTableFieldString();
                primaryField.Name              = KeyFieldName;
                primaryField.ExtendedDataType  = PrimaryKeyEdtName;
                primaryField.IgnoreEDTRelation = NoYes.Yes;
                primaryField.AllowEdit         = NoYes.No;
                primaryField.Mandatory         = NoYes.Yes;
                newTable.AddField(primaryField);

                AxTableField descriptionField = new AxTableFieldString();
                descriptionField.Name             = "Description";
                descriptionField.ExtendedDataType = "Description";
                newTable.AddField(descriptionField);

                AxTableIndexField axTableIndexField = new AxTableIndexField();
                axTableIndexField.DataField = KeyFieldName;
                axTableIndexField.Name      = KeyFieldName;
                AxTableIndex axTableIndex = new AxTableIndex();
                axTableIndex.Name         = newTable.ClusteredIndex;
                axTableIndex.AlternateKey = NoYes.Yes;
                axTableIndex.AddField(axTableIndexField);
                newTable.AddIndex(axTableIndex);

                AxTableFieldGroup      axTableFieldGroup;
                AxTableFieldGroupField axTableFieldGroupField;

                axTableFieldGroup = new AxTableFieldGroup {
                    Name = "AutoReport", IsSystemGenerated = NoYes.Yes
                };
                axTableFieldGroupField = new AxTableFieldGroupField
                {
                    Name      = KeyFieldName,
                    DataField = KeyFieldName
                };
                axTableFieldGroup.AddField(axTableFieldGroupField);
                newTable.AddFieldGroup(axTableFieldGroup);

                axTableFieldGroup = new AxTableFieldGroup {
                    Name = "AutoLookup", IsSystemGenerated = NoYes.Yes
                };
                newTable.AddFieldGroup(axTableFieldGroup);

                axTableFieldGroup = new AxTableFieldGroup {
                    Name = "AutoIdentification", IsSystemGenerated = NoYes.Yes, AutoPopulate = NoYes.Yes
                };
                newTable.AddFieldGroup(axTableFieldGroup);

                axTableFieldGroup = new AxTableFieldGroup {
                    Name = "AutoSummary", IsSystemGenerated = NoYes.Yes
                };
                newTable.AddFieldGroup(axTableFieldGroup);

                axTableFieldGroup = new AxTableFieldGroup {
                    Name = "AutoBrowse", IsSystemGenerated = NoYes.Yes
                };
                newTable.AddFieldGroup(axTableFieldGroup);

                axTableFieldGroup = new AxTableFieldGroup {
                    Name = "Overview", Label = "Overview"
                };
                axTableFieldGroupField = new AxTableFieldGroupField
                {
                    Name = KeyFieldName, DataField = KeyFieldName
                };
                axTableFieldGroup.AddField(axTableFieldGroupField);
                if (descriptionField != null)
                {
                    axTableFieldGroupField = new AxTableFieldGroupField
                    {
                        Name      = descriptionField.Name,
                        DataField = descriptionField.Name
                    };
                    axTableFieldGroup.AddField(axTableFieldGroupField);
                }
                newTable.AddFieldGroup(axTableFieldGroup);

                AddTableFindMethodParms findMethodParms = new AddTableFindMethodParms();
                findMethodParms.IsCreateFind = true;
                findMethodParms.IsTestMode   = true;
                findMethodParms.TableName    = TableName;
                findMethodParms.VarName      = TableVarName;
                findMethodParms.Fields       = new List <AxTableFieldParm>
                {
                    new AxTableFieldParm
                    {
                        FieldName = KeyFieldName, FieldType = PrimaryKeyEdtName, IsMandatory = true
                    }
                };

                AxMethod axMethod = new AxMethod();
                axMethod.Name     = "find";
                axMethod.IsStatic = true;
                axMethod.Source   = findMethodParms.GenerateResult();
                newTable.AddMethod(axMethod);

                _axHelper.MetaModelService.CreateTable(newTable, _axHelper.ModelSaveInfo);
                _axHelper.AppendToActiveProject(newTable);

                AddLog($"Table: {newTable.Name}; ");

                AxEdt edtLocal = _axHelper.MetadataProvider.Edts.Read(PrimaryKeyEdtName);
                if (edtLocal != null)
                {
                    if (String.IsNullOrEmpty(edtLocal.ReferenceTable))                   //check for the existing EDT. Do not modify it
                    {
                        if (edtLocal.Relations == null || edtLocal.Relations.Count == 0) //no old style relations
                        {
                            edtLocal.ReferenceTable = TableName;
                            edtLocal.AddTableReference(TableName, KeyFieldName);

                            _axHelper.MetaModelService.UpdateExtendedDataType(edtLocal, _axHelper.ModelSaveInfo);
                            _axHelper.AppendToActiveProject(edtLocal);
                        }
                    }

                    //AddLog($"EDT: {edtLocal.Name}; ");
                }
            }
        }