Exemplo n.º 1
0
        /// <summary>
        /// Creates the maping by friendly name comparison.
        /// </summary>
        /// <param name="column">The column.</param>
        /// <param name="dstClass">The DST class.</param>
        /// <param name="builder">The builder.</param>
        public static void CreateMapingByFriendlyNameComparison(DataColumn column, MetaClass dstClass,
                                                                MappingElementBuilder builder)
        {
            if (column == null)
            {
                throw new ArgumentNullException("column");
            }
            if (dstClass == null)
            {
                throw new ArgumentNullException("dstClass");
            }
            if (builder == null)
            {
                throw new ArgumentNullException("builder");
            }

            FieldMathResult matchResult = CreateMapingByFriendlyNameComparison(column, dstClass, string.Empty, null, builder);

            if (matchResult != null)
            {
                builder.AssignCopyValueRule(column.ColumnName, matchResult.Tag);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates the default name of the mapping by.
        /// </summary>
        private static FieldMathResult CreateMapingByFriendlyNameComparison(DataColumn column, MetaClass dstClass,
																		   string prefix, FieldMathResult prevMatchResult, 
																		   MappingElementBuilder builder)
        {
            FieldMathResult retVal = prevMatchResult;
            foreach (MetaField metaField in dstClass.Fields)
            {
                string mappedFieldName = prefix + metaField.Name;
                // Skip always maped metaField
                if (builder.GetRuleByMetaField(mappedFieldName) != null)
                    continue;
                // Skip Back Aggregation References
                if (metaField.Attributes.ContainsKey(McDataTypeAttribute.AggregationMark))
                    continue;
                //Skip referenses
                if (metaField.IsReference)
                    continue;

                // Process Aggregation
                if (metaField.IsAggregation)
                {
                    // Find Aggr meta class
                    MetaClass aggrMetaClass = DataContext.Current.GetMetaClass((string)metaField.Attributes[McDataTypeAttribute.AggregationMetaClassName]);
                    // Find rules
                    retVal = CreateMapingByFriendlyNameComparison(column, aggrMetaClass, metaField.Name + ".", retVal, builder);
                    continue;
                }

                //Получаем имя в русской локализации
                string enName = GetWebResourceString(metaField.FriendlyName, CultureInfo.GetCultureInfo("en-US"));

                //получаем имя в английской локализации
                string ruName = GetWebResourceString(metaField.FriendlyName, CultureInfo.GetCultureInfo("ru-RU"));
                //Find best match for pattern
                foreach(string searchPattern in new string[] { enName, ruName })
                {
                    if (column.ColumnName.Contains(searchPattern))
                    {
                        FieldMathResult newResult = new FieldMathResult(column.ColumnName, searchPattern, mappedFieldName);
                        if (retVal != null)
                        {
                            retVal = retVal.Weight < newResult.Weight ? retVal : newResult;
                        }
                        else
                        {
                            retVal = newResult;
                        }
                        break;
                    }
                }
            }

            return retVal;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates the default name of the mapping by.
        /// </summary>
        private static FieldMathResult CreateMapingByFriendlyNameComparison(DataColumn column, MetaClass dstClass,
                                                                            string prefix, FieldMathResult prevMatchResult,
                                                                            MappingElementBuilder builder)
        {
            FieldMathResult retVal = prevMatchResult;

            foreach (MetaField metaField in dstClass.Fields)
            {
                string mappedFieldName = prefix + metaField.Name;
                // Skip always maped metaField
                if (builder.GetRuleByMetaField(mappedFieldName) != null)
                {
                    continue;
                }
                // Skip Back Aggregation References
                if (metaField.Attributes.ContainsKey(McDataTypeAttribute.AggregationMark))
                {
                    continue;
                }
                //Skip referenses
                if (metaField.IsReference)
                {
                    continue;
                }

                // Process Aggregation
                if (metaField.IsAggregation)
                {
                    // Find Aggr meta class
                    MetaClass aggrMetaClass = DataContext.Current.GetMetaClass((string)metaField.Attributes[McDataTypeAttribute.AggregationMetaClassName]);
                    // Find rules
                    retVal = CreateMapingByFriendlyNameComparison(column, aggrMetaClass, metaField.Name + ".", retVal, builder);
                    continue;
                }

                //Получаем имя в русской локализации
                string enName = GetWebResourceString(metaField.FriendlyName, CultureInfo.GetCultureInfo("en-US"));

                //получаем имя в английской локализации
                string ruName = GetWebResourceString(metaField.FriendlyName, CultureInfo.GetCultureInfo("ru-RU"));
                //Find best match for pattern
                foreach (string searchPattern in new string[] { enName, ruName })
                {
                    if (column.ColumnName.Contains(searchPattern))
                    {
                        FieldMathResult newResult = new FieldMathResult(column.ColumnName, searchPattern, mappedFieldName);
                        if (retVal != null)
                        {
                            retVal = retVal.Weight < newResult.Weight ? retVal : newResult;
                        }
                        else
                        {
                            retVal = newResult;
                        }
                        break;
                    }
                }
            }

            return(retVal);
        }