Ejemplo n.º 1
0
        public int Compatible(Author audb)
        {
            authorclass aucs = new authorclass();

            aucs.familyname = audb.FamilynameAscii;
            aucs.firstname  = audb.GivennameAscii;
            return(Compatible(aucs));
        }
Ejemplo n.º 2
0
        public static int NewAuthor(Librarydb db, string name)
        {
            int         authorid = -1;
            authorclass ac       = authorclass.Parse(name).FirstOrDefault();

            if (ac != null)
            {
                authorid = ac.AuthorToDB(db);
            }
            return(authorid);
        }
Ejemplo n.º 3
0
        public void Merge(authorclass auc2)
        {
            if (this.active)
            {
                if (String.IsNullOrEmpty(this.familyname))
                {
                    this.familyname = auc2.familyname;
                }
                if (String.IsNullOrEmpty(this.firstname))
                {
                    this.firstname = auc2.firstname;
                    if (String.IsNullOrEmpty(this.firstname))
                    {
                        this.firstname = auc2.initials;
                    }
                }
                else if (this.firstname.Length < auc2.firstname.Length)
                {
                    this.firstname = auc2.firstname;
                }
                if (String.IsNullOrEmpty(this.initials))
                {
                    if (!String.IsNullOrEmpty(auc2.initials))
                    {
                        this.initials = auc2.initials;
                    }
                    else
                    {
                        this.initials = authorclass.MakeInitials(this.firstname);
                    }
                }
                if (String.IsNullOrEmpty(this.affiliation))
                {
                    this.affiliation = auc2.affiliation;
                }
                this.fullname = GetFullname();


                auc2.active = false;
            }
            else if (auc2.active)
            {
                auc2.Merge(this);
            }
            else
            {
                MessageBox.Show("Bad merger in authorclass; both inactive ");
            }
        }
Ejemplo n.º 4
0
        public static int Compatible(Author audb1, Author audb2)
        {
            authorclass aucs1 = new authorclass();

            aucs1.familyname = audb1.FamilynameAscii;
            aucs1.firstname  = audb1.GivennameAscii;
            authorclass aucs2 = new authorclass();

            aucs2.familyname = audb2.FamilynameAscii;
            aucs2.firstname  = audb2.GivennameAscii;
            int ic = aucs1.Compatible(aucs2);

            //if ( ic > 0)
            //    parentform.memo(aucs1.GetFullname() + " : " + aucs2.GetFullname() + " : " + ic);
            return(ic);
        }
Ejemplo n.º 5
0
        public static List <authorclass> Parse(string namepar)
        {
            List <authorclass> lc   = new List <authorclass>();
            string             name = namepar.Replace(".", "");

            if (name.Contains("("))
            {
                string rex = @"\((.+?)\)";
                foreach (Match match in Regex.Matches(name, rex, RegexOptions.IgnoreCase))
                {
                    //Console.WriteLine("Full match = " + match.Value);
                    //Console.WriteLine("Found (1) {0}.",
                    //                  match.Groups[1].Value);
                    foreach (authorclass auc in authorclass.Parse("[" + match.Groups[1].Value + "]"))
                    {
                        lc.Add(auc);
                    }
                    foreach (authorclass auc in authorclass.Parse(name.Replace("(" + match.Groups[1].Value + ")", "")))
                    {
                        lc.Add(auc);
                    }
                }
            }
            else if (name.Contains("&") || name.Contains(" and "))
            {
                foreach (string np in name.Replace(" and ", " & ").Split('&'))
                {
                    foreach (authorclass auc in authorclass.Parse(np.Trim()))
                    {
                        lc.Add(auc);
                    }
                }
            }
            else if (name.Contains(" et al"))
            {
                foreach (authorclass auc in authorclass.Parse(name.Replace(" et al", "")))
                {
                    lc.Add(auc);
                }
            }
            else if (name.Contains(","))
            {
                string[] words = name.Split(',');
                if (words.Length == 2)
                {
                    authorclass auc = new authorclass();
                    auc.familyname = words[0].Trim();
                    auc.firstname  = authorclass.Cleanup(words[1]);
                    auc.fullname   = name;
                    lc.Add(auc);
                }
                else
                {
                    foreach (string w in words)
                    {
                        foreach (authorclass auc in authorclass.Parse(w.Trim()))
                        {
                            lc.Add(auc);
                        }
                    }
                }
            }
            else if (name.Trim().Contains(" "))
            {
                authorclass auc   = new authorclass();
                string[]    words = name.Split();
                auc.familyname = authorclass.Cleanup(words[words.Length - 1]);
                if (auc.familyname.Length > 1)
                {
                    auc.firstname = authorclass.Cleanup(words[0]);
                    if (words.Length > 2)
                    {
                        for (int i = 1; i < words.Length - 1; i++)
                        {
                            auc.firstname += " " + authorclass.Cleanup(words[i]);
                        }
                    }
                }
                else
                {
                    auc.familyname = authorclass.Cleanup(words[0]);
                    auc.firstname  = authorclass.Cleanup(words[1]);
                    if (words.Length > 2)
                    {
                        for (int i = 2; i < words.Length; i++)
                        {
                            auc.firstname += " " + authorclass.Cleanup(words[i]);
                        }
                    }
                }
                auc.fullname = auc.GetFullname();
                lc.Add(auc);
            }
            else
            {
                authorclass auc = new authorclass();
                auc.familyname = name.Trim();
                auc.fullname   = auc.familyname;
                lc.Add(auc);
            }


            return(lc);
        }
Ejemplo n.º 6
0
        public int Compatible(authorclass auc2)
        {
            string nf = dbutil.RemoveDiacritics(this.familyname.ToLower());
            string n1 = dbutil.RemoveDiacritics(this.firstname.ToLower());

            if (nf != auc2.familyname.ToLower())
            {
                return(0);
            }

            if (!String.IsNullOrEmpty(this.firstname))
            {
                if (!String.IsNullOrEmpty(auc2.firstname))
                {
                    if (n1 != auc2.firstname.ToLower())
                    {
                        if ((n1.IndexOf(auc2.firstname) == 0) || (auc2.firstname.IndexOf(n1) == 0))
                        {
                            return(3);
                        }
                        if ((authorclass.MakeInitials(this.firstname) == auc2.firstname) || (authorclass.MakeInitials(auc2.firstname) == this.firstname))
                        {
                            return(2);
                        }
                        return(0);
                    }
                    else
                    {
                        return(4);
                    }
                }
                else if (!String.IsNullOrEmpty(auc2.initials))
                {
                    if (n1 == auc2.initials.ToLower())
                    {
                        return(4);
                    }
                    else if (authorclass.MakeInitials(n1) == auc2.initials.ToLower())
                    {
                        return(2);
                    }
                    else
                    {
                        return(0);
                    }
                }
                else
                {
                    return(1);
                }
            }
            else if (!String.IsNullOrEmpty(this.initials))
            {
                if (this.initials.ToUpper() == auc2.firstname.ToUpper())
                {
                    return(4);
                }
                else if (!String.IsNullOrEmpty(auc2.initials))
                {
                    if (this.initials.ToUpper() == auc2.initials.ToUpper())
                    {
                        return(4);
                    }
                    else
                    {
                        return(0);
                    }
                }
                if (String.IsNullOrEmpty(auc2.firstname) && String.IsNullOrEmpty(auc2.initials))
                {
                    return(1);
                }
                else if (authorclass.MakeInitials(auc2.firstname) != this.initials)
                {
                    return(0);
                }
                else
                {
                    return(2);
                }
            }
            else if (String.IsNullOrEmpty(auc2.firstname) && String.IsNullOrEmpty(auc2.initials))
            {
                return(4);
            }
            else
            {
                return(1);
            }

            //return true;
        }