/// <summary> /// Fills the Enum with values from dictionary. /// </summary> /// <returns></returns> private static Dictionary <int, string> CreateEnumType47FromMetaDictionary(MD47.Meta.Management.MetaFieldType enumType, MD45.Configurator.MetaDictionary dictionary45) { Dictionary <int, string> enumValues47By45 = new Dictionary <int, string>(); if (dictionary45 != null) { foreach (MD45.Configurator.MetaDictionaryItem item45 in dictionary45) { bool found = false; int value45 = item45.Id; string value47 = item45.Value; foreach (MD47.Meta.MetaEnumItem item47 in MD47.Meta.Management.MetaEnum.GetItems(enumType)) { if (item47.Name == value47) { found = true; break; } } if (!found) { MD47.Meta.Management.MetaEnum.AddItem(enumType, value47, item45.Index); } enumValues47By45.Add(value45, value47); } } return(enumValues47By45); }
private static void CopyFieldFrom45(MD47.Meta.Management.MetaClass metaClass47, string fieldNamePrefix47, MD45.Configurator.MetaField field45, Field45by47 fieldMap, FieldTypeMapingValues enumValuesByType) { MD47.Meta.Management.MetaField field47 = null; if (!field45.IsSystem) { using (MD47.Meta.Management.MetaFieldBuilder builder = new MD47.Meta.Management.MetaFieldBuilder(metaClass47)) { string name = fieldNamePrefix47 + field45.Name; string friendlyName = field45.FriendlyName; bool allowNulls = field45.AllowNulls; switch (field45.DataType) { case MD45.Configurator.MetaDataType.UniqueIdentifier: field47 = builder.CreateGuid(name, friendlyName, allowNulls); break; case MD45.Configurator.MetaDataType.Money: case MD45.Configurator.MetaDataType.SmallMoney: field47 = builder.CreateCurrency(name, friendlyName, allowNulls, 0, true); break; case MD45.Configurator.MetaDataType.Float: case MD45.Configurator.MetaDataType.Numeric: field47 = builder.CreateFloat(name, friendlyName, allowNulls, 0); break; case MD45.Configurator.MetaDataType.File: case MD45.Configurator.MetaDataType.ImageFile: field47 = builder.CreateFile(name, friendlyName, allowNulls, string.Empty); break; case MD45.Configurator.MetaDataType.Integer: case MD45.Configurator.MetaDataType.Decimal: case MD45.Configurator.MetaDataType.Int: case MD45.Configurator.MetaDataType.BigInt: case MD45.Configurator.MetaDataType.Real: case MD45.Configurator.MetaDataType.SmallInt: case MD45.Configurator.MetaDataType.TinyInt: field47 = builder.CreateInteger(name, friendlyName, allowNulls, 0); break; case MD45.Configurator.MetaDataType.Boolean: case MD45.Configurator.MetaDataType.Bit: field47 = builder.CreateCheckBoxBoolean(name, friendlyName, allowNulls, false, friendlyName); break; case MD45.Configurator.MetaDataType.Date: case MD45.Configurator.MetaDataType.DateTime: case MD45.Configurator.MetaDataType.SmallDateTime: case MD45.Configurator.MetaDataType.Timestamp: field47 = builder.CreateDate(name, friendlyName, allowNulls); break; case MD45.Configurator.MetaDataType.Email: field47 = builder.CreateEmail(name, friendlyName, allowNulls, field45.Length, false); break; case MD45.Configurator.MetaDataType.Url: field47 = builder.CreateUrl(name, friendlyName, allowNulls, field45.Length, false, String.Empty); break; case MD45.Configurator.MetaDataType.ShortString: case MD45.Configurator.MetaDataType.Char: case MD45.Configurator.MetaDataType.NChar: case MD45.Configurator.MetaDataType.NVarChar: case MD45.Configurator.MetaDataType.VarChar: field47 = builder.CreateText(name, friendlyName, allowNulls, field45.Length, false); break; case MD45.Configurator.MetaDataType.LongHtmlString: field47 = builder.CreateHtml(name, friendlyName, allowNulls); break; case MD45.Configurator.MetaDataType.LongString: case MD45.Configurator.MetaDataType.Binary: case MD45.Configurator.MetaDataType.Image: case MD45.Configurator.MetaDataType.NText: case MD45.Configurator.MetaDataType.Text: case MD45.Configurator.MetaDataType.VarBinary: field47 = builder.CreateLongText(name, friendlyName, allowNulls); break; case MD45.Configurator.MetaDataType.DictionarySingleValue: case MD45.Configurator.MetaDataType.EnumSingleValue: case MD45.Configurator.MetaDataType.DictionaryMultivalue: case MD45.Configurator.MetaDataType.EnumMultivalue: { bool isMultiValue = (field45.DataType == MD45.Configurator.MetaDataType.DictionaryMultivalue) || (field45.DataType == MD45.Configurator.MetaDataType.EnumMultivalue); MD45.Configurator.MetaDictionary dictionary45 = MD45.Configurator.MetaDictionary.Load(field45.Id); MD47.Meta.Management.MetaFieldType enum47 = null; // Try to find existing enum type foreach (MD47.Meta.Management.MetaFieldType fieldType47 in MD47.DataContext.Current.MetaModel.RegisteredTypes) { if (fieldType47.Name == name) { if (fieldType47.McDataType == MD47.Meta.Management.McDataType.Enum) { enum47 = fieldType47; } else { //Do not allow identical type names for Enum and Basic types name = name + "_" + builder.MetaClass.Name; } break; } } if (enum47 == null) { enum47 = MD47.Meta.Management.MetaEnum.Create(name, friendlyName, isMultiValue); } Dictionary <int, string> enumValues47By45 = CreateEnumType47FromMetaDictionary(enum47, dictionary45); enumValuesByType.Add(enum47, enumValues47By45); string defaultValue = string.Empty; if (!allowNulls) { MD47.Meta.MetaEnumItem[] items = MD47.Meta.Management.MetaEnum.GetItems(enum47); if (items != null && items.Length > 0) { defaultValue = items[0].Handle.ToString(CultureInfo.InvariantCulture); } } field47 = builder.CreateEnumField(name, friendlyName, enum47.Name, allowNulls, defaultValue, true); } break; case MD45.Configurator.MetaDataType.StringDictionary: //TODO: break; default: break; } } } if (field47 != null) { fieldMap.Add(field47.Name, field45.Name); } }