Verified Owner
Top Description Inners Fields Constructors Methods
org.jabref.logic.preferences

public Class JabRefCliPreferences

extends Object
implements CliPreferences
Class Inheritance
All Implemented Interfaces
org.jabref.logic.preferences.CliPreferences
Annotations
@Singleton
Imports
java.io.IOException, .InputStream, .OutputStream, java.nio.file.Files, .Path, java.util.ArrayList, .Arrays, .Collection, .EnumSet, .HashMap, .HashSet, .List, .Locale, .Map, .Objects, .Optional, .SequencedSet, .Set, .TreeSet, java.util.function.BooleanSupplier, .Consumer, .Function, .Supplier, java.util.prefs.BackingStoreException, .InvalidPreferencesFormatException, .Preferences, java.util.stream.Collectors, javafx.beans.InvalidationListener, .Observable, javafx.beans.property.BooleanProperty, .DoubleProperty, .IntegerProperty, .ObjectProperty, .Property, .StringProperty, javafx.beans.value.ChangeListener, javafx.collections.ListChangeListener, .MapChangeListener, .ObservableList, .ObservableMap, .ObservableSet, org.jabref.logic.FilePreferences, .InternalPreferences, .JabRefException, .LibraryPreferences, org.jabref.logic.ai.preferences.AiPreferences, org.jabref.logic.bibtex.FieldPreferences, org.jabref.logic.citationkeypattern.CitationKeyPattern, .CitationKeyPatternPreferences, .GlobalCitationKeyPatterns, org.jabref.logic.citationstyle.CSLStyleLoader, .CSLStyleUtils, org.jabref.logic.cleanup.CleanupPreferences, .FieldFormatterCleanupActions, .FieldFormatterCleanupMapper, org.jabref.logic.exporter.BibDatabaseWriter, .ExportPreferences, .MetaDataSerializer, .SelfContainedSaveConfiguration, .TemplateExporter, org.jabref.logic.git.preferences.GitPreferences, org.jabref.logic.importer.ImportException, .ImporterPreferences, org.jabref.logic.importer.fileformat.CustomImporter, org.jabref.logic.importer.plaincitation.PlainCitationParserChoice, org.jabref.logic.importer.util.GrobidPreferences, .MetaDataParser, org.jabref.logic.journals.AbbreviationPreferences, .JournalAbbreviationLoader, .JournalAbbreviationRepository, org.jabref.logic.l10n.Language, .Localization, org.jabref.logic.layout.LayoutFormatterPreferences, org.jabref.logic.layout.format.NameFormatterPreferences, org.jabref.logic.net.ProxyPreferences, org.jabref.logic.net.ssl.SSLPreferences, .TrustStoreManager, org.jabref.logic.ocr.EngineSelection, .OcrLanguage, .OcrPreferences, .PagesWithTextHandling, org.jabref.logic.openoffice.OpenOfficePreferences, org.jabref.logic.openoffice.style.BstCitationFormat, .BstStyle, .JStyle, .OOStyle, org.jabref.logic.os.OS, org.jabref.logic.protectedterms.ProtectedTermsPreferences, org.jabref.logic.push.CitationCommandString, .PushApplications, .PushToApplicationPreferences, org.jabref.logic.remote.RemotePreferences, org.jabref.logic.search.SearchPreferences, org.jabref.logic.shared.prefs.SharedDatabasePreferences, org.jabref.logic.shared.security.Password, org.jabref.logic.util.Version, org.jabref.logic.util.io.AutoLinkPreferences, .FileHistory, org.jabref.logic.util.strings.StringUtil, org.jabref.logic.xmp.XmpPreferences, org.jabref.model.ai.llm.AiProvider, org.jabref.model.ai.pipeline.DocumentSplitterKind, .ResponseEngineKind, org.jabref.model.ai.summarization.SummarizatorKind, org.jabref.model.ai.tokenization.TokenEstimatorKind, org.jabref.model.database.BibDatabaseMode, org.jabref.model.entry.BibEntryPreferences, .BibEntryType, .BibEntryTypesManager, org.jabref.model.entry.field.Field, .FieldFactory, org.jabref.model.entry.types.EntryType, .EntryTypeFactory, org.jabref.model.metadata.SaveOrder, .SelfContainedSaveOrder, org.jabref.model.openoffice.style.CitationType, org.jabref.model.search.SearchDisplayMode, .SearchFlags, com.github.javakeyring.Keyring, .PasswordAccessException, com.google.common.annotations.VisibleForTesting, com.google.common.base.Splitter, com.tobiasdiez.easybind.EasyBind, jakarta.inject.Singleton, org.jspecify.annotations.NonNull, .Nullable, org.slf4j.Logger, .LoggerFactory

The JabRefPreferences class provides the preferences and their defaults using the JDK java.util.prefs class.

Internally it defines symbols used to pick a value from the java.util.prefs interface and keeps a hashmap with all the default values.

There are still some similar preferences classes (OpenOfficePreferences and SharedDatabasePreferences) which also use the java.util.prefs API.

contents of the defaults HashMap that are defined in this class. There are more default parameters in this map which belong to separate preference classes.

This class is injected into formatter using reflection to avoid tight coupling and is easier than injecting via constructor due to amount of refactoring

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static record
JabRefCliPreferences.KeyringSlot

Identifies a single secret in the system keyring by its service and account.

private static record

Field Summary

Modifier and TypeField and Description
private AbbreviationPreferences
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private AiPreferences
private final List<JabRefCliPreferences.PreferenceBinding>
public static final String
private AutoLinkPreferences
private static final String
private static final String
private BibEntryPreferences
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
private CitationKeyPatternPreferences
public static final String
public static final String
public static final String
private CleanupPreferences
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
private DOIPreferences
public static final String
private static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
private static final int
private static final int
private static final int
private ExportPreferences
private static final String
private static final String
private static final String
private static final String
private FieldPreferences
private FilePreferences
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private GitPreferences
public static final String
public static final String
public static final String
private GrobidPreferences
public static final String
public static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private ImporterPreferences
private InternalPreferences
public static final String
public static final String
private static final String
private static final String
private static final String
public static final String
private LastFilesOpenedPreferences
public static final String
public static final String
public static final String
public static final String
public static final String
private LibraryPreferences
libraryPreferences

Cache variables

private static final Logger
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
private NameFormatterPreferences
public static final String
private static final String
private static final String
private static final String
private OcrPreferences
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
OO_EXECUTABLE_PATH

The OpenOffice/LibreOffice connection preferences are: OO_PATH main directory for OO/LO installation, used to detect location on Win/macOS when using manual connect OO_EXECUTABLE_PATH path to soffice-file OO_JARS_PATH directory that contains juh.jar, jurt.jar, ridl.jar, unoil.jar OO_SYNC_WHEN_CITING true if the reference list is updated when adding a new citation OO_SHOW_PANEL true if the OO panel is shown on startup OO_USE_ALL_OPEN_DATABASES true if all databases should be used when citing OO_BIBLIOGRAPHY_STYLE_FILE path to the used style file OO_EXTERNAL_STYLE_FILES list with paths to external style files STYLES__ size and position of "Select style" dialog

public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
private OpenOfficePreferences
public static final String
public static final String
public static final String
private OwnerPreferences
private static final String
private static final String
private static final Preferences
private static final String
private static final String
private static final String
private static final String
private ProtectedTermsPreferences
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private ProxyPreferences
private static final Map<PushApplications, String>
private static final String
PUSH_APPLICATIONS_PATHS_KEY

Synthetic registry key: command paths are persisted under per-application keys (see PUSH_APPLICATIONS_PATHS), not under this key

private static final String
private static final String
private static final String
private static final String
private PushToApplicationPreferences
private static final String
private RemotePreferences
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
public static final String
private SearchPreferences
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static final String
private static JabRefCliPreferences
private static final String
private SSLPreferences
public static final Character
public static final String
public static final String
public static final String
public static final String
public static final String
private TimestampPreferences
private static final String
public static final String
public static final String
public static final String
public static final String
private XmpPreferences

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private void
addEntryTypesFromPreferences(Preferences prefsNode, Map<String, BibEntryType> storedEntryTypes, boolean allowOverWrite, String versionLabel)

protected void
bindBoolean(BooleanProperty property, String key, boolean defaultValue)

protected void
bindBooleanInverted(BooleanProperty property, String key, boolean defaultValue)

Binds a boolean persisted inverted: the backing store holds !property.

protected <T> void
bindCustom(Property<T> property, String key, T defaultValue, ChangeListener<? super T>
writes value changes to the backing store
persistListener
,
Runnable
loads the stored value (or the default) into the property
importFromStore
,
Runnable
restores the property to its default value
resetToDefaults
)

General binding primitive that all scalar bind* helpers delegate to.

protected <T> void
bindCustomList(ObservableList<T> list, String
the binding's reporting key in getPreferences() and getDefaults()
key
,
List<T>
restored on reset and reported as the default
defaultList
,
Consumer<? super ObservableList<T>>
rewrites the whole list to the backing store; receives the bound list, runs on every change
persist
,
Supplier<? extends Collection<? extends T>>
reads the stored list, falling back to defaultList for absent entries
loadFromStore
)

Binds an observable list with caller-supplied persistence; the general primitive behind the other bindCustomList.

private <T> void
bindCustomList(ObservableList<T> list, String key, List<T> defaultList, Function<List<T>, String>
converts the list to its stored String form
serializer
,
Function<String, ? extends Collection<T>>
reconstructs the list elements from their stored String form
deserializer
)

Binds an observable list persisted as a single String.

protected void
bindDouble(DoubleProperty property, String key, double defaultValue)

protected final <T> void
bindExclusiveFlags(ObjectProperty<T> property, T
reported as the default, restored on reset, and returned on load when no flag was ever stored
defaultValue
,
T
the value owning no key, encoded as all flags false
implicitValue
,
Map.Entry<String, T>...
the backing-store key for each non-implicit value, in load lookup order (first match wins)
flags
)

Binds an enum-valued property persisted as a set of mutually exclusive boolean keys, one per flag.

protected void
bindInt(IntegerProperty property, String key, int defaultValue)

protected <K, V> void
bindMap(ObservableMap<K, V> map, String key, Map<K, V> defaultMap, MapChangeListener<? super K, ? super V>
persists individual entry changes to the backing store
serializer
,
Function<Map<K, V>, Map<K, V>>
reads the stored map, falling back to defaultMap for missing entries
deserializer
)

Binds a map-valued property.

protected <T> void
bindObject(ObjectProperty<T> property, String key, T defaultValue, Function<T, String>
converts a value to its stored String form
serializer
,
Function<String, T>
reconstructs a value from its stored String form
deserializer
)

Binds an object-valued property persisted as a String.

private void
bindPath(ObjectProperty<@Nullable Path> property, String key, @Nullable Path defaultValue)

Binds a path-valued property persisted as a String (null as "").

protected void
bindPathList(ObservableList<Path> list, String
the binding's reporting key in getPreferences() and getDefaults()
key
,
List<Path>
restored on reset and reported as the default
defaultList
)

Binds an observable list of paths persisted as a single delimited String (each path via Path#toString, read back via Path#of).

protected <T> void
bindSet(ObservableSet<T> set, String
the binding's reporting key in getPreferences() and getDefaults()
key
,
Set<T>
restored on reset and reported as the default
defaultSet
,
Consumer<? super ObservableSet<T>>
rewrites the whole set to the backing store; receives the bound set, runs on every change
serializer
,
Supplier<? extends Collection<? extends T>>
reads the stored set, falling back to defaultSet for absent entries
deserializer
)

Binds an observable set; the set counterpart of the primitive bindCustomList.

protected void
bindString(StringProperty property, String key, String defaultValue)

private void
bindToKeyring(StringProperty property, JabRefCliPreferences.KeyringSlot
the keyring location to write to
slot
,
BooleanSupplier
gate evaluated on every change; the value is written only while it returns true
shouldPersist
)

Persist-only binding for secrets kept in the system keyring rather than the backing store.

public void
clear()

Implements org.jabref.logic.preferences.CliPreferences.clear.

Clear all preferences.

private void
private void
private void
private void
private void
pack-priv static String
pack-priv static List<String>
public void
deleteKey(String key)

Implements org.jabref.logic.preferences.CliPreferences.deleteKey.

Removes the given key from the preferences.

public void
exportPreferences(Path
Path to export to
path
)

Implements org.jabref.logic.preferences.CliPreferences.exportPreferences.

Exports Preferences to an XML file.

public void
flush()

Implements org.jabref.logic.preferences.CliPreferences.flush.

Calling this method will write all preferences into the preference store.

public String
get(String key, String def)

public AbbreviationPreferences
public AiPreferences
public AutoLinkPreferences
public BibEntryPreferences
private List<BibEntryType>
public boolean
getBoolean(String key, boolean def)

private BstCitationFormat
public CitationKeyPatternPreferences
private CitationType
private Set<CleanupPreferences.CleanupStep>
private FieldFormatterCleanupActions
public CleanupPreferences
private OOStyle
getCurrentOOStyle(OOStyle defaultStyle, JournalAbbreviationRepository journalAbbreviationRepository)

Reconstructs the persisted OOStyle from its stored path: a CSL style file becomes a org.jabref.logic.citationstyle.CitationStyle, otherwise Handles CSL (.csl), BST (.bst), and JStyle (.jstyle) files.

public BibEntryTypesManager
private List<TemplateExporter>
private Set<CustomImporter>
protected Path
private PlainCitationParserChoice
public Map<String, Object>
public DOIPreferences
public double
getDouble(String key, double def)

public ExportPreferences
protected SaveOrder
private Set<FetcherApiKey>
private List<String>
getFetcherKeysFromKeyring(List<String> names)

Reads the stored API keys aligned to names order ("" where a key is absent), or an empty list if the keyring is unavailable, so the caller falls back to default keys on a size mismatch.

public FieldPreferences
public SequencedSet<Field>
getFieldSequencedSet(String key, ObservableSet<Field> def)

Returns a Sequenced Set of Fields.

public FilePreferences
public GitPreferences
private @NonNull GlobalCitationKeyPatterns
public GrobidPreferences
public ImporterPreferences
public static JabRefCliPreferences
getInstance()
Deprecated Never ever add a call to this method.

public int
getInt(String key, int def)

public InternalPreferences
protected Language
public LastFilesOpenedPreferences
public LibraryPreferences
public NameFormatterPreferences
private Object
getObject(Observable observable)

public OcrPreferences
public OpenOfficePreferences
public OwnerPreferences
private Path
getPath(String key, Path defaultValue)

Returns a Path

public Map<String, Object>
private static Preferences
private static Preferences
public ProtectedTermsPreferences
public ProxyPreferences
public PushToApplicationPreferences
public RemotePreferences
private Set<SearchFlags>
public SearchPreferences
public SelfContainedSaveConfiguration
protected List<String>
getSeries(String key)

Returns a list of Strings stored by key+N with N being an incrementing number

public SSLPreferences
public List<String>
getStringList(String key)

Returns a List of Strings containing the chosen columns.

public TimestampPreferences
public XmpPreferences
private Set<Field>
public boolean

Returns:

true if the key is set, false otherwise.
hasKey
(String
The key to check.
key
)

Check whether a key is set (differently from null).

public void
importPreferences(Path
Path of file to import from
path
)

Implements org.jabref.logic.preferences.CliPreferences.importPreferences.

Imports Preferences from an XML file.

private static void
protected void
initializeAll()

Instantiates every preference group so its bindings are registered in allBindings before a bulk reset/import runs.

private void
private void
protected boolean
protected void
purgeSeries(String prefix, int
or higher.
number
)

Removes all entries keyed by prefix+number, where number is equal to or higher than the given number.

public void
put(String key, String value)

public void
putBoolean(String key, boolean value)

public void
putDouble(String key, double value)

public void
putInt(String key, int value)

public void
putInt(String key, Number value)

public void
putStringList(String key, List<String> value)

Puts a list of strings into the Preferences, by linking its elements with a STRINGLIST_DELIMITER into a single string.

protected final <T> T

Returns:

the stored enum value, or defaultValue/implicitValue per the rules above
readExclusiveFlags
(T
returned when none of the flag keys exist
defaultValue
,
T
returned when all flag keys are stored false
implicitValue
,
Map.Entry<String, T>...
the backing-store key for each non-implicit value, in lookup order (first match wins)
flags
)

Reads an enum persisted as mutually exclusive boolean keys (see bindExclusiveFlags).

private Optional<String>
readKeyring(JabRefCliPreferences.KeyringSlot slot)

Reads the secret at a single slot, or empty if it is absent/blank or the keyring is unavailable.

private Map<JabRefCliPreferences.KeyringSlot, String>
readKeyring(List<JabRefCliPreferences.KeyringSlot> slots)

Reads and decrypts the secrets at the given slots in a single keyring session.

private Map<String, String>
readPushToApplicationPath(Map<String, String> defaults)

An empty string is used as the default value to ensure that an installation of a tool leads to the new path (instead of leaving the empty one).

protected void
private void
storeBibEntryTypes(Collection<BibEntryType> bibEntryTypes, BibDatabaseMode bibDatabaseMode)

public void
private void
private void
private void
private void
public void
private void
private void
writeKeyring(JabRefCliPreferences.KeyringSlot slot, String secret)

Writes (or, for a blank secret, clears) a single slot.

private void
writeKeyring(Map<JabRefCliPreferences.KeyringSlot, String> secrets)

Encrypts and writes each secret to its slot in a single keyring session.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait