Пример #1
0
        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 };
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        private static bool ShouldInsertJournals(JournalsImportMode journalsImportMode)
        {
            switch (journalsImportMode)
            {
            case JournalsImportMode.InsertOnly:
            case JournalsImportMode.InsertAndUpdate:
                return(true);

            default:
                return(false);
            }
        }
Пример #8
0
        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;
        }
Пример #9
0
        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
            });
        }
Пример #10
0
 private static bool ShouldUpdateJournals(JournalsImportMode journalsImportMode)
 {
     return journalsImportMode == JournalsImportMode.InsertAndUpdate || journalsImportMode == JournalsImportMode.UpdateOnly;
 }
Пример #11
0
 private static bool ShouldUpdateJournals(JournalsImportMode journalsImportMode)
 {
     return(journalsImportMode == JournalsImportMode.InsertAndUpdate || journalsImportMode == JournalsImportMode.UpdateOnly);
 }
Пример #12
0
 private static bool ShouldInsertJournals(JournalsImportMode journalsImportMode)
 {
     switch (journalsImportMode)
     {
         case JournalsImportMode.InsertOnly:
         case JournalsImportMode.InsertAndUpdate:
             return true;
         default:
             return false;
     }
 }