コード例 #1
0
        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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        /// <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.");
        }
コード例 #7
0
 public MetadataPlusToMetadataConverter(MD45.Configurator.MetaClass metaClass45, MD47.Meta.Management.MetaClass metaClass47)
     : this(metaClass45, metaClass47, null, null)
 {
 }
コード例 #8
0
        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);
            }
        }