private static void ConvertOrganizations(Dictionary <int, OrganizationEntity> organizationsById) { Dictionary <int, Dictionary <string, object> > additionalFields = new Dictionary <int, Dictionary <string, object> >(); // Load organizations list using (IDataReader reader = DBHelper2.DBHelper.RunTextDataReader("SELECT [OrgId],[OrgName] FROM [ORGANIZATIONS]")) { while (reader.Read()) { int id = (int)reader["OrgId"]; string name = (string)reader["OrgName"]; Dictionary <string, object> additionalValues = new Dictionary <string, object>(); additionalValues.Add("Name", name); additionalFields.Add(id, additionalValues); } } MD47.Meta.Management.MetaClass metaClass47 = MD47.DataContext.Current.MetaModel.MetaClasses[OrganizationEntity.GetAssignedMetaClassName()]; MD45.Configurator.MetaClass metaClass45 = MD45.Configurator.MetaClass.Load("OrganizationsEx"); MetadataPlusToMetadataConverter converter = new MetadataPlusToMetadataConverter(metaClass45, metaClass47, "old_", additionalFields); converter.CopyFields(); converter.CopyEntities(organizationsById); }
/// <summary> /// Builds the full path. /// </summary> /// <param name="metaClass">The meta class.</param> /// <param name="node">The node.</param> /// <returns></returns> private string BuildFullPath(Mediachase.Ibn.Data.Meta.Management.MetaClass metaClass, Mediachase.Ibn.Data.Services.TreeNode node) { string path = String.Empty; Mediachase.Ibn.Data.Services.TreeNode[] nodes = TreeManager.GetPathToNode(metaClass, node); if (nodes.Length > 0) { foreach (Mediachase.Ibn.Data.Services.TreeNode treeNode in nodes) { path += treeNode.Title + "/"; } } return(path); }
private void SafelySetStringProperty(EntityObject entity, string name, string value) { string result = value; MD47.Meta.Management.MetaClass metaClass = MD47.DataContext.Current.MetaModel.MetaClasses[entity.MetaClassName]; MD47.Meta.Management.MetaField metaField = metaClass.Fields[name]; int maximumLength = metaField.Attributes.GetValue <int>(MD47.Meta.Management.McDataTypeAttribute.StringMaxLength, int.MaxValue); if (value != null && value.Length > maximumLength) { result = value.Substring(0, maximumLength); SendWarning("Maximum string length for {0}.{1} is {2} characters. The string '{3}' will be truncated to '{4}'.", entity.MetaClassName, name, maximumLength, value, result); } entity[name] = result; }
internal MetadataPlusToMetadataConverter(MD45.Configurator.MetaClass metaClass45, MD47.Meta.Management.MetaClass metaClass47, string fieldNamePrefix47, Dictionary <int, Dictionary <string, object> > additionalFields) { if (metaClass45 == null) { throw new ArgumentNullException("metaClass45"); } if (metaClass47 == null) { throw new ArgumentNullException("metaClass47"); } _metaClass45 = metaClass45; _metaClass47 = metaClass47; _fieldNamePrefix47 = fieldNamePrefix47; _additionalFields = additionalFields; }
/// <summary> /// Determines whether this instance can create the specified meta class. /// </summary> /// <param name="metaClass">The meta class.</param> /// <returns> /// <c>true</c> if this instance can create the specified meta class; otherwise, <c>false</c>. /// </returns> bool IMetaObjectFactory.CanCreate(Mediachase.Ibn.Data.Meta.Management.MetaClass metaClass) { if (metaClass == null) { throw new ArgumentNullException("metaClass"); } switch (metaClass.Name) { case "TimeTrackingEntry": case "TimeTrackingBlock": case "TimeTrackingBlockType": case "TimeTrackingBlockTypeInstance": return(true); } return(false); }
/// <summary> /// Creates the instance. /// </summary> /// <param name="metaClass">The meta class.</param> /// <param name="primaryKeyId">The primary key id.</param> /// <returns></returns> MetaObject IMetaObjectFactory.CreateInstance(Mediachase.Ibn.Data.Meta.Management.MetaClass metaClass, PrimaryKeyId primaryKeyId) { if (metaClass == null) { throw new ArgumentNullException("metaClass"); } switch (metaClass.Name) { case "TimeTrackingEntry": return(new TimeTrackingEntry(primaryKeyId)); case "TimeTrackingBlock": return(new TimeTrackingBlock(primaryKeyId)); case "TimeTrackingBlockType": return(new TimeTrackingBlockType(primaryKeyId)); case "TimeTrackingBlockTypeInstance": return(new TimeTrackingBlockTypeInstance(primaryKeyId)); } throw new NotSupportedException("MetaClass '" + metaClass.Name + "' is not supported."); }
public MetadataPlusToMetadataConverter(MD45.Configurator.MetaClass metaClass45, MD47.Meta.Management.MetaClass metaClass47) : this(metaClass45, metaClass47, null, null) { }
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); } }