From 7cea20448bbce47813191ab1592b7101616ad096 Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Mon, 19 Dec 2022 23:46:28 +0100 Subject: [PATCH 1/4] Refactored CitationKeyPatternPreferences to new prefs pattern --- .../GenerateCitationKeyAction.java | 3 +- .../CitationKeyPatternTab.java | 2 +- .../CitationKeyPatternTabViewModel.java | 48 +++---- .../CitationKeyGenerator.java | 24 ---- .../CitationKeyPatternPreferences.java | 135 +++++++++++++++--- .../jabref/preferences/JabRefPreferences.java | 70 +++++---- .../preferences/PreferencesService.java | 2 - .../MakeLabelWithoutDatabaseTest.java | 44 ++++-- 8 files changed, 207 insertions(+), 121 deletions(-) diff --git a/src/main/java/org/jabref/gui/citationkeypattern/GenerateCitationKeyAction.java b/src/main/java/org/jabref/gui/citationkeypattern/GenerateCitationKeyAction.java index 82d9553d865..1cc32a198c1 100644 --- a/src/main/java/org/jabref/gui/citationkeypattern/GenerateCitationKeyAction.java +++ b/src/main/java/org/jabref/gui/citationkeypattern/GenerateCitationKeyAction.java @@ -71,8 +71,7 @@ public static boolean confirmOverwriteKeys(DialogService dialogService, Preferen Localization.lang("Overwrite keys"), Localization.lang("Cancel"), Localization.lang("Do not ask again"), - optOut -> preferencesService.storeCitationKeyPatternPreferences( - preferencesService.getCitationKeyPatternPreferences().withWarnBeforeOverwriteCiteKey(!optOut))); + optOut -> preferencesService.getCitationKeyPatternPreferences().setWarnBeforeOverwriteCiteKey(!optOut)); } else { // Always overwrite keys by default return true; diff --git a/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java b/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java index 1b1f2838949..daf0e082639 100644 --- a/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java +++ b/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java @@ -44,7 +44,7 @@ public String getTabName() { } public void initialize() { - this.viewModel = new CitationKeyPatternTabViewModel(dialogService, preferencesService); + this.viewModel = new CitationKeyPatternTabViewModel(preferencesService.getCitationKeyPatternPreferences()); overwriteAllow.selectedProperty().bindBidirectional(viewModel.overwriteAllowProperty()); overwriteWarning.selectedProperty().bindBidirectional(viewModel.overwriteWarningProperty()); diff --git a/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTabViewModel.java b/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTabViewModel.java index 53eb2a398e3..d9645f976cb 100644 --- a/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTabViewModel.java @@ -10,13 +10,11 @@ import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; -import org.jabref.gui.DialogService; import org.jabref.gui.commonfxcontrols.CitationKeyPatternPanelItemModel; import org.jabref.gui.commonfxcontrols.CitationKeyPatternPanelViewModel; import org.jabref.gui.preferences.PreferenceTabViewModel; import org.jabref.logic.citationkeypattern.CitationKeyPatternPreferences; import org.jabref.logic.citationkeypattern.GlobalCitationKeyPattern; -import org.jabref.preferences.PreferencesService; public class CitationKeyPatternTabViewModel implements PreferenceTabViewModel { @@ -36,28 +34,24 @@ public class CitationKeyPatternTabViewModel implements PreferenceTabViewModel { private final ObjectProperty defaultKeyPatternProperty = new SimpleObjectProperty<>( new CitationKeyPatternPanelItemModel(new CitationKeyPatternPanelViewModel.DefaultEntryType(), "")); - private final DialogService dialogService; - private final PreferencesService preferences; - private final CitationKeyPatternPreferences initialCitationKeyPatternPreferences; + private final CitationKeyPatternPreferences keyPatternPreferences; - public CitationKeyPatternTabViewModel(DialogService dialogService, PreferencesService preferences) { - this.dialogService = dialogService; - this.preferences = preferences; - this.initialCitationKeyPatternPreferences = preferences.getCitationKeyPatternPreferences(); + public CitationKeyPatternTabViewModel(CitationKeyPatternPreferences keyPatternPreferences) { + this.keyPatternPreferences = keyPatternPreferences; } @Override public void setValues() { - overwriteAllowProperty.setValue(!initialCitationKeyPatternPreferences.shouldAvoidOverwriteCiteKey()); - overwriteWarningProperty.setValue(initialCitationKeyPatternPreferences.shouldWarnBeforeOverwriteCiteKey()); - generateOnSaveProperty.setValue(initialCitationKeyPatternPreferences.shouldGenerateCiteKeysBeforeSaving()); + overwriteAllowProperty.setValue(!keyPatternPreferences.shouldAvoidOverwriteCiteKey()); + overwriteWarningProperty.setValue(keyPatternPreferences.shouldWarnBeforeOverwriteCiteKey()); + generateOnSaveProperty.setValue(keyPatternPreferences.shouldGenerateCiteKeysBeforeSaving()); - if (initialCitationKeyPatternPreferences.getKeySuffix() + if (keyPatternPreferences.getKeySuffix() == CitationKeyPatternPreferences.KeySuffix.ALWAYS) { letterAlwaysAddProperty.setValue(true); letterStartAProperty.setValue(false); letterStartBProperty.setValue(false); - } else if (initialCitationKeyPatternPreferences.getKeySuffix() + } else if (keyPatternPreferences.getKeySuffix() == CitationKeyPatternPreferences.KeySuffix.SECOND_WITH_A) { letterAlwaysAddProperty.setValue(false); letterStartAProperty.setValue(true); @@ -68,15 +62,15 @@ public void setValues() { letterStartBProperty.setValue(true); } - keyPatternRegexProperty.setValue(initialCitationKeyPatternPreferences.getKeyPatternRegex()); - keyPatternReplacementProperty.setValue(initialCitationKeyPatternPreferences.getKeyPatternReplacement()); - unwantedCharactersProperty.setValue(initialCitationKeyPatternPreferences.getUnwantedCharacters()); + keyPatternRegexProperty.setValue(keyPatternPreferences.getKeyPatternRegex()); + keyPatternReplacementProperty.setValue(keyPatternPreferences.getKeyPatternReplacement()); + unwantedCharactersProperty.setValue(keyPatternPreferences.getUnwantedCharacters()); } @Override public void storeSettings() { GlobalCitationKeyPattern newKeyPattern = - new GlobalCitationKeyPattern(initialCitationKeyPatternPreferences.getKeyPattern().getDefaultValue()); + new GlobalCitationKeyPattern(keyPatternPreferences.getKeyPattern().getDefaultValue()); patternListProperty.forEach(item -> { String patternString = item.getPattern(); if (!item.getEntryType().getName().equals("default")) { @@ -100,16 +94,14 @@ public void storeSettings() { keySuffix = CitationKeyPatternPreferences.KeySuffix.SECOND_WITH_B; } - preferences.storeCitationKeyPatternPreferences(new CitationKeyPatternPreferences( - !overwriteAllowProperty.getValue(), - overwriteWarningProperty.getValue(), - generateOnSaveProperty.getValue(), - keySuffix, - keyPatternRegexProperty.getValue(), - keyPatternReplacementProperty.getValue(), - unwantedCharactersProperty.getValue(), - newKeyPattern, - initialCitationKeyPatternPreferences.getKeywordDelimiter())); + keyPatternPreferences.setAvoidOverwriteCiteKey(!overwriteAllowProperty.getValue()); + keyPatternPreferences.setWarnBeforeOverwriteCiteKey(overwriteWarningProperty.getValue()); + keyPatternPreferences.setGenerateCiteKeysBeforeSaving(generateOnSaveProperty.getValue()); + keyPatternPreferences.setKeySuffix(keySuffix); + keyPatternPreferences.setKeyPatternRegex(keyPatternRegexProperty.getValue()); + keyPatternPreferences.setKeyPatternReplacement(keyPatternReplacementProperty.getValue()); + keyPatternPreferences.setUnwantedCharacters(unwantedCharactersProperty.getValue()); + keyPatternPreferences.setKeyPattern(newKeyPattern); } public BooleanProperty overwriteAllowProperty() { diff --git a/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyGenerator.java b/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyGenerator.java index 43972fa011d..2f3f5bba0f7 100644 --- a/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyGenerator.java +++ b/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyGenerator.java @@ -1,7 +1,6 @@ package org.jabref.logic.citationkeypattern; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -48,29 +47,6 @@ public CitationKeyGenerator(AbstractCitationKeyPattern citeKeyPattern, BibDataba this.unwantedCharacters = citationKeyPatternPreferences.getUnwantedCharacters(); } - @Deprecated - static String generateKey(BibEntry entry, String pattern) { - return generateKey(entry, pattern, new BibDatabase()); - } - - @Deprecated - static String generateKey(BibEntry entry, String pattern, BibDatabase database) { - GlobalCitationKeyPattern keyPattern = new GlobalCitationKeyPattern(Collections.emptyList()); - keyPattern.setDefaultValue("[" + pattern + "]"); - CitationKeyPatternPreferences patternPreferences = new CitationKeyPatternPreferences( - false, - false, - false, - CitationKeyPatternPreferences.KeySuffix.SECOND_WITH_A, - "", - "", - DEFAULT_UNWANTED_CHARACTERS, - keyPattern, - ','); - - return new CitationKeyGenerator(keyPattern, database, patternPreferences).generateKey(entry); - } - /** * Computes an appendix to a citation key that could make it unique. We use a-z for numbers 0-25, and then aa-az, ba-bz, etc. * diff --git a/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyPatternPreferences.java b/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyPatternPreferences.java index 436a081bd82..b0cdf141857 100644 --- a/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyPatternPreferences.java +++ b/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyPatternPreferences.java @@ -1,5 +1,13 @@ package org.jabref.logic.citationkeypattern; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.property.StringProperty; + public class CitationKeyPatternPreferences { public enum KeySuffix { @@ -8,15 +16,15 @@ public enum KeySuffix { SECOND_WITH_B // CiteKey, CiteKeyB, CiteKeyC ... } - private final boolean shouldAvoidOverwriteCiteKey; - private boolean shouldWarnBeforeOverwriteCiteKey; - private final boolean shouldGenerateCiteKeysBeforeSaving; - private final KeySuffix keySuffix; - private final String keyPatternRegex; - private final String keyPatternReplacement; - private final String unwantedCharacters; - private final GlobalCitationKeyPattern keyPattern; - private final Character keywordDelimiter; + private final BooleanProperty shouldAvoidOverwriteCiteKey = new SimpleBooleanProperty(); + private final BooleanProperty shouldWarnBeforeOverwriteCiteKey = new SimpleBooleanProperty(); + private final BooleanProperty shouldGenerateCiteKeysBeforeSaving = new SimpleBooleanProperty(); + private final ObjectProperty keySuffix = new SimpleObjectProperty<>(); + private final StringProperty keyPatternRegex = new SimpleStringProperty(); + private final StringProperty keyPatternReplacement = new SimpleStringProperty(); + private final StringProperty unwantedCharacters = new SimpleStringProperty(); + private final ObjectProperty keyPattern = new SimpleObjectProperty<>(); + private final ReadOnlyObjectProperty keywordDelimiter; public CitationKeyPatternPreferences(boolean shouldAvoidOverwriteCiteKey, boolean shouldWarnBeforeOverwriteCiteKey, @@ -26,57 +34,140 @@ public CitationKeyPatternPreferences(boolean shouldAvoidOverwriteCiteKey, String keyPatternReplacement, String unwantedCharacters, GlobalCitationKeyPattern keyPattern, - Character keywordDelimiter) { + ReadOnlyObjectProperty keywordDelimiter) { - this.shouldAvoidOverwriteCiteKey = shouldAvoidOverwriteCiteKey; - this.shouldWarnBeforeOverwriteCiteKey = shouldWarnBeforeOverwriteCiteKey; - this.shouldGenerateCiteKeysBeforeSaving = shouldGenerateCiteKeysBeforeSaving; - this.keySuffix = keySuffix; - this.keyPatternRegex = keyPatternRegex; - this.keyPatternReplacement = keyPatternReplacement; - this.unwantedCharacters = unwantedCharacters; - this.keyPattern = keyPattern; + this.shouldAvoidOverwriteCiteKey.set(shouldAvoidOverwriteCiteKey); + this.shouldWarnBeforeOverwriteCiteKey.set(shouldWarnBeforeOverwriteCiteKey); + this.shouldGenerateCiteKeysBeforeSaving.set(shouldGenerateCiteKeysBeforeSaving); + this.keySuffix.set(keySuffix); + this.keyPatternRegex.set(keyPatternRegex); + this.keyPatternReplacement.set(keyPatternReplacement); + this.unwantedCharacters.set(unwantedCharacters); + this.keyPattern.set(keyPattern); this.keywordDelimiter = keywordDelimiter; } + /** + * For use in test + */ + public CitationKeyPatternPreferences(boolean shouldAvoidOverwriteCiteKey, + boolean shouldWarnBeforeOverwriteCiteKey, + boolean shouldGenerateCiteKeysBeforeSaving, + KeySuffix keySuffix, + String keyPatternRegex, + String keyPatternReplacement, + String unwantedCharacters, + GlobalCitationKeyPattern keyPattern, + Character keywordDelimiter) { + + this(shouldAvoidOverwriteCiteKey, + shouldWarnBeforeOverwriteCiteKey, + shouldGenerateCiteKeysBeforeSaving, + keySuffix, + keyPatternRegex, + keyPatternReplacement, + unwantedCharacters, + keyPattern, + new SimpleObjectProperty<>(keywordDelimiter)); + } + public boolean shouldAvoidOverwriteCiteKey() { + return shouldAvoidOverwriteCiteKey.get(); + } + + public BooleanProperty shouldAvoidOverwriteCiteKeyProperty() { return shouldAvoidOverwriteCiteKey; } + public void setAvoidOverwriteCiteKey(boolean shouldAvoidOverwriteCiteKey) { + this.shouldAvoidOverwriteCiteKey.set(shouldAvoidOverwriteCiteKey); + } + public boolean shouldWarnBeforeOverwriteCiteKey() { + return shouldWarnBeforeOverwriteCiteKey.get(); + } + + public BooleanProperty shouldWarnBeforeOverwriteCiteKeyProperty() { return shouldWarnBeforeOverwriteCiteKey; } - public CitationKeyPatternPreferences withWarnBeforeOverwriteCiteKey(boolean shouldAvoidOverwriteCiteKey) { - this.shouldWarnBeforeOverwriteCiteKey = shouldAvoidOverwriteCiteKey; - return this; + public void setWarnBeforeOverwriteCiteKey(boolean shouldWarnBeforeOverwriteCiteKey) { + this.shouldWarnBeforeOverwriteCiteKey.set(shouldWarnBeforeOverwriteCiteKey); } public boolean shouldGenerateCiteKeysBeforeSaving() { + return shouldGenerateCiteKeysBeforeSaving.get(); + } + + public BooleanProperty shouldGenerateCiteKeysBeforeSavingProperty() { return shouldGenerateCiteKeysBeforeSaving; } + public void setGenerateCiteKeysBeforeSaving(boolean shouldGenerateCiteKeysBeforeSaving) { + this.shouldGenerateCiteKeysBeforeSaving.set(shouldGenerateCiteKeysBeforeSaving); + } + public KeySuffix getKeySuffix() { + return keySuffix.get(); + } + + public ObjectProperty keySuffixProperty() { return keySuffix; } + public void setKeySuffix(KeySuffix keySuffix) { + this.keySuffix.set(keySuffix); + } + public String getKeyPatternRegex() { + return keyPatternRegex.get(); + } + + public StringProperty keyPatternRegexProperty() { return keyPatternRegex; } + public void setKeyPatternRegex(String keyPatternRegex) { + this.keyPatternRegex.set(keyPatternRegex); + } + public String getKeyPatternReplacement() { + return keyPatternReplacement.get(); + } + + public StringProperty keyPatternReplacementProperty() { return keyPatternReplacement; } + public void setKeyPatternReplacement(String keyPatternReplacement) { + this.keyPatternReplacement.set(keyPatternReplacement); + } + public String getUnwantedCharacters() { + return unwantedCharacters.get(); + } + + public StringProperty unwantedCharactersProperty() { return unwantedCharacters; } + public void setUnwantedCharacters(String unwantedCharacters) { + this.unwantedCharacters.set(unwantedCharacters); + } + public GlobalCitationKeyPattern getKeyPattern() { + return keyPattern.get(); + } + + public ObjectProperty keyPatternProperty() { return keyPattern; } + public void setKeyPattern(GlobalCitationKeyPattern keyPattern) { + this.keyPattern.set(keyPattern); + } + public Character getKeywordDelimiter() { - return keywordDelimiter; + return keywordDelimiter.get(); } } diff --git a/src/main/java/org/jabref/preferences/JabRefPreferences.java b/src/main/java/org/jabref/preferences/JabRefPreferences.java index 3225fc4775a..674ed650c2d 100644 --- a/src/main/java/org/jabref/preferences/JabRefPreferences.java +++ b/src/main/java/org/jabref/preferences/JabRefPreferences.java @@ -460,6 +460,7 @@ public class JabRefPreferences implements PreferencesService { private CleanupPreferences cleanupPreferences; private PushToApplicationPreferences pushToApplicationPreferences; private ExternalApplicationsPreferences externalApplicationsPreferences; + private CitationKeyPatternPreferences citationKeyPatternPreferences; // The constructor is made private to enforce this as a singleton class: private JabRefPreferences() { @@ -1683,16 +1684,19 @@ private void clearCitationKeyPatterns() throws BackingStoreException { @Override public CitationKeyPatternPreferences getCitationKeyPatternPreferences() { + if (Objects.nonNull(citationKeyPatternPreferences)) { + return citationKeyPatternPreferences; + } + CitationKeyPatternPreferences.KeySuffix keySuffix = CitationKeyPatternPreferences.KeySuffix.SECOND_WITH_B; - if (getBoolean(KEY_GEN_ALWAYS_ADD_LETTER)) { keySuffix = CitationKeyPatternPreferences.KeySuffix.ALWAYS; } else if (getBoolean(KEY_GEN_FIRST_LETTER_A)) { keySuffix = CitationKeyPatternPreferences.KeySuffix.SECOND_WITH_A; } - return new CitationKeyPatternPreferences( + citationKeyPatternPreferences = new CitationKeyPatternPreferences( getBoolean(AVOID_OVERWRITING_KEY), getBoolean(WARN_BEFORE_OVERWRITING_KEY), getBoolean(GENERATE_KEYS_BEFORE_SAVING), @@ -1701,35 +1705,41 @@ public CitationKeyPatternPreferences getCitationKeyPatternPreferences() { get(KEY_PATTERN_REPLACEMENT), get(UNWANTED_CITATION_KEY_CHARACTERS), getGlobalCitationKeyPattern(), - getBibEntryPreferences().getKeywordSeparator()); - } - - @Override - public void storeCitationKeyPatternPreferences(CitationKeyPatternPreferences preferences) { - putBoolean(AVOID_OVERWRITING_KEY, preferences.shouldAvoidOverwriteCiteKey()); - putBoolean(WARN_BEFORE_OVERWRITING_KEY, preferences.shouldWarnBeforeOverwriteCiteKey()); - putBoolean(GENERATE_KEYS_BEFORE_SAVING, preferences.shouldGenerateCiteKeysBeforeSaving()); - - switch (preferences.getKeySuffix()) { - case ALWAYS -> { - putBoolean(KEY_GEN_ALWAYS_ADD_LETTER, true); - putBoolean(KEY_GEN_FIRST_LETTER_A, false); - } - case SECOND_WITH_A -> { - putBoolean(KEY_GEN_ALWAYS_ADD_LETTER, false); - putBoolean(KEY_GEN_FIRST_LETTER_A, true); - } - case SECOND_WITH_B -> { - putBoolean(KEY_GEN_ALWAYS_ADD_LETTER, false); - putBoolean(KEY_GEN_FIRST_LETTER_A, false); - } - } - - put(KEY_PATTERN_REGEX, preferences.getKeyPatternRegex()); - put(KEY_PATTERN_REPLACEMENT, preferences.getKeyPatternReplacement()); - put(UNWANTED_CITATION_KEY_CHARACTERS, preferences.getUnwantedCharacters()); + getBibEntryPreferences().keywordSeparatorProperty()); - storeGlobalCitationKeyPattern(preferences.getKeyPattern()); + EasyBind.listen(citationKeyPatternPreferences.shouldAvoidOverwriteCiteKeyProperty(), + (obs, oldValue, newValue) -> putBoolean(AVOID_OVERWRITING_KEY, newValue)); + EasyBind.listen(citationKeyPatternPreferences.shouldWarnBeforeOverwriteCiteKeyProperty(), + (obs, oldValue, newValue) -> putBoolean(WARN_BEFORE_OVERWRITING_KEY, newValue)); + EasyBind.listen(citationKeyPatternPreferences.shouldGenerateCiteKeysBeforeSavingProperty(), + (obs, oldValue, newValue) -> putBoolean(GENERATE_KEYS_BEFORE_SAVING, newValue)); + EasyBind.listen(citationKeyPatternPreferences.keySuffixProperty(), (obs, oldValue, newValue) -> { + switch (newValue) { + case ALWAYS -> { + putBoolean(KEY_GEN_ALWAYS_ADD_LETTER, true); + putBoolean(KEY_GEN_FIRST_LETTER_A, false); + } + case SECOND_WITH_A -> { + putBoolean(KEY_GEN_ALWAYS_ADD_LETTER, false); + putBoolean(KEY_GEN_FIRST_LETTER_A, true); + } + case SECOND_WITH_B -> { + putBoolean(KEY_GEN_ALWAYS_ADD_LETTER, false); + putBoolean(KEY_GEN_FIRST_LETTER_A, false); + } + } + } + ); + EasyBind.listen(citationKeyPatternPreferences.keyPatternRegexProperty(), + (obs, oldValue, newValue) -> put(KEY_PATTERN_REGEX, newValue)); + EasyBind.listen(citationKeyPatternPreferences.keyPatternReplacementProperty(), + (obs, oldValue, newValue) -> put(KEY_PATTERN_REPLACEMENT, newValue)); + EasyBind.listen(citationKeyPatternPreferences.unwantedCharactersProperty(), + (obs, oldValue, newValue) -> put(UNWANTED_CITATION_KEY_CHARACTERS, newValue)); + EasyBind.listen(citationKeyPatternPreferences.keyPatternProperty(), + (obs, oldValue, newValue) -> storeGlobalCitationKeyPattern(newValue)); + + return citationKeyPatternPreferences; } //************************************************************************************************************* diff --git a/src/main/java/org/jabref/preferences/PreferencesService.java b/src/main/java/org/jabref/preferences/PreferencesService.java index f5f27f89eb7..e6c4d5c7420 100644 --- a/src/main/java/org/jabref/preferences/PreferencesService.java +++ b/src/main/java/org/jabref/preferences/PreferencesService.java @@ -156,8 +156,6 @@ public interface PreferencesService { CitationKeyPatternPreferences getCitationKeyPatternPreferences(); - void storeCitationKeyPatternPreferences(CitationKeyPatternPreferences preferences); - //************************************************************************************************************* // ExternalApplicationsPreferences //************************************************************************************************************* diff --git a/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithoutDatabaseTest.java b/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithoutDatabaseTest.java index ba71a2b5520..5bbb266c20b 100644 --- a/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithoutDatabaseTest.java +++ b/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithoutDatabaseTest.java @@ -1,5 +1,10 @@ package org.jabref.logic.citationkeypattern; +import java.util.Collections; + +import javafx.beans.property.SimpleObjectProperty; + +import org.jabref.model.database.BibDatabase; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.StandardField; @@ -10,30 +15,45 @@ class MakeLabelWithoutDatabaseTest { - private BibEntry entry; + private CitationKeyGenerator citationKeyGenerator; @BeforeEach void setUp() { - entry = new BibEntry(); - entry.setField(StandardField.AUTHOR, "John Doe"); - entry.setField(StandardField.YEAR, "2016"); - entry.setField(StandardField.TITLE, "An awesome paper on JabRef"); + GlobalCitationKeyPattern keyPattern = new GlobalCitationKeyPattern(Collections.emptyList()); + keyPattern.setDefaultValue("[auth]"); + CitationKeyPatternPreferences patternPreferences = new CitationKeyPatternPreferences( + false, + false, + false, + CitationKeyPatternPreferences.KeySuffix.SECOND_WITH_A, + "", + "", + CitationKeyGenerator.DEFAULT_UNWANTED_CHARACTERS, + keyPattern, + new SimpleObjectProperty<>(',')); + + citationKeyGenerator = new CitationKeyGenerator(keyPattern, new BibDatabase(), patternPreferences); } @Test - void makeLabelForFileSearch() { - String label = CitationKeyGenerator.generateKey(entry, "auth"); + void makeAuthorLabelForFileSearch() { + BibEntry entry = new BibEntry() + .withField(StandardField.AUTHOR, "John Doe") + .withField(StandardField.YEAR, "2016") + .withField(StandardField.TITLE, "An awesome paper on JabRef"); + + String label = citationKeyGenerator.generateKey(entry); assertEquals("Doe", label); } @Test void makeEditorLabelForFileSearch() { - BibEntry localEntry = new BibEntry(); - localEntry.setField(StandardField.EDITOR, "John Doe"); - localEntry.setField(StandardField.YEAR, "2016"); - localEntry.setField(StandardField.TITLE, "An awesome paper on JabRef"); + BibEntry entry = new BibEntry() + .withField(StandardField.EDITOR, "John Doe") + .withField(StandardField.YEAR, "2016") + .withField(StandardField.TITLE, "An awesome paper on JabRef"); - String label = CitationKeyGenerator.generateKey(localEntry, "auth"); + String label = citationKeyGenerator.generateKey(entry); assertEquals("Doe", label); } } From fad31126fcc3c1a769cdd4177f54b9e96d58a84a Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Tue, 20 Dec 2022 00:30:11 +0100 Subject: [PATCH 2/4] Integrated defaultPattern and keywordDelimiter in prefs --- .../CitationKeyPatternPanelViewModel.java | 4 +- .../keypattern/KeyPatternPropertiesView.java | 2 +- .../PreferencesDialogViewModel.java | 1 - .../CitationKeyPatternTab.java | 2 +- .../gui/shared/SharedDatabaseUIManager.java | 4 +- .../logic/bibtex/comparator/MetaDataDiff.java | 4 +- .../CitationKeyPatternPreferences.java | 10 ++++ .../migrations/PreferencesMigrations.java | 1 + .../jabref/preferences/JabRefPreferences.java | 59 +++++-------------- .../preferences/PreferencesService.java | 8 --- 10 files changed, 35 insertions(+), 60 deletions(-) diff --git a/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanelViewModel.java b/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanelViewModel.java index 95416561b23..40d83334328 100644 --- a/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanelViewModel.java +++ b/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanelViewModel.java @@ -69,12 +69,12 @@ public void setValues(Collection entryTypeList, AbstractCitationKe } public void setItemToDefaultPattern(CitationKeyPatternPanelItemModel item) { - item.setPattern(preferences.getDefaultsDefaultCitationKeyPattern()); + item.setPattern(preferences.getCitationKeyPatternPreferences().getDefaultPattern()); } public void resetAll() { patternListProperty.forEach(item -> item.setPattern("")); - defaultItemProperty.getValue().setPattern(preferences.getDefaultsDefaultCitationKeyPattern()); + defaultItemProperty.getValue().setPattern(preferences.getCitationKeyPatternPreferences().getDefaultPattern()); } public ListProperty patternListProperty() { diff --git a/src/main/java/org/jabref/gui/libraryproperties/keypattern/KeyPatternPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/keypattern/KeyPatternPropertiesView.java index 4d915d5099c..5c325ff612b 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/keypattern/KeyPatternPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/keypattern/KeyPatternPropertiesView.java @@ -57,7 +57,7 @@ public void setValues() { bibEntryTypesManager.getAllTypes(databaseContext.getMetaData().getMode() .orElse(preferencesService.getGeneralPreferences() .getDefaultBibDatabaseMode())), - databaseContext.getMetaData().getCiteKeyPattern(preferencesService.getGlobalCitationKeyPattern())); + databaseContext.getMetaData().getCiteKeyPattern(preferencesService.getCitationKeyPatternPreferences().getKeyPattern())); } @FXML diff --git a/src/main/java/org/jabref/gui/preferences/PreferencesDialogViewModel.java b/src/main/java/org/jabref/gui/preferences/PreferencesDialogViewModel.java index 0e5f2f7155f..56b938f9194 100644 --- a/src/main/java/org/jabref/gui/preferences/PreferencesDialogViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/PreferencesDialogViewModel.java @@ -162,7 +162,6 @@ public void resetPreferences() { */ private void updateAfterPreferenceChanges() { // Reload internal preferences cache - preferences.updateGlobalCitationKeyPattern(); preferences.updateMainTableColumns(); setValues(); diff --git a/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java b/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java index daf0e082639..f7f103f6144 100644 --- a/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java +++ b/src/main/java/org/jabref/gui/preferences/citationkeypattern/CitationKeyPatternTab.java @@ -68,7 +68,7 @@ public void setValues() { viewModel.setValues(); bibtexKeyPatternTable.setValues( Globals.entryTypesManager.getAllTypes(preferencesService.getGeneralPreferences().getDefaultBibDatabaseMode()), - preferencesService.getGlobalCitationKeyPattern()); + preferencesService.getCitationKeyPatternPreferences().getKeyPattern()); } @Override diff --git a/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java b/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java index 24530b79e0d..67593b9fbb5 100644 --- a/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java +++ b/src/main/java/org/jabref/gui/shared/SharedDatabaseUIManager.java @@ -140,7 +140,7 @@ public LibraryTab openNewSharedDatabaseTab(DBMSConnectionProperties dbmsConnecti DBMSSynchronizer synchronizer = new DBMSSynchronizer( bibDatabaseContext, preferencesService.getBibEntryPreferences().getKeywordSeparator(), - preferencesService.getGlobalCitationKeyPattern(), + preferencesService.getCitationKeyPatternPreferences().getKeyPattern(), Globals.getFileUpdateMonitor()); bibDatabaseContext.convertToSharedDatabase(synchronizer); @@ -169,7 +169,7 @@ public void openSharedDatabaseFromParserResult(ParserResult parserResult) DBMSSynchronizer synchronizer = new DBMSSynchronizer( bibDatabaseContext, preferencesService.getBibEntryPreferences().getKeywordSeparator(), - preferencesService.getGlobalCitationKeyPattern(), + preferencesService.getCitationKeyPatternPreferences().getKeyPattern(), Globals.getFileUpdateMonitor()); bibDatabaseContext.convertToSharedDatabase(synchronizer); diff --git a/src/main/java/org/jabref/logic/bibtex/comparator/MetaDataDiff.java b/src/main/java/org/jabref/logic/bibtex/comparator/MetaDataDiff.java index 09c639e6e64..b1ac75dcc3e 100644 --- a/src/main/java/org/jabref/logic/bibtex/comparator/MetaDataDiff.java +++ b/src/main/java/org/jabref/logic/bibtex/comparator/MetaDataDiff.java @@ -59,7 +59,9 @@ public EnumSet getDifferences(PreferencesService preferences) { if (!Objects.equals(originalMetaData.getSaveOrderConfig(), newMetaData.getSaveOrderConfig())) { changes.add(Difference.SAVE_SORT_ORDER); } - if (!Objects.equals(originalMetaData.getCiteKeyPattern(preferences.getGlobalCitationKeyPattern()), newMetaData.getCiteKeyPattern(preferences.getGlobalCitationKeyPattern()))) { + if (!Objects.equals( + originalMetaData.getCiteKeyPattern(preferences.getCitationKeyPatternPreferences().getKeyPattern()), + newMetaData.getCiteKeyPattern(preferences.getCitationKeyPatternPreferences().getKeyPattern()))) { changes.add(Difference.KEY_PATTERNS); } if (!Objects.equals(originalMetaData.getUserFileDirectories(), newMetaData.getUserFileDirectories())) { diff --git a/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyPatternPreferences.java b/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyPatternPreferences.java index b0cdf141857..37a678b26c5 100644 --- a/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyPatternPreferences.java +++ b/src/main/java/org/jabref/logic/citationkeypattern/CitationKeyPatternPreferences.java @@ -24,6 +24,7 @@ public enum KeySuffix { private final StringProperty keyPatternReplacement = new SimpleStringProperty(); private final StringProperty unwantedCharacters = new SimpleStringProperty(); private final ObjectProperty keyPattern = new SimpleObjectProperty<>(); + private final String defaultPattern; private final ReadOnlyObjectProperty keywordDelimiter; public CitationKeyPatternPreferences(boolean shouldAvoidOverwriteCiteKey, @@ -34,6 +35,7 @@ public CitationKeyPatternPreferences(boolean shouldAvoidOverwriteCiteKey, String keyPatternReplacement, String unwantedCharacters, GlobalCitationKeyPattern keyPattern, + String defaultPattern, ReadOnlyObjectProperty keywordDelimiter) { this.shouldAvoidOverwriteCiteKey.set(shouldAvoidOverwriteCiteKey); @@ -44,6 +46,8 @@ public CitationKeyPatternPreferences(boolean shouldAvoidOverwriteCiteKey, this.keyPatternReplacement.set(keyPatternReplacement); this.unwantedCharacters.set(unwantedCharacters); this.keyPattern.set(keyPattern); + + this.defaultPattern = defaultPattern; this.keywordDelimiter = keywordDelimiter; } @@ -58,6 +62,7 @@ public CitationKeyPatternPreferences(boolean shouldAvoidOverwriteCiteKey, String keyPatternReplacement, String unwantedCharacters, GlobalCitationKeyPattern keyPattern, + String defaultPattern, Character keywordDelimiter) { this(shouldAvoidOverwriteCiteKey, @@ -68,6 +73,7 @@ public CitationKeyPatternPreferences(boolean shouldAvoidOverwriteCiteKey, keyPatternReplacement, unwantedCharacters, keyPattern, + defaultPattern, new SimpleObjectProperty<>(keywordDelimiter)); } @@ -167,6 +173,10 @@ public void setKeyPattern(GlobalCitationKeyPattern keyPattern) { this.keyPattern.set(keyPattern); } + public String getDefaultPattern() { + return defaultPattern; + } + public Character getKeywordDelimiter() { return keywordDelimiter.get(); } diff --git a/src/main/java/org/jabref/migrations/PreferencesMigrations.java b/src/main/java/org/jabref/migrations/PreferencesMigrations.java index 38b185c7143..8901d0369db 100644 --- a/src/main/java/org/jabref/migrations/PreferencesMigrations.java +++ b/src/main/java/org/jabref/migrations/PreferencesMigrations.java @@ -306,6 +306,7 @@ private static void migrateTypedKeyPrefs(JabRefPreferences prefs, Preferences ol for (String key : oldPatternPrefs.keys()) { keyPattern.addCitationKeyPattern(EntryTypeFactory.parse(key), oldPatternPrefs.get(key, null)); } + prefs.storeGlobalCitationKeyPattern(keyPattern); } diff --git a/src/main/java/org/jabref/preferences/JabRefPreferences.java b/src/main/java/org/jabref/preferences/JabRefPreferences.java index 674ed650c2d..fcf7a41cdec 100644 --- a/src/main/java/org/jabref/preferences/JabRefPreferences.java +++ b/src/main/java/org/jabref/preferences/JabRefPreferences.java @@ -258,8 +258,6 @@ public class JabRefPreferences implements PreferencesService { public static final String GROBID_OPT_OUT = "grobidOptOut"; public static final String GROBID_URL = "grobidURL"; - // Currently, it is not possible to specify defaults for specific entry types - // When this should be made possible, the code to inspect is org.jabref.gui.preferences.CitationKeyPatternPrefTab.storeSettings() -> LabelPattern keypatterns = getCiteKeyPattern(); etc public static final String DEFAULT_CITATION_KEY_PATTERN = "defaultBibtexKeyPattern"; public static final String UNWANTED_CITATION_KEY_CHARACTERS = "defaultUnwantedBibtexKeyCharacters"; public static final String CONFIRM_DELETE = "confirmDelete"; @@ -423,7 +421,6 @@ public class JabRefPreferences implements PreferencesService { private OwnerPreferences ownerPreferences; private TimestampPreferences timestampPreferences; - private GlobalCitationKeyPattern globalCitationKeyPattern; private Map> entryEditorTabList; private List mainTableColumns; private List mainTableColumnSortOrder; @@ -1166,12 +1163,6 @@ public String getPreviewStyle() { return get(PREVIEW_STYLE); } - @Override - @Deprecated - public String getDefaultsDefaultCitationKeyPattern() { - return (String) defaults.get(DEFAULT_CITATION_KEY_PATTERN); - } - //************************************************************************************************************* // CustomEntryTypes // @@ -1609,60 +1600,41 @@ public SSLPreferences getSSLPreferences() { // CitationKeyPatternPreferences //************************************************************************************************************* - /** - * Creates the GlobalCitationKeyPattern from cache - * - * @return GlobalCitationKeyPattern containing all keys without a parent AbstractCitationKeyPattern - */ - @Override - public GlobalCitationKeyPattern getGlobalCitationKeyPattern() { - if (this.globalCitationKeyPattern == null) { - updateGlobalCitationKeyPattern(); - } - return this.globalCitationKeyPattern; - } - - /** - * Reloads the GlobalCitationKeyPattern from scratch to cache - */ - @Override - public void updateGlobalCitationKeyPattern() { - this.globalCitationKeyPattern = GlobalCitationKeyPattern.fromPattern(get(DEFAULT_CITATION_KEY_PATTERN)); + private GlobalCitationKeyPattern getGlobalCitationKeyPattern() { + GlobalCitationKeyPattern citationKeyPattern = GlobalCitationKeyPattern.fromPattern(get(DEFAULT_CITATION_KEY_PATTERN)); Preferences preferences = PREFS_NODE.node(CITATION_KEY_PATTERNS_NODE); try { String[] keys = preferences.keys(); if (keys.length > 0) { for (String key : keys) { - this.globalCitationKeyPattern.addCitationKeyPattern( + citationKeyPattern.addCitationKeyPattern( EntryTypeFactory.parse(key), preferences.get(key, null)); } } - } catch (BackingStoreException ex) { + } catch ( + BackingStoreException ex) { LOGGER.info("BackingStoreException in JabRefPreferences.getKeyPattern", ex); } + + return citationKeyPattern; } - /** - * Stores the given key pattern in the preferences - * - * @param pattern the pattern to store - */ + // public for use in PreferenceMigrations public void storeGlobalCitationKeyPattern(GlobalCitationKeyPattern pattern) { - this.globalCitationKeyPattern = pattern; - - if ((this.globalCitationKeyPattern.getDefaultValue() == null) - || this.globalCitationKeyPattern.getDefaultValue().isEmpty()) { + if ((pattern.getDefaultValue() == null) + || pattern.getDefaultValue().isEmpty()) { put(DEFAULT_CITATION_KEY_PATTERN, ""); } else { - put(DEFAULT_CITATION_KEY_PATTERN, globalCitationKeyPattern.getDefaultValue().get(0)); + put(DEFAULT_CITATION_KEY_PATTERN, pattern.getDefaultValue().get(0)); } // Store overridden definitions to Preferences. Preferences preferences = PREFS_NODE.node(CITATION_KEY_PATTERNS_NODE); try { preferences.clear(); // We remove all old entries. - } catch (BackingStoreException ex) { + } catch ( + BackingStoreException ex) { LOGGER.info("BackingStoreException in JabRefPreferences::putKeyPattern", ex); } @@ -1672,14 +1644,12 @@ public void storeGlobalCitationKeyPattern(GlobalCitationKeyPattern pattern) { preferences.put(entryType.getName(), pattern.getValue(entryType).get(0)); } } - - updateGlobalCitationKeyPattern(); } private void clearCitationKeyPatterns() throws BackingStoreException { Preferences preferences = PREFS_NODE.node(CITATION_KEY_PATTERNS_NODE); preferences.clear(); - updateGlobalCitationKeyPattern(); + getCitationKeyPatternPreferences().setKeyPattern(getGlobalCitationKeyPattern()); } @Override @@ -1705,6 +1675,7 @@ public CitationKeyPatternPreferences getCitationKeyPatternPreferences() { get(KEY_PATTERN_REPLACEMENT), get(UNWANTED_CITATION_KEY_CHARACTERS), getGlobalCitationKeyPattern(), + (String) defaults.get(DEFAULT_CITATION_KEY_PATTERN), getBibEntryPreferences().keywordSeparatorProperty()); EasyBind.listen(citationKeyPatternPreferences.shouldAvoidOverwriteCiteKeyProperty(), diff --git a/src/main/java/org/jabref/preferences/PreferencesService.java b/src/main/java/org/jabref/preferences/PreferencesService.java index e6c4d5c7420..dfc07f50d54 100644 --- a/src/main/java/org/jabref/preferences/PreferencesService.java +++ b/src/main/java/org/jabref/preferences/PreferencesService.java @@ -18,7 +18,6 @@ import org.jabref.logic.bibtex.FieldContentFormatterPreferences; import org.jabref.logic.bibtex.FieldWriterPreferences; import org.jabref.logic.citationkeypattern.CitationKeyPatternPreferences; -import org.jabref.logic.citationkeypattern.GlobalCitationKeyPattern; import org.jabref.logic.exporter.SavePreferences; import org.jabref.logic.exporter.TemplateExporter; import org.jabref.logic.importer.ImportFormatPreferences; @@ -103,9 +102,6 @@ public interface PreferencesService { CleanupPreferences getDefaultCleanupPreset(); - @Deprecated - String getDefaultsDefaultCitationKeyPattern(); - //************************************************************************************************************* // GeneralPreferences //************************************************************************************************************* @@ -150,10 +146,6 @@ public interface PreferencesService { // CitationKeyPatternPreferences //************************************************************************************************************* - GlobalCitationKeyPattern getGlobalCitationKeyPattern(); - - void updateGlobalCitationKeyPattern(); - CitationKeyPatternPreferences getCitationKeyPatternPreferences(); //************************************************************************************************************* From 9af7c48f2cf4faa3c4b7182b5b05dd9f89dd9840 Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Tue, 20 Dec 2022 00:40:02 +0100 Subject: [PATCH 3/4] Fixed tests --- .../logic/citationkeypattern/CitationKeyGeneratorTest.java | 2 ++ .../logic/citationkeypattern/MakeLabelWithDatabaseTest.java | 6 ++++++ .../citationkeypattern/MakeLabelWithoutDatabaseTest.java | 1 + src/test/java/org/jabref/logic/crawler/CrawlerTest.java | 1 + .../java/org/jabref/logic/crawler/StudyRepositoryTest.java | 1 + .../java/org/jabref/logic/integrity/IntegrityCheckTest.java | 4 ++-- 6 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/jabref/logic/citationkeypattern/CitationKeyGeneratorTest.java b/src/test/java/org/jabref/logic/citationkeypattern/CitationKeyGeneratorTest.java index 626563158c2..bf021584be2 100644 --- a/src/test/java/org/jabref/logic/citationkeypattern/CitationKeyGeneratorTest.java +++ b/src/test/java/org/jabref/logic/citationkeypattern/CitationKeyGeneratorTest.java @@ -89,6 +89,7 @@ static String generateKey(BibEntry entry, String pattern, BibDatabase database) "", DEFAULT_UNWANTED_CHARACTERS, keyPattern, + "", ','); return new CitationKeyGenerator(keyPattern, database, patternPreferences).generateKey(entry); @@ -1121,6 +1122,7 @@ void generateKeyDoesNotModifyTheKeyWithIncorrectRegexReplacement() { "", DEFAULT_UNWANTED_CHARACTERS, keyPattern, + "", ','); BibEntry bibEntry = new BibEntry().withField(StandardField.TITLE, "Wickedness Managing"); diff --git a/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithDatabaseTest.java b/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithDatabaseTest.java index 82cd8334182..ed37c618b02 100644 --- a/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithDatabaseTest.java +++ b/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithDatabaseTest.java @@ -40,6 +40,7 @@ void setUp() { "", DEFAULT_UNWANTED_CHARACTERS, pattern, + "", ','); } @@ -71,6 +72,7 @@ void generateDefaultKeyAlwaysLetter() { "", DEFAULT_UNWANTED_CHARACTERS, pattern, + "", ','); new CitationKeyGenerator(bibtexKeyPattern, database, preferences).generateAndSetKey(entry); @@ -88,6 +90,7 @@ void generateDefaultKeyAlwaysLetterAlreadyExistsDuplicatesStartAtB() { "", DEFAULT_UNWANTED_CHARACTERS, pattern, + "", ','); CitationKeyGenerator keyGenerator = new CitationKeyGenerator(bibtexKeyPattern, database, preferences); @@ -110,6 +113,7 @@ void generateDefaultKeyStartDuplicatesAtB() { "", DEFAULT_UNWANTED_CHARACTERS, pattern, + "", ','); new CitationKeyGenerator(bibtexKeyPattern, database, preferences).generateAndSetKey(entry); @@ -127,6 +131,7 @@ void generateDefaultKeyAlreadyExistsDuplicatesStartAtB() { "", DEFAULT_UNWANTED_CHARACTERS, pattern, + "", ','); CitationKeyGenerator keyGenerator = new CitationKeyGenerator(bibtexKeyPattern, database, preferences); @@ -427,6 +432,7 @@ void generateKeyRegExReplace() { "3", DEFAULT_UNWANTED_CHARACTERS, pattern, + "", ','); bibtexKeyPattern.setDefaultValue("[auth][year]"); diff --git a/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithoutDatabaseTest.java b/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithoutDatabaseTest.java index 5bbb266c20b..bb7a8bffda5 100644 --- a/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithoutDatabaseTest.java +++ b/src/test/java/org/jabref/logic/citationkeypattern/MakeLabelWithoutDatabaseTest.java @@ -30,6 +30,7 @@ void setUp() { "", CitationKeyGenerator.DEFAULT_UNWANTED_CHARACTERS, keyPattern, + "", new SimpleObjectProperty<>(',')); citationKeyGenerator = new CitationKeyGenerator(keyPattern, new BibDatabase(), patternPreferences); diff --git a/src/test/java/org/jabref/logic/crawler/CrawlerTest.java b/src/test/java/org/jabref/logic/crawler/CrawlerTest.java index a16d3b4469d..ef6928fbe79 100644 --- a/src/test/java/org/jabref/logic/crawler/CrawlerTest.java +++ b/src/test/java/org/jabref/logic/crawler/CrawlerTest.java @@ -91,6 +91,7 @@ private void setUp() throws Exception { "", DEFAULT_UNWANTED_CHARACTERS, GlobalCitationKeyPattern.fromPattern("[auth][year]"), + "", ','); importFormatPreferences = mock(ImportFormatPreferences.class, Answers.RETURNS_DEEP_STUBS); diff --git a/src/test/java/org/jabref/logic/crawler/StudyRepositoryTest.java b/src/test/java/org/jabref/logic/crawler/StudyRepositoryTest.java index 5c6c14983d6..425c0acb50a 100644 --- a/src/test/java/org/jabref/logic/crawler/StudyRepositoryTest.java +++ b/src/test/java/org/jabref/logic/crawler/StudyRepositoryTest.java @@ -82,6 +82,7 @@ public void setUpMocks() throws Exception { "", DEFAULT_UNWANTED_CHARACTERS, GlobalCitationKeyPattern.fromPattern("[auth][year]"), + "", ','); when(savePreferences.getSaveOrder()).thenReturn(new SaveOrderConfig()); when(savePreferences.takeMetadataSaveOrderInAccount()).thenReturn(true); diff --git a/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java b/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java index 8f0a1cac867..5ce25cb42a7 100644 --- a/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java +++ b/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java @@ -189,7 +189,6 @@ private void assertCorrect(BibDatabaseContext context) { } private CitationKeyPatternPreferences createCitationKeyPatternPreferences() { - final GlobalCitationKeyPattern keyPattern = GlobalCitationKeyPattern.fromPattern("[auth][year]"); return new CitationKeyPatternPreferences( false, false, @@ -198,7 +197,8 @@ private CitationKeyPatternPreferences createCitationKeyPatternPreferences() { "", "", CitationKeyGenerator.DEFAULT_UNWANTED_CHARACTERS, - keyPattern, + GlobalCitationKeyPattern.fromPattern("[auth][year]"), + "", ','); } From 11ad398ad0e8544b7320e9aa7bf7f0f67ba0c1b8 Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Tue, 20 Dec 2022 01:06:57 +0100 Subject: [PATCH 4/4] Reduced scope of PreferencesService --- .../commonfxcontrols/CitationKeyPatternPanel.java | 2 +- .../CitationKeyPatternPanelViewModel.java | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanel.java b/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanel.java index 22384672656..1fd7e1cbc8a 100644 --- a/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanel.java +++ b/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanel.java @@ -45,7 +45,7 @@ public CitationKeyPatternPanel() { @FXML private void initialize() { - viewModel = new CitationKeyPatternPanelViewModel(preferences); + viewModel = new CitationKeyPatternPanelViewModel(preferences.getCitationKeyPatternPreferences()); this.setEditable(true); diff --git a/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanelViewModel.java b/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanelViewModel.java index 40d83334328..e592ef19a7c 100644 --- a/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanelViewModel.java +++ b/src/main/java/org/jabref/gui/commonfxcontrols/CitationKeyPatternPanelViewModel.java @@ -10,10 +10,10 @@ import javafx.collections.FXCollections; import org.jabref.logic.citationkeypattern.AbstractCitationKeyPattern; +import org.jabref.logic.citationkeypattern.CitationKeyPatternPreferences; import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibEntryType; import org.jabref.model.entry.types.EntryType; -import org.jabref.preferences.PreferencesService; public class CitationKeyPatternPanelViewModel { @@ -37,10 +37,10 @@ public class CitationKeyPatternPanelViewModel { private final ListProperty patternListProperty = new SimpleListProperty<>(); private final ObjectProperty defaultItemProperty = new SimpleObjectProperty<>(); - private final PreferencesService preferences; + private final CitationKeyPatternPreferences keyPatternPreferences; - public CitationKeyPatternPanelViewModel(PreferencesService preferences) { - this.preferences = preferences; + public CitationKeyPatternPanelViewModel(CitationKeyPatternPreferences keyPatternPreferences) { + this.keyPatternPreferences = keyPatternPreferences; } public void setValues(Collection entryTypeList, AbstractCitationKeyPattern initialKeyPattern) { @@ -69,12 +69,12 @@ public void setValues(Collection entryTypeList, AbstractCitationKe } public void setItemToDefaultPattern(CitationKeyPatternPanelItemModel item) { - item.setPattern(preferences.getCitationKeyPatternPreferences().getDefaultPattern()); + item.setPattern(keyPatternPreferences.getDefaultPattern()); } public void resetAll() { patternListProperty.forEach(item -> item.setPattern("")); - defaultItemProperty.getValue().setPattern(preferences.getCitationKeyPatternPreferences().getDefaultPattern()); + defaultItemProperty.getValue().setPattern(keyPatternPreferences.getDefaultPattern()); } public ListProperty patternListProperty() {