internal static MatchingBibTeXRecord LocateBibTexForCitationItem(string reference_key, WebLibraryDetail primary_library) { // First try in the preferred library if (null != primary_library) { MatchingBibTeXRecord item = LocateBibTexForCitationItem_FOCUS(reference_key, primary_library); if (null != item) { return(item); } } // Failing that, look in all libraries foreach (WebLibraryDetail web_library_detail in WebLibraryManager.Instance.WebLibraryDetails_WorkingWebLibraries) { // Don't repeat a search of the preferred library if (primary_library != web_library_detail) { MatchingBibTeXRecord item = LocateBibTexForCitationItem_FOCUS(reference_key, web_library_detail); if (null != item) { return(item); } } } return(null); }
/** * Returns a map from citation reference_key -> PDFDocument */ internal static Dictionary <string, MatchingBibTeXRecord> Find(List <CitationCluster> citation_clusters, WebLibraryDetail primary_library) { Dictionary <string, MatchingBibTeXRecord> bitex_items = new Dictionary <string, MatchingBibTeXRecord>(); foreach (CitationCluster citation_cluster in citation_clusters) { foreach (CitationItem citation_item in citation_cluster.citation_items) { if (!bitex_items.ContainsKey(citation_item.reference_key)) { MatchingBibTeXRecord bitex_item = LocateBibTexForCitationItem(citation_item.reference_key, primary_library); bitex_items[citation_item.reference_key] = bitex_item; } } } return(bitex_items); }