public int Compatible(Author audb) { authorclass aucs = new authorclass(); aucs.familyname = audb.FamilynameAscii; aucs.firstname = audb.GivennameAscii; return(Compatible(aucs)); }
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); }
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 "); } }
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); }
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); }
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; }