Example #1
0
        protected override void Create()
        {
            var element = new AxEdtEnum {
                Name = ElementName,
            };

            MetaService.CreateExtendedDataType(element, Model);
        }
        protected EdtLabelInfo getEdtBaseLabel(AxEdt edtBase, EdtLabelInfo labelInfo)
        {
            if (String.IsNullOrEmpty(labelInfo.Label) == true &&
                String.IsNullOrEmpty(edtBase.Label) == false)
            {
                // find the label here
                labelInfo.Label = edtBase.Label;
            }
            if (String.IsNullOrEmpty(labelInfo.HelpLabel) == true &&
                String.IsNullOrEmpty(edtBase.HelpText) == false)
            {
                // find the help label here
                labelInfo.HelpLabel = edtBase.HelpText;
            }

            if (labelInfo.RequiresDigging() == true &&
                (String.IsNullOrEmpty(edtBase.Extends) == false ||
                 edtBase is AxEdtEnum)
                )
            {
                // if there is a extended data type to this then move it to the next one
                var edtExt = Common.CommonUtil.GetModelSaveService().GetExtendedDataType(edtBase.Extends);
                if (edtExt != null)
                {
                    labelInfo = this.getEdtBaseLabel(edtExt, labelInfo);
                }
                else if (edtExt == null)
                {
                    // if this is null then chances are that this extends an enum
                    if (edtBase is AxEdtEnum)
                    {
                        AxEdtEnum edtBaseEnum = edtBase as AxEdtEnum;
                        var       axEnum      = Common.CommonUtil.GetModelSaveService().GetEnum(edtBaseEnum.EnumType);
                        if (axEnum != null)
                        {
                            if (String.IsNullOrEmpty(labelInfo.Label) == true &&
                                String.IsNullOrEmpty(axEnum.Label) == false)
                            {
                                // find the label here
                                labelInfo.Label = axEnum.Label;
                            }
                            if (String.IsNullOrEmpty(labelInfo.HelpLabel) == true &&
                                String.IsNullOrEmpty(axEnum.HelpText) == false)
                            {
                                // find the help label here
                                labelInfo.HelpLabel = axEnum.HelpText;
                            }
                        }
                    }
                }
            }

            return(labelInfo);
        }
        public void CreateEnum()
        {
            _logString = "";
            AxHelper axHelper = new AxHelper();

            AxEnum newEnum = axHelper.MetadataProvider.Enums.Read(EnumName);

            if (newEnum == null)
            {
                newEnum = new AxEnum {
                    Name = EnumName, Label = EnumLabel, Help = EnumHelpText, UseEnumValue = NoYes.No
                };

                axHelper.MetaModelService.CreateEnum(newEnum, axHelper.ModelSaveInfo);
                axHelper.AppendToActiveProject(newEnum);

                AddLog($"Enum {newEnum.Name};");

                if (IsCreateEnumType)
                {
                    AxEdtEnum newAxEdtEnum = axHelper.MetadataProvider.Edts.Read(EnumTypeName) as AxEdtEnum;
                    if (newAxEdtEnum == null)
                    {
                        newAxEdtEnum = new AxEdtEnum {
                            Name = EnumTypeName, EnumType = newEnum.Name
                        };

                        axHelper.MetaModelService.CreateExtendedDataType(newAxEdtEnum, axHelper.ModelSaveInfo);
                        axHelper.AppendToActiveProject(newAxEdtEnum);

                        AddLog($"Enum type {newAxEdtEnum.Name};");
                    }
                }
                newEnum = axHelper.MetadataProvider.Enums.Read(EnumName);
            }

            foreach (var ea in GetAxEnumValues())
            {
                newEnum.AddEnumValue(ea);
            }
            axHelper.MetaModelService.UpdateEnum(newEnum, axHelper.ModelSaveInfo);
        }
        //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);
        }
        public AxEdt BuildEdt()
        {
            var edt = _axHelper.MetadataProvider.Edts.Read(EdtText);

            if (edt != null)
            {
                IsEdtExist = true;
            }
            else
            {
                switch (FieldType)
                {
                case FieldType.String:
                    var edtString = new AxEdtString();
                    if (NewStrEdtLen > 0 && ExtendsText == String.Empty)
                    {
                        edtString.StringSize = NewStrEdtLen;
                    }
                    edt = edtString;
                    break;

                case FieldType.Integer:
                    edt = new AxEdtInt();
                    break;

                case FieldType.Real:
                    edt = new AxEdtReal();
                    break;

                case FieldType.DateTime:
                    edt = new AxEdtUtcDateTime();
                    if (ExtendsText == String.Empty)
                    {
                        edt.Extends = "TransDateTime";
                    }
                    break;

                case FieldType.Guid:
                    edt = new AxEdtGuid();
                    break;

                case FieldType.Int64:
                    edt = new AxEdtInt64();
                    break;

                case FieldType.Enum:
                    AxEdtEnum edtEnum = new AxEdtEnum();

                    AxEdtEnum edtLocal =
                        _axHelper.MetadataProvider.Edts.Read(ExtendsText) as AxEdtEnum;

                    if (edtLocal != null)
                    {
                        edtEnum.EnumType = edtLocal.EnumType;
                    }

                    edt = edtEnum;
                    break;

                case FieldType.Time:
                    edt = new AxEdtTime();
                    break;

                case FieldType.Container:
                    edt = new AxEdtContainer();
                    break;

                case FieldType.Memo:
                    edt = new AxEdtString();
                    if (ExtendsText == String.Empty)
                    {
                        edt.Extends = "FreeTxt";
                    }
                    break;

                case FieldType.Date:
                    edt = new AxEdtDate();
                    if (ExtendsText == String.Empty)
                    {
                        edt.Extends = "TransDate";
                    }
                    break;

                default:
                    throw new NotImplementedException(
                              $"Field type {FieldType.ToString()} is not supported");
                }
                edt.Name = EdtText;

                if (ExtendsText != string.Empty)
                {
                    edt.Extends = ExtendsText;
                }
                if (LabelText != String.Empty)
                {
                    edt.Label = LabelText;
                }
                if (HelpTextText != String.Empty)
                {
                    edt.HelpText = HelpTextText;
                }
            }

            return(edt);
        }