public JournalsImportResult ImportJournals(IList<Journal> journals, JournalsImportMode journalsImportMode) { var distinctJournals = journals.Distinct(new JournalIssnEqualityComparer()).ToList(); var countries = this.ImportCountries(distinctJournals); var languages = this.ImportLanguages(distinctJournals); var subjects = this.ImportSubjects(distinctJournals); var publishers = this.ImportPublishers(distinctJournals); Logger.Info("Retrieving existing journals from database..."); var allJournals = this.journalRepository.All; var currentJournalIssns = this.journalRepository.AllIssns.ToList(); var newJournals = distinctJournals.Where(j => !currentJournalIssns.Contains(j.ISSN, StringComparer.InvariantCultureIgnoreCase)).ToList(); Logger.Info("Found {0} new journals", newJournals.Count); var existingJournals = distinctJournals.Where(j => currentJournalIssns.Contains(j.ISSN, StringComparer.InvariantCultureIgnoreCase)).ToList(); Logger.Info("Found {0} existing journals", existingJournals.Count); if (ShouldInsertJournals(journalsImportMode)) { this.InsertJournals(newJournals, countries, publishers, languages, subjects); } if (ShouldUpdateJournals(journalsImportMode)) { this.UpdateJournals(existingJournals, countries, publishers, languages, subjects, allJournals); } return new JournalsImportResult { NumberOfImportedJournals = distinctJournals.Count, NumberOfNewJournals = newJournals.Count }; }
public JournalsImportResult ImportJournals(IList<Journal> journals, JournalsImportMode journalsImportMode) { var journalUpdateProperties = new HashSet<JournalUpdateProperty>((JournalUpdateProperty[])Enum.GetValues(typeof(JournalUpdateProperty))); journalUpdateProperties.Remove(JournalUpdateProperty.DoajSeal); return ImportJournals(journals, journalsImportMode, journalUpdateProperties); }
public JournalsImportResult ImportJournals(IList <Journal> journals, JournalsImportMode journalsImportMode) { var journalUpdateProperties = new HashSet <JournalUpdateProperty>((JournalUpdateProperty[])Enum.GetValues(typeof(JournalUpdateProperty))); journalUpdateProperties.Remove(JournalUpdateProperty.DoajSeal); return(ImportJournals(journals, journalsImportMode, journalUpdateProperties)); }
private static void ImportJournals(JournalsImportSource importSource, JournalsImportMode importMode) { Logger.Info("Import source: {0}", importSource); Logger.Info("Import mode: {0}", importMode); Logger.Info("Importing journals..."); var importResult = container.Resolve <JournalsImport>().ImportJournals(GetJournalsToImport(importSource), importMode); Logger.Info("Imported {0} journals total", importResult.NumberOfImportedJournals); Logger.Info("mported {0} new journals", importResult.NumberOfNewJournals); }
private static void ImportJournals(JournalsImportSource importSource, JournalsImportMode importMode) { Logger.Info("Import source: {0}", importSource); Logger.Info("Import mode: {0}", importMode); Logger.Info("Importing journals..."); var importResult = container.Resolve<JournalsImport>().ImportJournals(GetJournalsToImport(importSource), importMode); Logger.Info("Imported {0} journals total", importResult.NumberOfImportedJournals); Logger.Info("mported {0} new journals", importResult.NumberOfNewJournals); }
private static void ImportJournals(JournalsImportSource importSource, JournalsImportMode importMode, JournalTocsFetchMode?action, ISet <JournalUpdateProperty> journalUpdateProperties) { Logger.Info("Import source: {0}", importSource); Logger.Info("Import mode: {0}", importMode); Logger.Info("Importing journals..."); var journalsImport = Container.Resolve <JournalsImport>(); var importResult = journalsImport.ImportJournals(GetJournalsToImport(importSource, action), importMode, journalUpdateProperties); Logger.Info("Imported {0} journals total", importResult.NumberOfImportedJournals); Logger.Info("Imported {0} new journals", importResult.NumberOfNewJournals); }
private static bool ShouldInsertJournals(JournalsImportMode journalsImportMode) { switch (journalsImportMode) { case JournalsImportMode.InsertOnly: case JournalsImportMode.InsertAndUpdate: return(true); default: return(false); } }
void StartImport(string modelIssns, JournalsImportMode importMode) { var issns = ParseISSNs(modelIssns); var journals = _journalsTocImport.DownloadJournals(issns.ToList()); var journalsISSNs = journals.Select(j => j.ISSN).ToSet(StringComparer.InvariantCultureIgnoreCase); var journalsPISSNs = journals.Select(j => j.PISSN).ToSet(StringComparer.InvariantCultureIgnoreCase); var allISSNs = journalsISSNs.Concat(journalsPISSNs).ToList(); var issnsFound = issns.Intersect(allISSNs).ToList(); var issnsNotFound = issns.Except(allISSNs).ToList(); var journalsToImport = journals.Where(j => issnsFound.Contains(j.ISSN) || issnsFound.Contains(j.PISSN)).Distinct().ToList(); if (journalsToImport.Any()) { journalsImport.ImportJournals(journalsToImport, importMode); } Session[FoundISSNsSessionKey] = issnsFound; Session[NotFoundISSNsSessionKey] = issnsNotFound; }
public JournalsImportResult ImportJournals(IList <Journal> journals, JournalsImportMode journalsImportMode) { var distinctJournals = journals.Distinct(new JournalIssnEqualityComparer()).ToList(); var countries = this.ImportCountries(distinctJournals); var languages = this.ImportLanguages(distinctJournals); var subjects = this.ImportSubjects(distinctJournals); var publishers = this.ImportPublishers(distinctJournals); Logger.Info("Retrieving existing journals from database..."); var allJournals = this.journalRepository.All; var currentJournalIssns = this.journalRepository.AllIssns.ToList(); var newJournals = distinctJournals.Where(j => !currentJournalIssns.Contains(j.ISSN, StringComparer.InvariantCultureIgnoreCase)).ToList(); Logger.Info("Found {0} new journals", newJournals.Count); var existingJournals = distinctJournals.Where(j => currentJournalIssns.Contains(j.ISSN, StringComparer.InvariantCultureIgnoreCase)).ToList(); Logger.Info("Found {0} existing journals", existingJournals.Count); if (ShouldInsertJournals(journalsImportMode)) { this.InsertJournals(newJournals, countries, publishers, languages, subjects); } if (ShouldUpdateJournals(journalsImportMode)) { this.UpdateJournals(existingJournals, countries, publishers, languages, subjects, allJournals); } return(new JournalsImportResult { NumberOfImportedJournals = distinctJournals.Count, NumberOfNewJournals = newJournals.Count }); }
private static bool ShouldUpdateJournals(JournalsImportMode journalsImportMode) { return journalsImportMode == JournalsImportMode.InsertAndUpdate || journalsImportMode == JournalsImportMode.UpdateOnly; }
private static bool ShouldUpdateJournals(JournalsImportMode journalsImportMode) { return(journalsImportMode == JournalsImportMode.InsertAndUpdate || journalsImportMode == JournalsImportMode.UpdateOnly); }
private static bool ShouldInsertJournals(JournalsImportMode journalsImportMode) { switch (journalsImportMode) { case JournalsImportMode.InsertOnly: case JournalsImportMode.InsertAndUpdate: return true; default: return false; } }