From 03dd2a0b59a63c17460a74cd12aa205edc628aad Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 23 Apr 2020 06:09:14 +0200 Subject: [PATCH] Create List of checkers at the contructor --- .../logic/integrity/IntegrityCheck.java | 94 ++++++------------- 1 file changed, 30 insertions(+), 64 deletions(-) diff --git a/src/main/java/org/jabref/logic/integrity/IntegrityCheck.java b/src/main/java/org/jabref/logic/integrity/IntegrityCheck.java index 7d7c5784e5c..ed040d09593 100644 --- a/src/main/java/org/jabref/logic/integrity/IntegrityCheck.java +++ b/src/main/java/org/jabref/logic/integrity/IntegrityCheck.java @@ -1,8 +1,8 @@ package org.jabref.logic.integrity; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import java.util.Objects; import org.jabref.logic.bibtexkeypattern.BibtexKeyPatternPreferences; import org.jabref.logic.journals.JournalAbbreviationRepository; @@ -14,24 +14,8 @@ public class IntegrityCheck { private final BibDatabaseContext bibDatabaseContext; - private final FilePreferences filePreferences; - private final BibtexKeyPatternPreferences bibtexKeyPatternPreferences; - private final JournalAbbreviationRepository journalAbbreviationRepository; - private final boolean enforceLegalKey; - private final boolean allowIntegerEdition; - private ASCIICharacterChecker asciiCharacterChecker; - private NoBibtexFieldChecker noBibtexFieldChecker; - private BibTeXEntryTypeChecker bibTeXEntryTypeChecker; - private BibtexKeyChecker bibtexKeyChecker; - private TypeChecker typeChecker; - private BibStringChecker bibStringChecker; - private HTMLCharacterChecker htmlCharacterChecker; - private EntryLinkChecker entryLinkChecker; - private BibtexkeyDeviationChecker bibtexkeyDeviationChecker; - private BibtexKeyDuplicationChecker bibtexKeyDuplicationChecker; - private JournalInAbbreviationListChecker journalInAbbreviationListChecker; - private FieldCheckers fieldCheckers; - private DoiDuplicationChecker doiDuplicationChecker; + private final FieldCheckers fieldCheckers; + private final List entryCheckers; public IntegrityCheck(BibDatabaseContext bibDatabaseContext, FilePreferences filePreferences, @@ -39,39 +23,35 @@ public IntegrityCheck(BibDatabaseContext bibDatabaseContext, JournalAbbreviationRepository journalAbbreviationRepository, boolean enforceLegalKey, boolean allowIntegerEdition) { - this.bibDatabaseContext = Objects.requireNonNull(bibDatabaseContext); - this.filePreferences = Objects.requireNonNull(filePreferences); - this.bibtexKeyPatternPreferences = Objects.requireNonNull(bibtexKeyPatternPreferences); - this.journalAbbreviationRepository = Objects.requireNonNull(journalAbbreviationRepository); - this.enforceLegalKey = enforceLegalKey; - this.allowIntegerEdition = allowIntegerEdition; - initCheckers(bibDatabaseContext, bibtexKeyPatternPreferences, journalAbbreviationRepository); - } - - private void initCheckers(BibDatabaseContext bibDatabaseContext, BibtexKeyPatternPreferences bibtexKeyPatternPreferences, JournalAbbreviationRepository journalAbbreviationRepository) { - asciiCharacterChecker = new ASCIICharacterChecker(); - noBibtexFieldChecker = new NoBibtexFieldChecker(); - bibTeXEntryTypeChecker = new BibTeXEntryTypeChecker(); - bibtexKeyChecker = new BibtexKeyChecker(); - typeChecker = new TypeChecker(); - bibStringChecker = new BibStringChecker(); - htmlCharacterChecker = new HTMLCharacterChecker(); - entryLinkChecker = new EntryLinkChecker(bibDatabaseContext.getDatabase()); - bibtexkeyDeviationChecker = new BibtexkeyDeviationChecker(bibDatabaseContext, bibtexKeyPatternPreferences); - bibtexKeyDuplicationChecker = new BibtexKeyDuplicationChecker(bibDatabaseContext.getDatabase()); - doiDuplicationChecker = new DoiDuplicationChecker(bibDatabaseContext.getDatabase()); - - if (bibDatabaseContext.isBiblatexMode()) { - journalInAbbreviationListChecker = new JournalInAbbreviationListChecker(StandardField.JOURNALTITLE, journalAbbreviationRepository); - } else { - journalInAbbreviationListChecker = new JournalInAbbreviationListChecker(StandardField.JOURNAL, journalAbbreviationRepository); - } + this.bibDatabaseContext = bibDatabaseContext; fieldCheckers = new FieldCheckers(bibDatabaseContext, filePreferences, journalAbbreviationRepository, enforceLegalKey, allowIntegerEdition); + + entryCheckers = Arrays.asList( + new BibtexKeyChecker(), + new TypeChecker(), + new BibStringChecker(), + new HTMLCharacterChecker(), + new EntryLinkChecker(bibDatabaseContext.getDatabase()), + new BibtexkeyDeviationChecker(bibDatabaseContext, bibtexKeyPatternPreferences), + new BibtexKeyDuplicationChecker(bibDatabaseContext.getDatabase()), + new DoiDuplicationChecker(bibDatabaseContext.getDatabase()) + ); + + if (!bibDatabaseContext.isBiblatexMode()) { + entryCheckers.add(new JournalInAbbreviationListChecker(StandardField.JOURNALTITLE, journalAbbreviationRepository)); + } else { + entryCheckers.addAll(List.of( + new JournalInAbbreviationListChecker(StandardField.JOURNAL, journalAbbreviationRepository), + new ASCIICharacterChecker(), + new NoBibtexFieldChecker(), + new BibTeXEntryTypeChecker()) + ); + } } List checkDatabase() { @@ -86,32 +66,18 @@ List checkDatabase() { public List checkEntry(BibEntry entry) { List result = new ArrayList<>(); - if (entry == null) { return result; } - for (FieldChecker checker : fieldCheckers.getAll()) { - result.addAll(checker.check(entry)); + for (FieldChecker fieldChecker : fieldCheckers.getAll()) { + result.addAll(fieldChecker.check(entry)); } - if (!bibDatabaseContext.isBiblatexMode()) { - // BibTeX only checkers - result.addAll(asciiCharacterChecker.check(entry)); - result.addAll(noBibtexFieldChecker.check(entry)); - result.addAll(bibTeXEntryTypeChecker.check(entry)); + for (Checker entryChecker : entryCheckers) { + result.addAll(entryChecker.check(entry)); } - result.addAll(journalInAbbreviationListChecker.check(entry)); - result.addAll(bibtexKeyChecker.check(entry)); - result.addAll(typeChecker.check(entry)); - result.addAll(bibStringChecker.check(entry)); - result.addAll(htmlCharacterChecker.check(entry)); - result.addAll(entryLinkChecker.check(entry)); - result.addAll(bibtexkeyDeviationChecker.check(entry)); - result.addAll(bibtexKeyDuplicationChecker.check(entry)); - result.addAll(doiDuplicationChecker.check(entry)); - return result; } }