From c2f5ea52a28b45359d88da5c90bdde841de117b9 Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Sat, 29 Jun 2019 18:40:48 +0200 Subject: [PATCH 01/21] Introduce interface for fields --- .../jabref/cli/CrossrefFetcherEvaluator.java | 4 +- src/main/java/org/jabref/gui/BasePanel.java | 31 +- src/main/java/org/jabref/gui/JabRefFrame.java | 8 +- .../gui/SaveOrderConfigDisplayView.java | 7 +- .../gui/SaveOrderConfigDisplayViewModel.java | 50 +- .../AutoCompletePreferences.java | 9 +- .../BibEntrySuggestionProvider.java | 3 +- .../FieldValueSuggestionProvider.java | 9 +- .../JournalsSuggestionProvider.java | 6 +- .../PersonNameSuggestionProvider.java | 9 +- .../autocompleter/SuggestionProviders.java | 29 +- .../autocompleter/WordSuggestionProvider.java | 9 +- .../gui/cleanup/CleanupPresetPanel.java | 4 +- .../cleanup/FieldFormatterCleanupsPanel.java | 17 +- .../gui/collab/EntryChangeViewModel.java | 11 +- .../ContentSelectorDialogViewModel.java | 14 +- .../org/jabref/gui/desktop/JabRefDesktop.java | 34 +- .../gui/edit/CopyBibTeXKeyAndLinkAction.java | 4 +- .../jabref/gui/entryeditor/EntryEditor.java | 7 +- .../entryeditor/EntryEditorPreferences.java | 7 +- .../gui/entryeditor/FieldsEditorTab.java | 49 +- .../jabref/gui/entryeditor/MathSciNetTab.java | 4 +- .../gui/entryeditor/OptionalFields2Tab.java | 3 +- .../gui/entryeditor/OtherFieldsTab.java | 17 +- .../gui/entryeditor/RelatedArticlesTab.java | 14 +- .../gui/entryeditor/RequiredFieldsTab.java | 3 +- .../org/jabref/gui/entryeditor/SourceTab.java | 9 +- .../fileannotationtab/FileAnnotationTab.java | 4 +- .../externalfiles/AutoSetFileLinksUtil.java | 6 +- .../gui/externalfiles/ImportHandler.java | 4 +- .../fieldeditors/AbstractEditorViewModel.java | 17 +- .../gui/fieldeditors/BibtexKeyEditor.java | 5 +- .../BibtexKeyEditorViewModel.java | 5 +- .../jabref/gui/fieldeditors/DateEditor.java | 5 +- .../gui/fieldeditors/DateEditorViewModel.java | 5 +- .../EditorTypeEditorViewModel.java | 5 +- .../jabref/gui/fieldeditors/FieldEditors.java | 61 +-- .../gui/fieldeditors/FieldNameLabel.java | 6 +- .../fieldeditors/GenderEditorViewModel.java | 5 +- .../gui/fieldeditors/IdentifierEditor.java | 13 +- .../IdentifierEditorViewModel.java | 18 +- .../gui/fieldeditors/JournalEditor.java | 5 +- .../fieldeditors/JournalEditorViewModel.java | 7 +- .../gui/fieldeditors/KeywordsEditor.java | 5 +- .../gui/fieldeditors/LinkedEntriesEditor.java | 5 +- .../LinkedEntriesEditorViewModel.java | 5 +- .../gui/fieldeditors/LinkedFilesEditor.java | 5 +- .../LinkedFilesEditorViewModel.java | 7 +- .../fieldeditors/MapBasedEditorViewModel.java | 5 +- .../fieldeditors/MonthEditorViewModel.java | 5 +- .../gui/fieldeditors/MultilineEditor.java | 5 +- .../fieldeditors/OptionEditorViewModel.java | 5 +- .../jabref/gui/fieldeditors/OwnerEditor.java | 5 +- .../fieldeditors/OwnerEditorViewModel.java | 5 +- .../PaginationEditorViewModel.java | 5 +- .../PatentTypeEditorViewModel.java | 5 +- .../gui/fieldeditors/PersonsEditor.java | 5 +- .../fieldeditors/PersonsEditorViewModel.java | 5 +- .../jabref/gui/fieldeditors/SimpleEditor.java | 10 +- .../fieldeditors/SimpleEditorViewModel.java | 5 +- .../gui/fieldeditors/TypeEditorViewModel.java | 5 +- .../jabref/gui/fieldeditors/UrlEditor.java | 5 +- .../gui/fieldeditors/UrlEditorViewModel.java | 5 +- .../fieldeditors/YesNoEditorViewModel.java | 5 +- .../org/jabref/gui/groups/GroupDialog.java | 4 +- .../gui/groups/WarnAssignmentSideEffects.java | 5 +- .../gui/importer/ImportEntriesDialog.java | 12 +- .../gui/integrity/IntegrityCheckDialog.java | 4 +- .../gui/journals/UnabbreviateAction.java | 3 +- .../gui/journals/UndoableUnabbreviator.java | 13 +- .../gui/maintable/BibEntryTableViewModel.java | 16 +- .../org/jabref/gui/maintable/CellFactory.java | 49 +- .../gui/maintable/ColumnPreferences.java | 2 +- .../gui/maintable/MainTableColumnFactory.java | 67 +-- .../gui/maintable/NormalTableColumn.java | 11 +- .../jabref/gui/maintable/RightClickMenu.java | 15 +- .../gui/mergeentries/FetchAndMergeEntry.java | 23 +- .../jabref/gui/mergeentries/MergeEntries.java | 26 +- .../MergeWithFetchedEntryAction.java | 9 +- .../org/jabref/gui/openoffice/OOBibBase.java | 12 +- .../gui/preferences/FileTabViewModel.java | 6 +- .../gui/specialfields/SpecialFieldAction.java | 2 +- .../specialfields/SpecialFieldDropDown.java | 4 +- .../SpecialFieldMenuItemFactory.java | 4 +- .../SpecialFieldUpdateListener.java | 8 +- .../SpecialFieldValueViewModel.java | 2 +- .../specialfields/SpecialFieldViewModel.java | 4 +- .../jabref/gui/undo/UndoableFieldChange.java | 9 +- .../logic/auxparser/DefaultAuxParser.java | 4 +- .../jabref/logic/bibtex/BibEntryWriter.java | 5 +- .../jabref/logic/bibtex/DuplicateCheck.java | 18 +- .../logic/bibtex/FieldContentParser.java | 22 +- .../bibtex/FieldContentParserPreferences.java | 9 +- .../logic/bibtex/LatexFieldFormatter.java | 32 +- .../LatexFieldFormatterPreferences.java | 11 +- .../bibtex/comparator/BibDatabaseDiff.java | 8 +- .../comparator/CrossRefEntryComparator.java | 6 +- .../bibtex/comparator/EntryComparator.java | 4 +- .../bibtex/comparator/FieldComparator.java | 12 +- .../bibtexkeypattern/BracketedPattern.java | 67 +-- src/main/java/org/jabref/logic/bst/VM.java | 13 +- .../logic/citationstyle/CSLAdapter.java | 9 +- .../org/jabref/logic/cleanup/Cleanups.java | 24 +- .../cleanup/ConvertToBiblatexCleanup.java | 12 +- .../logic/cleanup/ConvertToBibtexCleanup.java | 12 +- .../org/jabref/logic/cleanup/DoiCleanup.java | 22 +- .../jabref/logic/cleanup/EprintCleanup.java | 14 +- .../logic/cleanup/FileLinksCleanup.java | 8 +- .../org/jabref/logic/cleanup/ISSNCleanup.java | 8 +- .../logic/cleanup/MoveFieldCleanup.java | 7 +- .../cleanup/UpgradePdfPsToFileCleanup.java | 12 +- .../logic/exporter/BibDatabaseWriter.java | 3 +- .../logic/exporter/BibTeXMLExporter.java | 24 +- .../logic/exporter/BibtexDatabaseWriter.java | 3 +- .../logic/exporter/MetaDataSerializer.java | 2 +- .../jabref/logic/exporter/ModsExporter.java | 134 +++-- .../jabref/logic/exporter/OOCalcDatabase.java | 73 +-- .../exporter/OpenDocumentRepresentation.java | 73 +-- .../importer/EntryBasedParserFetcher.java | 2 +- .../logic/importer/FulltextFetchers.java | 8 +- .../logic/importer/IdBasedParserFetcher.java | 2 +- .../logic/importer/IdParserFetcher.java | 2 +- .../importer/SearchBasedParserFetcher.java | 2 +- .../jabref/logic/importer/WebFetchers.java | 36 +- .../jabref/logic/importer/fetcher/ACS.java | 4 +- .../jabref/logic/importer/fetcher/ArXiv.java | 30 +- .../fetcher/AstrophysicsDataSystem.java | 16 +- .../logic/importer/fetcher/CiteSeer.java | 7 +- .../logic/importer/fetcher/CrossRef.java | 34 +- .../logic/importer/fetcher/DBLPFetcher.java | 4 +- .../logic/importer/fetcher/DOAJFetcher.java | 22 +- .../logic/importer/fetcher/DoiFetcher.java | 8 +- .../logic/importer/fetcher/DoiResolution.java | 4 +- .../logic/importer/fetcher/GoogleScholar.java | 6 +- .../jabref/logic/importer/fetcher/IEEE.java | 38 +- .../importer/fetcher/INSPIREFetcher.java | 4 +- .../importer/fetcher/IacrEprintFetcher.java | 14 +- .../logic/importer/fetcher/IsbnFetcher.java | 4 +- .../fetcher/IsbnViaChimboriFetcher.java | 2 +- .../fetcher/IsbnViaEbookDeFetcher.java | 12 +- .../logic/importer/fetcher/MathSciNet.java | 18 +- .../importer/fetcher/MedlineFetcher.java | 6 +- .../logic/importer/fetcher/MrDLibFetcher.java | 4 +- .../logic/importer/fetcher/OpenAccessDoi.java | 6 +- .../logic/importer/fetcher/ScienceDirect.java | 4 +- .../importer/fetcher/SpringerFetcher.java | 28 +- .../logic/importer/fetcher/SpringerLink.java | 4 +- .../logic/importer/fetcher/TitleFetcher.java | 4 +- .../jabref/logic/importer/fetcher/ZbMATH.java | 11 +- .../importer/fileformat/BibTeXMLImporter.java | 18 +- .../fileformat/BiblioscapeImporter.java | 55 +- .../importer/fileformat/BibtexParser.java | 4 +- .../importer/fileformat/CoinsParser.java | 18 +- .../importer/fileformat/CopacImporter.java | 18 +- .../importer/fileformat/EndnoteImporter.java | 51 +- .../fileformat/EndnoteXmlImporter.java | 26 +- .../importer/fileformat/FreeCiteImporter.java | 45 +- .../logic/importer/fileformat/GvkParser.java | 45 +- .../importer/fileformat/InspecImporter.java | 20 +- .../importer/fileformat/IsiImporter.java | 38 +- .../importer/fileformat/MedlineImporter.java | 65 +-- .../fileformat/MedlinePlainImporter.java | 63 +-- .../importer/fileformat/ModsImporter.java | 42 +- .../importer/fileformat/MrDLibImporter.java | 12 +- .../importer/fileformat/OvidImporter.java | 103 ++-- .../fileformat/PdfContentImporter.java | 30 +- .../importer/fileformat/RepecNepImporter.java | 18 +- .../importer/fileformat/RisImporter.java | 82 +-- .../fileformat/SilverPlatterImporter.java | 37 +- .../logic/importer/util/IdentifierParser.java | 26 +- .../logic/integrity/BibtexKeyChecker.java | 11 +- .../BibtexKeyDuplicationChecker.java | 4 +- .../integrity/BibtexkeyDeviationChecker.java | 3 +- .../jabref/logic/integrity/FieldChecker.java | 5 +- .../jabref/logic/integrity/FieldCheckers.java | 61 +-- .../logic/integrity/IntegrityCheck.java | 6 +- .../logic/integrity/IntegrityMessage.java | 19 +- .../JournalInAbbreviationListChecker.java | 5 +- .../logic/integrity/NoBibtexFieldChecker.java | 10 +- .../jabref/logic/integrity/TypeChecker.java | 6 +- .../org/jabref/logic/layout/LayoutEntry.java | 9 +- .../layout/format/CreateDocBook4Authors.java | 4 +- .../layout/format/CreateDocBook4Editors.java | 4 +- .../layout/format/CreateDocBook5Authors.java | 4 +- .../layout/format/CreateDocBook5Editors.java | 4 +- .../jabref/logic/msbib/BibTeXConverter.java | 32 +- .../jabref/logic/msbib/MSBibConverter.java | 58 +-- .../org/jabref/logic/msbib/MSBibMapping.java | 111 +++-- .../jabref/logic/openoffice/OOBibStyle.java | 11 +- .../openoffice/UndefinedBibtexEntry.java | 4 +- .../jabref/logic/shared/DBMSProcessor.java | 26 +- .../jabref/logic/shared/DBMSSynchronizer.java | 7 +- .../specialfields/SpecialFieldsUtils.java | 16 +- .../java/org/jabref/logic/util/TestEntry.java | 50 +- .../org/jabref/logic/util/UpdateField.java | 8 +- .../xmp/DocumentInformationExtractor.java | 13 +- .../jabref/logic/xmp/DublinCoreExtractor.java | 36 +- .../org/jabref/logic/xmp/XmpUtilWriter.java | 24 +- .../migrations/ConvertMarkingToGroups.java | 6 +- .../MergeReviewIntoCommentMigration.java | 30 +- .../migrations/PreferencesMigrations.java | 14 +- .../java/org/jabref/model/FieldChange.java | 17 +- .../model/cleanup/FieldFormatterCleanup.java | 28 +- .../model/cleanup/FieldFormatterCleanups.java | 7 +- .../jabref/model/database/BibDatabase.java | 11 +- .../model/database/BibDatabaseContext.java | 11 +- .../model/database/DuplicationChecker.java | 3 +- .../model/database/KeyChangeListener.java | 3 +- .../database/event/CoarseChangeFilter.java | 7 +- .../java/org/jabref/model/entry/BibEntry.java | 253 +++++----- .../model/entry/BiblatexEntryTypes.java | 468 +++++++++--------- .../jabref/model/entry/BibtexEntryTypes.java | 65 +-- .../model/entry/CanonicalBibtexEntry.java | 11 +- .../jabref/model/entry/CustomEntryType.java | 7 +- .../jabref/model/entry/EntryConverter.java | 23 +- .../org/jabref/model/entry/EntryType.java | 32 +- .../org/jabref/model/entry/FieldName.java | 199 -------- .../model/entry/IEEETranEntryTypes.java | 40 +- .../model/entry/InternalBibtexFields.java | 178 +++---- .../model/entry/event/FieldChangedEvent.java | 21 +- .../org/jabref/model/entry/field/Field.java | 28 ++ .../model/entry/field/FieldFactory.java | 52 ++ .../jabref/model/entry/field/IEEEField.java | 39 ++ .../model/entry/field/InternalField.java | 40 ++ .../SpecialField.java | 47 +- .../SpecialFieldValue.java | 8 +- .../model/entry/field/StandardField.java | 153 ++++++ .../model/entry/field/UnknownField.java | 14 + .../entry/identifier/ArXivIdentifier.java | 7 +- .../jabref/model/entry/identifier/DOI.java | 7 +- .../jabref/model/entry/identifier/Eprint.java | 7 +- .../jabref/model/entry/identifier/ISBN.java | 7 +- .../model/entry/identifier/Identifier.java | 4 +- .../model/entry/identifier/MathSciNetId.java | 7 +- .../jabref/model/groups/ExplicitGroup.java | 8 +- .../jabref/model/groups/WordKeywordGroup.java | 3 +- .../model/metadata/ContentSelector.java | 20 +- .../model/metadata/ContentSelectors.java | 40 +- .../model/metadata/FilePreferences.java | 11 +- .../org/jabref/model/metadata/MetaData.java | 9 +- .../model/metadata/SaveOrderConfig.java | 13 +- .../search/rules/GrammarBasedSearchRule.java | 3 +- .../search/rules/RegexBasedSearchRule.java | 3 +- .../org/jabref/model/util/OptionalUtil.java | 6 +- .../jabref/preferences/JabRefPreferences.java | 62 +-- .../gui/groups/GroupNodeViewModelTest.java | 4 +- .../gui/groups/GroupTreeViewModelTest.java | 7 +- .../logic/bibtex/DuplicateCheckTest.java | 148 +++--- .../CrossRefEntryComparatorTest.java | 10 +- .../BibtexKeyGeneratorTest.java | 34 +- .../CitationStyleGeneratorTest.java | 6 +- .../cleanup/ConvertToBiblatexCleanupTest.java | 18 +- .../cleanup/ConvertToBibtexCleanupTest.java | 20 +- .../cleanup/FieldFormatterCleanupTest.java | 24 +- .../logic/exporter/DocBook5ExporterTest.java | 8 +- .../logic/importer/fetcher/ArXivTest.java | 12 +- .../fetcher/AstrophysicsDataSystemTest.java | 6 +- .../importer/fetcher/DBLPFetcherTest.java | 16 +- .../importer/fetcher/GoogleScholarTest.java | 12 +- .../logic/importer/fetcher/IEEETest.java | 4 +- .../fetcher/IacrEprintFetcherTest.java | 76 +-- .../importer/fetcher/MedlineFetcherTest.java | 12 +- .../importer/fetcher/MrDLibFetcherTest.java | 28 +- .../importer/fileformat/BibtexParserTest.java | 11 +- .../fileformat/MrDLibImporterTest.java | 6 +- .../fileformat/PdfContentImporterTest.java | 6 +- .../pdf/EntryAnnotationImporterTest.java | 4 +- .../jabref/logic/search/SearchQueryTest.java | 8 +- .../specialfields/SpecialFieldsUtilsTest.java | 8 +- .../logic/util/BracketedPatternTest.java | 14 +- .../jabref/logic/xmp/XmpUtilWriterTest.java | 4 +- .../ConvertMarkingToGroupsTest.java | 6 +- ...eReviewIntoCommentActionMigrationTest.java | 22 +- .../java/org/jabref/model/EntryTypesTest.java | 4 +- .../model/database/KeyChangeListenerTest.java | 11 +- .../org/jabref/model/entry/BibEntryTest.java | 7 +- .../org/jabref/model/entry/BibEntryTests.java | 8 +- .../jabref/model/entry/EntryLinkListTest.java | 5 +- ...ldNameTest.java => StandardFieldTest.java} | 8 +- .../SpecialFieldTest.java | 6 +- .../model/groups/ExplicitGroupTest.java | 28 +- .../model/groups/WordKeywordGroupTest.java | 20 +- 282 files changed, 3107 insertions(+), 2884 deletions(-) delete mode 100644 src/main/java/org/jabref/model/entry/FieldName.java create mode 100644 src/main/java/org/jabref/model/entry/field/Field.java create mode 100644 src/main/java/org/jabref/model/entry/field/FieldFactory.java create mode 100644 src/main/java/org/jabref/model/entry/field/IEEEField.java create mode 100644 src/main/java/org/jabref/model/entry/field/InternalField.java rename src/main/java/org/jabref/model/entry/{specialfields => field}/SpecialField.java (68%) rename src/main/java/org/jabref/model/entry/{specialfields => field}/SpecialFieldValue.java (95%) create mode 100644 src/main/java/org/jabref/model/entry/field/StandardField.java create mode 100644 src/main/java/org/jabref/model/entry/field/UnknownField.java rename src/test/java/org/jabref/model/entry/{FieldNameTest.java => StandardFieldTest.java} (51%) rename src/test/java/org/jabref/model/entry/{specialfields => field}/SpecialFieldTest.java (77%) diff --git a/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java b/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java index 2713698933d..69641fa60c7 100644 --- a/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java +++ b/src/main/java/org/jabref/cli/CrossrefFetcherEvaluator.java @@ -16,7 +16,7 @@ import org.jabref.logic.importer.fileformat.BibtexParser; import org.jabref.model.database.BibDatabase; import org.jabref.model.entry.BibEntry; -import org.jabref.model.entry.FieldName; +import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.identifier.DOI; import org.jabref.preferences.JabRefPreferences; @@ -53,7 +53,7 @@ public static void main(String[] args) throws IOException, InterruptedException @Override public void run() { - Optional origDOI = entry.getField(FieldName.DOI).flatMap(DOI::parse); + Optional origDOI = entry.getField(StandardField.DOI).flatMap(DOI::parse); if (origDOI.isPresent()) { dois.incrementAndGet(); try { diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index d64f2226ff0..54b09db4a57 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -92,13 +92,14 @@ import org.jabref.model.database.shared.DatabaseLocation; import org.jabref.model.database.shared.DatabaseSynchronizer; import org.jabref.model.entry.BibEntry; -import org.jabref.model.entry.FieldName; import org.jabref.model.entry.InternalBibtexFields; import org.jabref.model.entry.LinkedFile; import org.jabref.model.entry.event.EntryChangedEvent; import org.jabref.model.entry.event.EntryEventSource; -import org.jabref.model.entry.specialfields.SpecialField; -import org.jabref.model.entry.specialfields.SpecialFieldValue; +import org.jabref.model.entry.field.Field; +import org.jabref.model.entry.field.SpecialField; +import org.jabref.model.entry.field.SpecialFieldValue; +import org.jabref.model.entry.field.StandardField; import org.jabref.preferences.JabRefPreferences; import org.jabref.preferences.PreviewPreferences; @@ -573,13 +574,13 @@ private void openExternalFile() { } JabRefExecutorService.INSTANCE.execute(() -> { final BibEntry entry = selectedEntries.get(0); - if (!entry.hasField(FieldName.FILE)) { + if (!entry.hasField(StandardField.FILE)) { // no bibtex field new SearchAndOpenFile(entry, BasePanel.this).searchAndOpen(); return; } FileListTableModel fileListTableModel = new FileListTableModel(); - entry.getField(FieldName.FILE).ifPresent(fileListTableModel::setContent); + entry.getField(StandardField.FILE).ifPresent(fileListTableModel::setContent); if (fileListTableModel.getRowCount() == 0) { // content in BibTeX field is not readable new SearchAndOpenFile(entry, BasePanel.this).searchAndOpen(); @@ -650,11 +651,11 @@ public void insertEntry(final BibEntry bibEntry) { } } - public void editEntryAndFocusField(BibEntry entry, String fieldName) { + public void editEntryAndFocusField(BibEntry entry, Field field) { showAndEdit(entry); Platform.runLater(() -> { // Focus field and entry in main table (async to give entry editor time to load) - entryEditor.setFocusToField(fieldName); + entryEditor.setFocusToField(field); clearAndSelect(entry); }); } @@ -1300,11 +1301,11 @@ private class OpenURLAction implements BaseAction { public void action() { final List bes = mainTable.getSelectedEntries(); if (bes.size() == 1) { - String field = FieldName.DOI; - Optional link = bes.get(0).getField(FieldName.DOI); - if (bes.get(0).hasField(FieldName.URL)) { - link = bes.get(0).getField(FieldName.URL); - field = FieldName.URL; + Field field = StandardField.DOI; + Optional link = bes.get(0).getField(StandardField.DOI); + if (bes.get(0).hasField(StandardField.URL)) { + link = bes.get(0).getField(StandardField.URL); + field = StandardField.URL; } if (link.isPresent()) { try { @@ -1320,9 +1321,9 @@ public void action() { List files = bes.get(0).getFiles(); Optional linkedFile = files.stream() - .filter(file -> (FieldName.URL.equalsIgnoreCase(file.getFileType()) - || FieldName.PS.equalsIgnoreCase(file.getFileType()) - || FieldName.PDF.equalsIgnoreCase(file.getFileType()))) + .filter(file -> (StandardField.URL.getName().equalsIgnoreCase(file.getFileType()) + || StandardField.PS.getName().equalsIgnoreCase(file.getFileType()) + || StandardField.PDF.getName().equalsIgnoreCase(file.getFileType()))) .findFirst(); if (linkedFile.isPresent()) { diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 73f838d6315..ac5e32195c6 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -121,8 +121,8 @@ import org.jabref.model.database.shared.DatabaseLocation; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.BiblatexEntryTypes; -import org.jabref.model.entry.FieldName; -import org.jabref.model.entry.specialfields.SpecialField; +import org.jabref.model.entry.field.SpecialField; +import org.jabref.model.entry.field.StandardField; import org.jabref.preferences.JabRefPreferences; import org.jabref.preferences.LastFocusedTabPreferences; @@ -1085,7 +1085,7 @@ public void setProgressBarIndeterminate(final boolean value) { private boolean isExistFile(List selectEntryList) { if (selectEntryList.size() == 1) { BibEntry selectedEntry = selectEntryList.get(0); - return selectedEntry.getField(FieldName.FILE).isPresent(); + return selectedEntry.getField(StandardField.FILE).isPresent(); } return false; } @@ -1100,7 +1100,7 @@ private boolean isExistFile(List selectEntryList) { private boolean isExistURLorDOI(List selectEntryList) { if (selectEntryList.size() == 1) { BibEntry selectedEntry = selectEntryList.get(0); - return (selectedEntry.getField(FieldName.URL).isPresent() || selectedEntry.getField(FieldName.DOI).isPresent()); + return (selectedEntry.getField(StandardField.URL).isPresent() || selectedEntry.getField(StandardField.DOI).isPresent()); } return false; } diff --git a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java index aeca6f4ddad..2c4ef4c5f6f 100644 --- a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java +++ b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayView.java @@ -10,6 +10,7 @@ import javafx.scene.layout.GridPane; import org.jabref.logic.l10n.Localization; +import org.jabref.model.entry.field.Field; import org.jabref.model.metadata.SaveOrderConfig; import org.jabref.preferences.PreferencesService; @@ -20,9 +21,9 @@ public class SaveOrderConfigDisplayView extends GridPane { private final SaveOrderConfig config; @FXML private ToggleGroup saveOrderToggleGroup; - @FXML private ComboBox savePriSort; - @FXML private ComboBox saveSecSort; - @FXML private ComboBox saveTerSort; + @FXML private ComboBox savePriSort; + @FXML private ComboBox saveSecSort; + @FXML private ComboBox saveTerSort; @FXML private RadioButton exportInSpecifiedOrder; @FXML private RadioButton exportInTableOrder; @FXML private RadioButton exportInOriginalOrder; diff --git a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java index 0846ee4866c..cad3850f35c 100644 --- a/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java +++ b/src/main/java/org/jabref/gui/SaveOrderConfigDisplayViewModel.java @@ -2,36 +2,36 @@ import java.util.Collections; import java.util.List; -import java.util.Locale; import java.util.Objects; import javafx.beans.property.BooleanProperty; import javafx.beans.property.ListProperty; +import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleListProperty; -import javafx.beans.property.SimpleStringProperty; -import javafx.beans.property.StringProperty; +import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; -import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.InternalBibtexFields; +import org.jabref.model.entry.field.Field; +import org.jabref.model.entry.field.InternalField; import org.jabref.model.metadata.SaveOrderConfig; import org.jabref.model.metadata.SaveOrderConfig.SortCriterion; import org.jabref.preferences.PreferencesService; public class SaveOrderConfigDisplayViewModel { - private final ListProperty priSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList()); - private final ListProperty secSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList()); - private final ListProperty terSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList()); + private final ListProperty priSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList()); + private final ListProperty secSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList()); + private final ListProperty terSortFieldsProperty = new SimpleListProperty<>(FXCollections.observableArrayList()); private final BooleanProperty savePriDescPropertySelected = new SimpleBooleanProperty(); private final BooleanProperty saveSecDescPropertySelected = new SimpleBooleanProperty(); private final BooleanProperty saveTerDescPropertySelected = new SimpleBooleanProperty(); - private final StringProperty savePriSortSelectedValueProperty = new SimpleStringProperty(""); - private final StringProperty saveSecSortSelectedValueProperty = new SimpleStringProperty(""); - private final StringProperty saveTerSortSelectedValueProperty = new SimpleStringProperty(""); + private final ObjectProperty savePriSortSelectedValueProperty = new SimpleObjectProperty<>(null); + private final ObjectProperty saveSecSortSelectedValueProperty = new SimpleObjectProperty<>(null); + private final ObjectProperty saveTerSortSelectedValueProperty = new SimpleObjectProperty<>(null); private final BooleanProperty saveInOriginalProperty = new SimpleBooleanProperty(); private final BooleanProperty saveInTableOrderProperty = new SimpleBooleanProperty(); @@ -42,8 +42,8 @@ public class SaveOrderConfigDisplayViewModel { public SaveOrderConfigDisplayViewModel(SaveOrderConfig config, PreferencesService prefs) { this.prefs = prefs; - List fieldNames = InternalBibtexFields.getAllPublicFieldNames(); - fieldNames.add(BibEntry.KEY_FIELD); + List fieldNames = InternalBibtexFields.getAllPublicFieldNames(); + fieldNames.add(InternalField.KEY_FIELD); Collections.sort(fieldNames); priSortFieldsProperty.addAll(fieldNames); @@ -53,26 +53,24 @@ public SaveOrderConfigDisplayViewModel(SaveOrderConfig config, PreferencesServic setSaveOrderConfig(config); } - public ListProperty priSortFieldsProperty() { + public ListProperty priSortFieldsProperty() { return priSortFieldsProperty; } - public ListProperty secSortFieldsProperty() { + public ListProperty secSortFieldsProperty() { return secSortFieldsProperty; } - public ListProperty terSortFieldsProperty() { + public ListProperty terSortFieldsProperty() { return terSortFieldsProperty; } public SaveOrderConfig getSaveOrderConfig() { - SortCriterion primary = new SortCriterion(getSelectedItemAsLowerCaseTrim(savePriSortSelectedValueProperty), savePriDescPropertySelected.getValue()); - SortCriterion secondary = new SortCriterion(getSelectedItemAsLowerCaseTrim(saveSecSortSelectedValueProperty), saveSecDescPropertySelected.getValue()); - SortCriterion tertiary = new SortCriterion(getSelectedItemAsLowerCaseTrim(saveTerSortSelectedValueProperty), saveTerDescPropertySelected.getValue()); + SortCriterion primary = new SortCriterion(savePriSortSelectedValueProperty.get(), savePriDescPropertySelected.getValue()); + SortCriterion secondary = new SortCriterion(saveSecSortSelectedValueProperty.get(), saveSecDescPropertySelected.getValue()); + SortCriterion tertiary = new SortCriterion(saveTerSortSelectedValueProperty.get(), saveTerDescPropertySelected.getValue()); - SaveOrderConfig saveOrderConfig = new SaveOrderConfig(saveInOriginalProperty.getValue(), saveInSpecifiedOrderProperty.getValue(), primary, secondary, tertiary); - - return saveOrderConfig; + return new SaveOrderConfig(saveInOriginalProperty.getValue(), saveInSpecifiedOrderProperty.getValue(), primary, secondary, tertiary); } public void setSaveOrderConfig(SaveOrderConfig saveOrderConfig) { @@ -95,10 +93,6 @@ public void setSaveOrderConfig(SaveOrderConfig saveOrderConfig) { } - private String getSelectedItemAsLowerCaseTrim(StringProperty string) { - return string.getValue().toLowerCase(Locale.ROOT).trim(); - } - public BooleanProperty savePriDescPropertySelected() { return savePriDescPropertySelected; } @@ -111,15 +105,15 @@ public BooleanProperty saveTerDescPropertySelected() { return saveTerDescPropertySelected; } - public StringProperty savePriSortSelectedValueProperty() { + public ObjectProperty savePriSortSelectedValueProperty() { return savePriSortSelectedValueProperty; } - public StringProperty saveSecSortSelectedValueProperty() { + public ObjectProperty saveSecSortSelectedValueProperty() { return saveSecSortSelectedValueProperty; } - public StringProperty saveTerSortSelectedValueProperty() { + public ObjectProperty saveTerSortSelectedValueProperty() { return saveTerSortSelectedValueProperty; } diff --git a/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java b/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java index 1a54be767f1..8ecd616c1ac 100644 --- a/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java +++ b/src/main/java/org/jabref/gui/autocompleter/AutoCompletePreferences.java @@ -5,6 +5,7 @@ import java.util.stream.Collectors; import org.jabref.logic.journals.JournalAbbreviationPreferences; +import org.jabref.model.entry.field.Field; public class AutoCompletePreferences { @@ -13,10 +14,10 @@ public class AutoCompletePreferences { private AutoCompleteFirstNameMode firstNameMode; private boolean onlyCompleteLastFirst; private boolean onlyCompleteFirstLast; - private List completeFields; + private List completeFields; private final JournalAbbreviationPreferences journalAbbreviationPreferences; - public AutoCompletePreferences(boolean shouldAutoComplete, AutoCompleteFirstNameMode firstNameMode, boolean onlyCompleteLastFirst, boolean onlyCompleteFirstLast, List completeFields, JournalAbbreviationPreferences journalAbbreviationPreferences) { + public AutoCompletePreferences(boolean shouldAutoComplete, AutoCompleteFirstNameMode firstNameMode, boolean onlyCompleteLastFirst, boolean onlyCompleteFirstLast, List completeFields, JournalAbbreviationPreferences journalAbbreviationPreferences) { this.shouldAutoComplete = shouldAutoComplete; this.firstNameMode = firstNameMode; this.onlyCompleteLastFirst = onlyCompleteLastFirst; @@ -64,11 +65,11 @@ public void setOnlyCompleteFirstLast(boolean onlyCompleteFirstLast) { * Returns the list of fields for which autocomplete is enabled * @return List of field names */ - public List getCompleteFields() { + public List getCompleteFields() { return completeFields; } - public void setCompleteFields(List completeFields) { + public void setCompleteFields(List completeFields) { this.completeFields = completeFields; } diff --git a/src/main/java/org/jabref/gui/autocompleter/BibEntrySuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/BibEntrySuggestionProvider.java index db1e4546b6b..3a5ecbffae4 100644 --- a/src/main/java/org/jabref/gui/autocompleter/BibEntrySuggestionProvider.java +++ b/src/main/java/org/jabref/gui/autocompleter/BibEntrySuggestionProvider.java @@ -4,6 +4,7 @@ import org.jabref.logic.bibtex.comparator.EntryComparator; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.InternalField; import org.controlsfx.control.textfield.AutoCompletionBinding; @@ -23,7 +24,7 @@ public void indexEntry(BibEntry entry) { @Override protected Comparator getComparator() { - return new EntryComparator(false, true, BibEntry.KEY_FIELD); + return new EntryComparator(false, true, InternalField.KEY_FIELD); } @Override diff --git a/src/main/java/org/jabref/gui/autocompleter/FieldValueSuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/FieldValueSuggestionProvider.java index 871723b2cd7..87048951ec4 100644 --- a/src/main/java/org/jabref/gui/autocompleter/FieldValueSuggestionProvider.java +++ b/src/main/java/org/jabref/gui/autocompleter/FieldValueSuggestionProvider.java @@ -3,16 +3,17 @@ import java.util.Objects; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.Field; /** * Stores the full content of one field. */ class FieldValueSuggestionProvider extends StringSuggestionProvider implements AutoCompleteSuggestionProvider { - private final String fieldName; + private final Field field; - FieldValueSuggestionProvider(String fieldName) { - this.fieldName = Objects.requireNonNull(fieldName); + FieldValueSuggestionProvider(Field field) { + this.field = Objects.requireNonNull(field); } @Override @@ -21,6 +22,6 @@ public void indexEntry(BibEntry entry) { return; } - entry.getField(fieldName).ifPresent(fieldValue -> addPossibleSuggestions(fieldValue.trim())); + entry.getField(field).ifPresent(fieldValue -> addPossibleSuggestions(fieldValue.trim())); } } diff --git a/src/main/java/org/jabref/gui/autocompleter/JournalsSuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/JournalsSuggestionProvider.java index f0749e3c7c7..5e8b5c95f4d 100644 --- a/src/main/java/org/jabref/gui/autocompleter/JournalsSuggestionProvider.java +++ b/src/main/java/org/jabref/gui/autocompleter/JournalsSuggestionProvider.java @@ -6,13 +6,13 @@ import org.jabref.logic.journals.Abbreviation; import org.jabref.logic.journals.JournalAbbreviationLoader; import org.jabref.logic.journals.JournalAbbreviationPreferences; +import org.jabref.model.entry.field.Field; public class JournalsSuggestionProvider extends FieldValueSuggestionProvider { - - JournalsSuggestionProvider(String fieldName, AutoCompletePreferences preferences, + JournalsSuggestionProvider(Field field, AutoCompletePreferences preferences, JournalAbbreviationLoader abbreviationLoader) { - super(fieldName); + super(field); JournalAbbreviationPreferences journalAbbreviationPreferences = preferences.getJournalAbbreviationPreferences(); List journals = abbreviationLoader.getRepository(journalAbbreviationPreferences) diff --git a/src/main/java/org/jabref/gui/autocompleter/PersonNameSuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/PersonNameSuggestionProvider.java index 8182be6a33c..5ebdd35c0b1 100644 --- a/src/main/java/org/jabref/gui/autocompleter/PersonNameSuggestionProvider.java +++ b/src/main/java/org/jabref/gui/autocompleter/PersonNameSuggestionProvider.java @@ -8,6 +8,7 @@ import org.jabref.model.entry.Author; import org.jabref.model.entry.AuthorList; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.Field; import org.controlsfx.control.textfield.AutoCompletionBinding; @@ -16,14 +17,14 @@ */ public class PersonNameSuggestionProvider extends SuggestionProvider implements AutoCompleteSuggestionProvider { - private final List fieldNames; + private final List fieldNames; private final Comparator authorComparator = Comparator.comparing(Author::getNameForAlphabetization); - PersonNameSuggestionProvider(String fieldName) { + PersonNameSuggestionProvider(Field fieldName) { this(Collections.singletonList(Objects.requireNonNull(fieldName))); } - public PersonNameSuggestionProvider(List fieldNames) { + public PersonNameSuggestionProvider(List fieldNames) { super(); this.fieldNames = Objects.requireNonNull(fieldNames); @@ -36,7 +37,7 @@ public void indexEntry(BibEntry entry) { return; } - for (String fieldName : fieldNames) { + for (Field fieldName : fieldNames) { entry.getField(fieldName).ifPresent(fieldValue -> { AuthorList authorList = AuthorList.parse(fieldValue); for (Author author : authorList.getAuthors()) { diff --git a/src/main/java/org/jabref/gui/autocompleter/SuggestionProviders.java b/src/main/java/org/jabref/gui/autocompleter/SuggestionProviders.java index a4bf835a19b..aaf954b3ae5 100644 --- a/src/main/java/org/jabref/gui/autocompleter/SuggestionProviders.java +++ b/src/main/java/org/jabref/gui/autocompleter/SuggestionProviders.java @@ -8,16 +8,17 @@ import org.jabref.logic.journals.JournalAbbreviationLoader; import org.jabref.model.database.BibDatabase; import org.jabref.model.entry.BibEntry; -import org.jabref.model.entry.FieldName; import org.jabref.model.entry.FieldProperty; import org.jabref.model.entry.InternalBibtexFields; +import org.jabref.model.entry.field.Field; +import org.jabref.model.entry.field.StandardField; public class SuggestionProviders { /** * key: field name */ - private final Map> providers = new HashMap<>(); + private final Map> providers = new HashMap<>(); /** * Empty @@ -30,15 +31,15 @@ public SuggestionProviders(AutoCompletePreferences preferences, JournalAbbreviationLoader abbreviationLoader) { Objects.requireNonNull(preferences); - List completeFields = preferences.getCompleteFields(); - for (String field : completeFields) { + List completeFields = preferences.getCompleteFields(); + for (Field field : completeFields) { AutoCompleteSuggestionProvider autoCompleter = initalizeSuggestionProvider(field, preferences, abbreviationLoader); providers.put(field, autoCompleter); } } - public AutoCompleteSuggestionProvider getForField(String fieldName) { - return providers.get(fieldName); + public AutoCompleteSuggestionProvider getForField(Field field) { + return providers.get(field); } public void indexDatabase(BibDatabase database) { @@ -56,16 +57,16 @@ public void indexEntry(BibEntry bibEntry) { } } - private AutoCompleteSuggestionProvider initalizeSuggestionProvider(String fieldName, AutoCompletePreferences preferences, JournalAbbreviationLoader abbreviationLoader) { - if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.PERSON_NAMES)) { - return new PersonNameSuggestionProvider(fieldName); - } else if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.SINGLE_ENTRY_LINK)) { + private AutoCompleteSuggestionProvider initalizeSuggestionProvider(Field field, AutoCompletePreferences preferences, JournalAbbreviationLoader abbreviationLoader) { + if (InternalBibtexFields.getFieldProperties(field).contains(FieldProperty.PERSON_NAMES)) { + return new PersonNameSuggestionProvider(field); + } else if (InternalBibtexFields.getFieldProperties(field).contains(FieldProperty.SINGLE_ENTRY_LINK)) { return new BibEntrySuggestionProvider(); - } else if (InternalBibtexFields.getFieldProperties(fieldName).contains(FieldProperty.JOURNAL_NAME) - || FieldName.PUBLISHER.equals(fieldName)) { - return new JournalsSuggestionProvider(fieldName, preferences, abbreviationLoader); + } else if (InternalBibtexFields.getFieldProperties(field).contains(FieldProperty.JOURNAL_NAME) + || StandardField.PUBLISHER.equals(field)) { + return new JournalsSuggestionProvider(field, preferences, abbreviationLoader); } else { - return new WordSuggestionProvider(fieldName); + return new WordSuggestionProvider(field); } } } diff --git a/src/main/java/org/jabref/gui/autocompleter/WordSuggestionProvider.java b/src/main/java/org/jabref/gui/autocompleter/WordSuggestionProvider.java index 0f9c2ec56fa..a591d684a3b 100644 --- a/src/main/java/org/jabref/gui/autocompleter/WordSuggestionProvider.java +++ b/src/main/java/org/jabref/gui/autocompleter/WordSuggestionProvider.java @@ -4,6 +4,7 @@ import java.util.StringTokenizer; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.Field; /** * Stores all words in the given field which are separated by SEPARATING_CHARS. @@ -12,10 +13,10 @@ public class WordSuggestionProvider extends StringSuggestionProvider implements private static final String SEPARATING_CHARS = ";,\n "; - private final String fieldName; + private final Field field; - public WordSuggestionProvider(String fieldName) { - this.fieldName = Objects.requireNonNull(fieldName); + public WordSuggestionProvider(Field field) { + this.field = Objects.requireNonNull(field); } @Override @@ -24,7 +25,7 @@ public void indexEntry(BibEntry entry) { return; } - entry.getField(fieldName).ifPresent(fieldValue -> { + entry.getField(field).ifPresent(fieldValue -> { StringTokenizer tok = new StringTokenizer(fieldValue, SEPARATING_CHARS); while (tok.hasMoreTokens()) { addPossibleSuggestions(tok.nextToken()); diff --git a/src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java b/src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java index 9149ef4a5f0..14ddfdd4a7f 100644 --- a/src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java +++ b/src/main/java/org/jabref/gui/cleanup/CleanupPresetPanel.java @@ -15,7 +15,7 @@ import org.jabref.logic.cleanup.Cleanups; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; -import org.jabref.model.entry.FieldName; +import org.jabref.model.entry.field.StandardField; import org.jabref.model.metadata.FilePreferences; import com.airhacks.afterburner.views.ViewLoader; @@ -62,7 +62,7 @@ private void init(CleanupPreset cleanupPreset, FilePreferences filePreferences) cleanUpRenamePDFonlyRelativePaths.disableProperty().bind(cleanUpRenamePDF.selectedProperty().not()); - cleanUpUpgradeExternalLinks.setText(Localization.lang("Upgrade external PDF/PS links to use the '%0' field.", FieldName.FILE)); + cleanUpUpgradeExternalLinks.setText(Localization.lang("Upgrade external PDF/PS links to use the '%0' field.", StandardField.FILE)); cleanUpFormatters = new FieldFormatterCleanupsPanel(Localization.lang("Run field formatter:"), Cleanups.DEFAULT_SAVE_ACTIONS); formatterContainer.getChildren().setAll(cleanUpFormatters); diff --git a/src/main/java/org/jabref/gui/cleanup/FieldFormatterCleanupsPanel.java b/src/main/java/org/jabref/gui/cleanup/FieldFormatterCleanupsPanel.java index ab544366e0d..1790510f0ff 100644 --- a/src/main/java/org/jabref/gui/cleanup/FieldFormatterCleanupsPanel.java +++ b/src/main/java/org/jabref/gui/cleanup/FieldFormatterCleanupsPanel.java @@ -29,8 +29,9 @@ import org.jabref.model.cleanup.FieldFormatterCleanups; import org.jabref.model.cleanup.Formatter; import org.jabref.model.database.BibDatabaseContext; -import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.InternalBibtexFields; +import org.jabref.model.entry.field.Field; +import org.jabref.model.entry.field.InternalField; import org.jabref.model.metadata.MetaData; import org.fxmisc.easybind.EasyBind; @@ -42,7 +43,7 @@ public class FieldFormatterCleanupsPanel extends GridPane { private FieldFormatterCleanups fieldFormatterCleanups; private ListView actionsList; private ComboBox formattersCombobox; - private ComboBox selectFieldCombobox; + private ComboBox selectFieldCombobox; private Button addButton; private Label descriptionAreaText; private Button removeButton; @@ -161,10 +162,10 @@ private void updateDescription() { */ private GridPane getSelectorPanel() { GridPane builder = new GridPane(); - List fieldNames = InternalBibtexFields.getAllPublicAndInternalFieldNames(); - fieldNames.add(BibEntry.KEY_FIELD); - Collections.sort(fieldNames); - selectFieldCombobox = new ComboBox<>(FXCollections.observableArrayList(fieldNames)); + List fields = InternalBibtexFields.getAllPublicAndInternalFieldNames(); + fields.add(InternalField.KEY_FIELD); + Collections.sort(fields); + selectFieldCombobox = new ComboBox<>(FXCollections.observableArrayList(fields)); selectFieldCombobox.setEditable(true); builder.add(selectFieldCombobox, 1, 1); @@ -217,8 +218,8 @@ public boolean isDefaultSaveActions() { private FieldFormatterCleanup getFieldFormatterCleanup() { Formatter selectedFormatter = formattersCombobox.getValue(); - String fieldKey = selectFieldCombobox.getValue(); - return new FieldFormatterCleanup(fieldKey, selectedFormatter); + Field field = selectFieldCombobox.getValue(); + return new FieldFormatterCleanup(field, selectedFormatter); } class EnablementStatusListener implements ChangeListener { diff --git a/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java b/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java index fcad087163d..9aa3375dd16 100644 --- a/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java +++ b/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java @@ -16,6 +16,7 @@ import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.Field; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -43,12 +44,12 @@ public EntryChangeViewModel(BibEntry memEntry, BibEntry tmpEntry, BibEntry diskE LOGGER.debug("Modified entry: " + memEntry.getCiteKeyOptional().orElse("") + "\n Modified locally: " + isModifiedLocally + " Modifications agree: " + modificationsAgree); - Set allFields = new TreeSet<>(); + Set allFields = new TreeSet<>(); allFields.addAll(memEntry.getFieldNames()); allFields.addAll(tmpEntry.getFieldNames()); allFields.addAll(diskEntry.getFieldNames()); - for (String field : allFields) { + for (Field field : allFields) { Optional mem = memEntry.getField(field); Optional tmp = tmpEntry.getField(field); Optional disk = diskEntry.getField(field); @@ -94,13 +95,13 @@ static class FieldChangeViewModel extends DatabaseChangeViewModel { private final BibEntry entry; private final BibEntry tmpEntry; - private final String field; + private final Field field; private final String inMem; private final String onTmp; private final String onDisk; - public FieldChangeViewModel(String field, BibEntry memEntry, BibEntry tmpEntry, String inMem, String onTmp, String onDisk) { - super(field); + public FieldChangeViewModel(Field field, BibEntry memEntry, BibEntry tmpEntry, String inMem, String onTmp, String onDisk) { + super(field.getName()); entry = memEntry; this.tmpEntry = tmpEntry; this.field = field; diff --git a/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialogViewModel.java b/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialogViewModel.java index 4ee85925310..0732829eae1 100644 --- a/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialogViewModel.java +++ b/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialogViewModel.java @@ -21,7 +21,7 @@ import org.jabref.gui.BasePanel; import org.jabref.gui.DialogService; import org.jabref.logic.l10n.Localization; -import org.jabref.model.entry.FieldName; +import org.jabref.model.entry.field.StandardField; import org.jabref.model.metadata.ContentSelector; import org.jabref.model.metadata.MetaData; @@ -29,7 +29,7 @@ class ContentSelectorDialogViewModel extends AbstractViewModel { - private static final List DEFAULT_FIELD_NAMES = of(FieldName.AUTHOR, FieldName.JOURNAL, FieldName.KEYWORDS, FieldName.PUBLISHER); + private static final List DEFAULT_FIELD_NAMES = of(StandardField.AUTHOR, StandardField.JOURNAL, StandardField.KEYWORDS, StandardField.PUBLISHER); private final BasePanel basePanel; private final MetaData metaData; @@ -61,7 +61,7 @@ private void populateFieldNamesListWithValues() { private void populateFieldNameKeywordsMapWithExistingValues() { metaData.getContentSelectors().getContentSelectors().forEach( - existingContentSelector -> fieldNameKeywordsMap.put(existingContentSelector.getFieldName(), new ArrayList<>(existingContentSelector.getValues())) + existingContentSelector -> fieldNameKeywordsMap.put(existingContentSelector.getField(), new ArrayList<>(existingContentSelector.getValues())) ); } @@ -169,7 +169,7 @@ private void removeKeyword(String fieldName, String keywordToRemove) { } void saveChanges() { - List metaDataFieldNames = metaData.getContentSelectors().getFieldNamesWithSelectors(); + List metaDataFieldNames = metaData.getContentSelectors().getFieldsWithSelectors(); fieldNameKeywordsMap.forEach((fieldName, keywords) -> updateMetaDataContentSelector(metaDataFieldNames, fieldName, keywords)); List fieldNamesToRemove = filterFieldNamesToRemove(); @@ -181,9 +181,9 @@ void saveChanges() { private List filterFieldNamesToRemove() { Set newlyAddedKeywords = fieldNameKeywordsMap.keySet(); - return metaData.getContentSelectors().getFieldNamesWithSelectors().stream() - .filter(fieldName -> !newlyAddedKeywords.contains(fieldName)) - .collect(Collectors.toList()); + return metaData.getContentSelectors().getFieldsWithSelectors().stream() + .filter(fieldName -> !newlyAddedKeywords.contains(fieldName)) + .collect(Collectors.toList()); } private void updateMetaDataContentSelector(List existingFieldNames, String fieldName, List keywords) { diff --git a/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java b/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java index 40993772e54..366c77a564e 100644 --- a/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java +++ b/src/main/java/org/jabref/gui/desktop/JabRefDesktop.java @@ -22,7 +22,8 @@ import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.OS; import org.jabref.model.database.BibDatabaseContext; -import org.jabref.model.entry.FieldName; +import org.jabref.model.entry.field.Field; +import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.identifier.DOI; import org.jabref.model.entry.identifier.Eprint; import org.jabref.model.util.FileHelper; @@ -48,20 +49,19 @@ private JabRefDesktop() { /** * Open a http/pdf/ps viewer for the given link string. */ - public static void openExternalViewer(BibDatabaseContext databaseContext, String initialLink, - String initialFieldName) + public static void openExternalViewer(BibDatabaseContext databaseContext, String initialLink, Field initialField) throws IOException { String link = initialLink; - String fieldName = initialFieldName; - if (FieldName.PS.equals(fieldName) || FieldName.PDF.equals(fieldName)) { + Field field = initialField; + if (StandardField.PS.equals(field) || StandardField.PDF.equals(field)) { // Find the default directory for this field type: - List dir = databaseContext.getFileDirectories(fieldName, Globals.prefs.getFilePreferences()); + List dir = databaseContext.getFileDirectories(field.getName(), Globals.prefs.getFilePreferences()); Optional file = FileHelper.expandFilename(link, dir); // Check that the file exists: if (!file.isPresent() || !Files.exists(file.get())) { - throw new IOException("File not found (" + fieldName + "): '" + link + "'."); + throw new IOException("File not found (" + field + "): '" + link + "'."); } link = file.get().toAbsolutePath().toString(); @@ -69,32 +69,32 @@ public static void openExternalViewer(BibDatabaseContext databaseContext, String String[] split = file.get().getFileName().toString().split("\\."); if (split.length >= 2) { if ("pdf".equalsIgnoreCase(split[split.length - 1])) { - fieldName = FieldName.PDF; + field = StandardField.PDF; } else if ("ps".equalsIgnoreCase(split[split.length - 1]) || ((split.length >= 3) && "ps".equalsIgnoreCase(split[split.length - 2]))) { - fieldName = FieldName.PS; + field = StandardField.PS; } } - } else if (FieldName.DOI.equals(fieldName)) { + } else if (StandardField.DOI.equals(field)) { openDoi(link); return; - } else if (FieldName.EPRINT.equals(fieldName)) { + } else if (StandardField.EPRINT.equals(field)) { link = Eprint.build(link).map(Eprint::getURIAsASCIIString).orElse(link); // should be opened in browser - fieldName = FieldName.URL; + field = StandardField.URL; } - if (FieldName.URL.equals(fieldName)) { + if (StandardField.URL.equals(field)) { openBrowser(link); - } else if (FieldName.PS.equals(fieldName)) { + } else if (StandardField.PS.equals(field)) { try { - NATIVE_DESKTOP.openFile(link, FieldName.PS); + NATIVE_DESKTOP.openFile(link, StandardField.PS.getName()); } catch (IOException e) { LOGGER.error("An error occurred on the command: " + link, e); } - } else if (FieldName.PDF.equals(fieldName)) { + } else if (StandardField.PDF.equals(field)) { try { - NATIVE_DESKTOP.openFile(link, FieldName.PDF); + NATIVE_DESKTOP.openFile(link, StandardField.PDF.getName()); } catch (IOException e) { LOGGER.error("An error occurred on the command: " + link, e); } diff --git a/src/main/java/org/jabref/gui/edit/CopyBibTeXKeyAndLinkAction.java b/src/main/java/org/jabref/gui/edit/CopyBibTeXKeyAndLinkAction.java index 9b528d7d66a..86e0912400a 100644 --- a/src/main/java/org/jabref/gui/edit/CopyBibTeXKeyAndLinkAction.java +++ b/src/main/java/org/jabref/gui/edit/CopyBibTeXKeyAndLinkAction.java @@ -12,7 +12,7 @@ import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.OS; import org.jabref.model.entry.BibEntry; -import org.jabref.model.entry.FieldName; +import org.jabref.model.entry.field.StandardField; /** * This class will copy each selected entry's BibTeX key as a hyperlink to its url to the clipboard. @@ -44,7 +44,7 @@ public void action() throws Exception { for (BibEntry entry : entriesWithKey) { String key = entry.getCiteKeyOptional().get(); - String url = entry.getField(FieldName.URL).orElse(""); + String url = entry.getField(StandardField.URL).orElse(""); sb.append(url.isEmpty() ? key : String.format("%s", url, key)); sb.append(OS.NEWLINE); } diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java index 72fdf53f104..06cdd1f8a16 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java @@ -45,6 +45,7 @@ import org.jabref.logic.importer.WebFetchers; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.field.Field; import org.jabref.model.util.FileUpdateMonitor; import com.airhacks.afterburner.views.ViewLoader; @@ -384,13 +385,13 @@ private void fetchAndMerge(EntryBasedFetcher fetcher) { new FetchAndMergeEntry(panel, taskExecutor).fetchAndMerge(entry, fetcher); } - public void setFocusToField(String fieldName) { + public void setFocusToField(Field field) { DefaultTaskExecutor.runInJavaFXThread(() -> { for (Tab tab : tabbed.getTabs()) { - if ((tab instanceof FieldsEditorTab) && ((FieldsEditorTab) tab).getShownFields().contains(fieldName)) { + if ((tab instanceof FieldsEditorTab) && ((FieldsEditorTab) tab).getShownFields().contains(field)) { FieldsEditorTab fieldsEditorTab = (FieldsEditorTab) tab; tabbed.getSelectionModel().select(tab); - fieldsEditorTab.requestFocus(fieldName); + fieldsEditorTab.requestFocus(field); } } }); diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreferences.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreferences.java index ed059ab9f7f..d03a9d4d5a3 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreferences.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditorPreferences.java @@ -7,6 +7,7 @@ import org.jabref.logic.bibtex.LatexFieldFormatterPreferences; import org.jabref.logic.bibtexkeypattern.BibtexKeyPatternPreferences; import org.jabref.logic.importer.ImportFormatPreferences; +import org.jabref.model.entry.field.Field; public class EntryEditorPreferences { @@ -14,14 +15,14 @@ public class EntryEditorPreferences { private final LatexFieldFormatterPreferences latexFieldFormatterPreferences; private final ImportFormatPreferences importFormatPreferences; private final BibtexKeyPatternPreferences bibtexKeyPatternPreferences; - private final List customTabFieldNames; + private final List customTabFieldNames; private final boolean shouldShowRecommendationsTab; private final boolean isMrdlibAccepted; private boolean showSourceTabByDefault; private final KeyBindingRepository keyBindings; private boolean avoidOverwritingCiteKey; - public EntryEditorPreferences(Map> entryEditorTabList, LatexFieldFormatterPreferences latexFieldFormatterPreferences, ImportFormatPreferences importFormatPreferences, List customTabFieldNames, boolean shouldShowRecommendationsTab, boolean isMrdlibAccepted, boolean showSourceTabByDefault, BibtexKeyPatternPreferences bibtexKeyPatternPreferences, KeyBindingRepository keyBindings, boolean avoidOverwritingCiteKey) { + public EntryEditorPreferences(Map> entryEditorTabList, LatexFieldFormatterPreferences latexFieldFormatterPreferences, ImportFormatPreferences importFormatPreferences, List customTabFieldNames, boolean shouldShowRecommendationsTab, boolean isMrdlibAccepted, boolean showSourceTabByDefault, BibtexKeyPatternPreferences bibtexKeyPatternPreferences, KeyBindingRepository keyBindings, boolean avoidOverwritingCiteKey) { this.entryEditorTabList = entryEditorTabList; this.latexFieldFormatterPreferences = latexFieldFormatterPreferences; this.importFormatPreferences = importFormatPreferences; @@ -46,7 +47,7 @@ public ImportFormatPreferences getImportFormatPreferences() { return importFormatPreferences; } - public List getCustomTabFieldNames() { + public List getCustomTabFieldNames() { return customTabFieldNames; } diff --git a/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java b/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java index 26f22eb2b6f..1b925f7f847 100644 --- a/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/FieldsEditorTab.java @@ -34,23 +34,24 @@ import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.EntryType; -import org.jabref.model.entry.FieldName; import org.jabref.model.entry.FieldProperty; import org.jabref.model.entry.InternalBibtexFields; +import org.jabref.model.entry.field.Field; +import org.jabref.model.entry.field.StandardField; /** * A single tab displayed in the EntryEditor holding several FieldEditors. */ abstract class FieldsEditorTab extends EntryEditorTab { - private final Map editors = new LinkedHashMap<>(); + private final Map editors = new LinkedHashMap<>(); private final boolean isCompressed; private final SuggestionProviders suggestionProviders; private FieldEditorFX activeField; private final BibDatabaseContext databaseContext; private UndoManager undoManager; - private Collection fields = new ArrayList<>(); + private Collection fields = new ArrayList<>(); private final DialogService dialogService; private GridPane gridPane; @@ -87,19 +88,19 @@ private void setupPanel(BibEntry entry, boolean compressed, SuggestionProviders List