public void SetCompareDefinition(CompareDefinition cd)
    {
        if (cd.ReferenceIsInfo)
        {
            SetReference(delegate
            {
                return(new MasterAssembly(cd.ReferencePath));
            });
        }
        else
        {
            SetReference(delegate
            {
                return(new CecilAssembly(cd.ReferencePath));
            });
        }

        if (cd.TargetIsInfo)
        {
            SetTarget(delegate
            {
                return(new MasterAssembly(cd.TargetPath));
            });
        }
        else
        {
            SetTarget(delegate
            {
                return(new CecilAssembly(cd.TargetPath));
            });
        }
    }
    protected virtual void OnCustomActivated(object sender, System.EventArgs e)
    {
        CustomCompare cc   = new CustomCompare();
        ResponseType  code = (ResponseType)cc.Run();

        if (code == ResponseType.None)
        {
            return;
        }

        if (code == ResponseType.Ok)
        {
            CompareDefinition cd = cc.GetCompare();
            if (cd != null)
            {
                SetCompareDefinition(cd);

                StartCompare(delegate { Title = cd.ToString(); });
                Config.AddRecent(cd);
                Config.Save();
                info_manager.PopulateRecent();
            }
        }

        cc.Destroy();
    }
    public void ComparePaths(string reference, string target)
    {
        var cd = new CompareDefinition(false, reference, false, target);

        SetCompareDefinition(cd);
        StartCompare(delegate { Title = cd.ToString(); });
        Config.AddRecent(cd);
        Config.Save();
        info_manager.PopulateRecent();
    }
        public XElement SerializeCompareDefinition(CompareDefinition compareDef)
        {
            XElement xCompareDef = new XElement("comparedefinition",
                                                new XElement("comparefields", compareDef.CompareFields.Select(cmd =>
                                                                                                              new XElement("field", new XAttribute("name1", cmd.Name1), new XAttribute("comparer", cmd.FuzzyComparer.Name), new XAttribute("weight", cmd.Weight)
                                                                                                                           )
                                                                                                              )),
                                                new XElement("stopfields", compareDef.StopFields.Select(cmd =>
                                                                                                        new XElement("field", new XAttribute("name1", cmd.Name1)
                                                                                                                     )
                                                                                                        )),
                                                new XElement("aggregator", new XAttribute("name", compareDef.Aggregator.Name)
                                                             )
                                                );

            return(xCompareDef);
        }
        public CompareDefinition DeserializeCompareDefinition(XElement xCompareDef)
        {
            try
            {
                var compareDef = new CompareDefinition();

                if (xCompareDef == null)
                {
                    return(compareDef);
                }

                // CompareFields
                foreach (XElement xField in xCompareDef.Element("comparefields").Elements())
                {
                    // Name
                    CompareField compareField = new CompareField();
                    compareField.Name1 = xField.Attribute(XName.Get("name1")).Value;

                    // Weight
                    compareField.Weight = (float)xField.Attribute(XName.Get("weight"));

                    // Comparer
                    string comparerName = xField.Attribute(XName.Get("comparer")).Value;

                    if (!string.IsNullOrEmpty(comparerName))
                    {
                        compareField.FuzzyComparer = StringFuzzyComparerFactory.GetInstance(comparerName);
                    }

                    compareDef.CompareFields.Add(compareField);
                }

                // Aggregator
                string aggregatorName = xCompareDef.Element("aggregator")
                                        .Attribute(XName.Get("name"))
                                        .Value;

                compareDef.Aggregator = AggregatorFactory.GetInstance(aggregatorName);

                return(compareDef);
            }
            catch (Exception ex)
            {
                throw new ArgumentException("Fehler in " + this.GetType().FullName + " Method: [" + System.Reflection.MethodBase.GetCurrentMethod() + "] Data: " + xCompareDef.ToString(), ex);
            }
        }
Example #6
0
        private CompareDefinitionGroup GenerateCompareDefinitionGroup(object obj1)
        {
            var compareDefinitionGroup = new CompareDefinitionGroup();

            // read atrribute on Class
            var matchingAttr = obj1.GetType().GetCustomAttributes(typeof(MatchingAttribute), false).FirstOrDefault() as MatchingAttribute;

            if (matchingAttr != null)
            {
                compareDefinitionGroup.Aggregator = (Aggregator)Activator.CreateInstance(matchingAttr.Aggregator);
            }

            foreach (var prop in obj1.GetType().GetProperties())
            {
                var fieldAttr = prop.GetCustomAttributes(typeof(MatchingFieldAttribute), false).FirstOrDefault() as MatchingFieldAttribute;
                if (fieldAttr != null)
                {
                    // CompareDefinition
                    var compareDef = compareDefinitionGroup.CompareDefinitions.FirstOrDefault(x => x.Name == fieldAttr.CompareDefinition);
                    if (compareDef == null)
                    {
                        compareDef = new CompareDefinition()
                        {
                            Name = fieldAttr.CompareDefinition
                        };

                        compareDefinitionGroup.CompareDefinitions.Add(compareDef);
                    }

                    // CompareField
                    var compareField = compareDef.CompareFields.FirstOrDefault(x => x.Name1 == prop.Name);
                    if (compareField == null)
                    {
                        compareField = new CompareField()
                        {
                            Name1         = prop.Name,
                            Name2         = prop.Name,
                            FuzzyComparer = (StringFuzzyComparer)Activator.CreateInstance(fieldAttr.FuzzyComparer)
                        };
                        compareDef.CompareFields.Add(compareField);
                    }
                }
            }
            return(compareDefinitionGroup);
        }
Example #7
0
        private CompareDefinition GenerateDefaultCompareDefinition(DataTable table1, DataTable table2)
        {
            var compareDefinition = new CompareDefinition();

            // take all fields
            var fields1 = table1.Columns
                          .Cast <DataColumn>()
                          .Select(x => x.ColumnName)
                          .ToList();
            var fields2 = table2.Columns
                          .Cast <DataColumn>()
                          .Select(x => x.ColumnName)
                          .ToList();

            for (int i = 0; i < fields1.Count; i++)
            {
                compareDefinition.CompareFields.Add(new CompareField(fields1[i], fields2[i]));
            }

            return(compareDefinition);
        }