public bool IsMatching(Author other) { return IsNameInAlternativesOrSelf(other.completeName) || other.Alternatives.Any(alternative => IsNameInAlternativesOrSelf(alternative.completeName)); }
private ISet<string> findAliasesForName(string authorName) { ISet<string> foundAliases = new HashSet<string>(); foundAliases.Add(authorName); Author currentAuthor = new Author(authorName); if (null != currentAuthor.MailPart) { foundAliases.Add(currentAuthor.MailPart); string usernamepart = currentAuthor.MailPart.Split('@')[0]; if (!IsNameVeryCommon(usernamepart)) foundAliases.Add(usernamepart); if (usernamepart.Contains('+')) { string realUserNamePart = usernamepart.Split('+')[0]; if (!IsNameVeryCommon(realUserNamePart)) foundAliases.Add(realUserNamePart); } if (mailaddress2name.ContainsKey(currentAuthor.MailPart)) foreach (string alternativeName in mailaddress2name[currentAuthor.MailPart]) foundAliases.Add(alternativeName); if (mail2mail.ContainsKey(currentAuthor.MailPart)) foreach (string alternativeAddress in mail2mail[currentAuthor.MailPart]) if (alternativeAddress != currentAuthor.MailPart) foundAliases.Add(alternativeAddress); } if (null != currentAuthor.NamePart) { if (!IsNameVeryCommon(currentAuthor.NamePart)) foundAliases.Add(currentAuthor.NamePart); if (name2name.ContainsKey(currentAuthor.NamePart)) foreach (string alternativeName in name2name[currentAuthor.NamePart]) if (alternativeName != currentAuthor.NamePart) foundAliases.Add(alternativeName); if (name2mailaddress.ContainsKey(currentAuthor.NamePart)) foreach (string alternativeMail in name2mailaddress[currentAuthor.NamePart]) foundAliases.Add(alternativeMail); } if (null != currentAuthor.LoginNamePart) foundAliases.Add(currentAuthor.LoginNamePart); return foundAliases; }