Skip to content

Commit 5cb70df

Browse files
authored
Clean up defintions of entry types (#11013)
* Clean up defintions of entry types Also reorderer to required/optionalImport/optionalDetail * More comments * Add "Publisher" * Adapt naming important/detail also to methods * Add test * Add log output when using customized type * Fix test method names * Add another test case * Fix names * Revert adding "publisher" to article * Reorder with... * Fix test
1 parent 2207b79 commit 5cb70df

22 files changed

+400
-262
lines changed

src/main/java/org/jabref/gui/entryeditor/OptionalFields2Tab.java renamed to src/main/java/org/jabref/gui/entryeditor/DetailOptionalFieldsTab.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@
1414
import org.jabref.model.entry.BibEntryTypesManager;
1515
import org.jabref.preferences.PreferencesService;
1616

17-
public class OptionalFields2Tab extends OptionalFieldsTabBase {
17+
public class DetailOptionalFieldsTab extends OptionalFieldsTabBase {
1818

1919
public static final String NAME = "Optional fields 2";
2020

21-
public OptionalFields2Tab(BibDatabaseContext databaseContext,
22-
SuggestionProviders suggestionProviders,
23-
UndoManager undoManager,
24-
DialogService dialogService,
25-
PreferencesService preferences,
26-
StateManager stateManager,
27-
ThemeManager themeManager,
28-
IndexingTaskManager indexingTaskManager,
29-
BibEntryTypesManager entryTypesManager,
30-
TaskExecutor taskExecutor,
31-
JournalAbbreviationRepository journalAbbreviationRepository) {
21+
public DetailOptionalFieldsTab(BibDatabaseContext databaseContext,
22+
SuggestionProviders suggestionProviders,
23+
UndoManager undoManager,
24+
DialogService dialogService,
25+
PreferencesService preferences,
26+
StateManager stateManager,
27+
ThemeManager themeManager,
28+
IndexingTaskManager indexingTaskManager,
29+
BibEntryTypesManager entryTypesManager,
30+
TaskExecutor taskExecutor,
31+
JournalAbbreviationRepository journalAbbreviationRepository) {
3232
super(
3333
Localization.lang("Optional fields 2"),
3434
false,

src/main/java/org/jabref/gui/entryeditor/EntryEditor.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -249,45 +249,45 @@ private void navigateToNextEntry() {
249249
private List<EntryEditorTab> createTabs() {
250250
entryEditorTabs.add(new PreviewTab(databaseContext, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), taskExecutor));
251251

252-
// Required, optional, deprecated, and "other" fields
252+
// Required, optional (important+detail), deprecated, and "other" fields
253253
entryEditorTabs.add(new RequiredFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), bibEntryTypesManager, taskExecutor, journalAbbreviationRepository));
254-
entryEditorTabs.add(new OptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), bibEntryTypesManager, taskExecutor, journalAbbreviationRepository));
255-
entryEditorTabs.add(new OptionalFields2Tab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), bibEntryTypesManager, taskExecutor, journalAbbreviationRepository));
254+
entryEditorTabs.add(new ImportantOptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), bibEntryTypesManager, taskExecutor, journalAbbreviationRepository));
255+
entryEditorTabs.add(new DetailOptionalFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), bibEntryTypesManager, taskExecutor, journalAbbreviationRepository));
256256
entryEditorTabs.add(new DeprecatedFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), bibEntryTypesManager, taskExecutor, journalAbbreviationRepository));
257257
entryEditorTabs.add(new OtherFieldsTab(databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), bibEntryTypesManager, taskExecutor, journalAbbreviationRepository));
258258

259259
// Comment Tab: Tab for general and user-specific comments
260260
entryEditorTabs.add(new CommentsTab(preferencesService, databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), taskExecutor, journalAbbreviationRepository));
261261

262-
// General fields from preferences
263-
// First, remove all tabs that are already handled above or below; except for the source tab (which has different titles for BibTeX and BibLaTeX mode)
262+
// The preferences allow to configure tabs to show (e.g.,"General", "Abstract")
263+
// These should be shown. Already hard-coded ones should be removed.
264264
Map<String, Set<Field>> entryEditorTabList = new HashMap<>(entryEditorPreferences.getEntryEditorTabs());
265265
entryEditorTabList.remove(PreviewTab.NAME);
266266
entryEditorTabList.remove(RequiredFieldsTab.NAME);
267-
entryEditorTabList.remove(OptionalFieldsTab.NAME);
268-
entryEditorTabList.remove(OptionalFields2Tab.NAME);
267+
entryEditorTabList.remove(ImportantOptionalFieldsTab.NAME);
268+
entryEditorTabList.remove(DetailOptionalFieldsTab.NAME);
269269
entryEditorTabList.remove(DeprecatedFieldsTab.NAME);
270+
entryEditorTabList.remove(OtherFieldsTab.NAME);
270271
entryEditorTabList.remove(CommentsTab.NAME);
271272
entryEditorTabList.remove(MathSciNetTab.NAME);
272273
entryEditorTabList.remove(FileAnnotationTab.NAME);
274+
entryEditorTabList.remove(SciteTab.NAME);
275+
// CitationRelationsTab
273276
entryEditorTabList.remove(RelatedArticlesTab.NAME);
277+
// SourceTab -- not listed, because it has different names for BibTeX and biblatex mode
274278
entryEditorTabList.remove(LatexCitationsTab.NAME);
275279
entryEditorTabList.remove(FulltextSearchResultsTab.NAME);
276-
entryEditorTabList.remove(SciteTab.NAME);
277-
entryEditorTabList.remove("Comments");
278-
// Then show the remaining configured
280+
279281
for (Map.Entry<String, Set<Field>> tab : entryEditorTabList.entrySet()) {
280282
entryEditorTabs.add(new UserDefinedFieldsTab(tab.getKey(), tab.getValue(), databaseContext, libraryTab.getSuggestionProviders(), undoManager, dialogService, preferencesService, stateManager, themeManager, libraryTab.getIndexingTaskManager(), taskExecutor, journalAbbreviationRepository));
281283
}
282284

283-
// "Special" tabs
284285
entryEditorTabs.add(new MathSciNetTab());
285286
entryEditorTabs.add(new FileAnnotationTab(libraryTab.getAnnotationCache()));
286287
entryEditorTabs.add(new SciteTab(preferencesService, taskExecutor, dialogService));
287288
entryEditorTabs.add(new CitationRelationsTab(entryEditorPreferences, dialogService, databaseContext,
288289
undoManager, stateManager, fileMonitor, preferencesService, libraryTab, taskExecutor));
289290
entryEditorTabs.add(new RelatedArticlesTab(entryEditorPreferences, preferencesService, dialogService, taskExecutor));
290-
291291
sourceTab = new SourceTab(
292292
databaseContext,
293293
undoManager,
@@ -299,9 +299,7 @@ private List<EntryEditorTab> createTabs() {
299299
bibEntryTypesManager,
300300
keyBindingRepository);
301301
entryEditorTabs.add(sourceTab);
302-
303302
entryEditorTabs.add(new LatexCitationsTab(databaseContext, preferencesService, taskExecutor, dialogService));
304-
305303
entryEditorTabs.add(new FulltextSearchResultsTab(stateManager, preferencesService, dialogService, taskExecutor));
306304

307305
return entryEditorTabs;

src/main/java/org/jabref/gui/entryeditor/OptionalFieldsTab.java renamed to src/main/java/org/jabref/gui/entryeditor/ImportantOptionalFieldsTab.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@
1414
import org.jabref.model.entry.BibEntryTypesManager;
1515
import org.jabref.preferences.PreferencesService;
1616

17-
public class OptionalFieldsTab extends OptionalFieldsTabBase {
17+
public class ImportantOptionalFieldsTab extends OptionalFieldsTabBase {
1818

1919
public static final String NAME = "Optional fields";
2020

21-
public OptionalFieldsTab(BibDatabaseContext databaseContext,
22-
SuggestionProviders suggestionProviders,
23-
UndoManager undoManager,
24-
DialogService dialogService,
25-
PreferencesService preferences,
26-
StateManager stateManager,
27-
ThemeManager themeManager,
28-
IndexingTaskManager indexingTaskManager,
29-
BibEntryTypesManager entryTypesManager,
30-
TaskExecutor taskExecutor,
31-
JournalAbbreviationRepository journalAbbreviationRepository) {
21+
public ImportantOptionalFieldsTab(BibDatabaseContext databaseContext,
22+
SuggestionProviders suggestionProviders,
23+
UndoManager undoManager,
24+
DialogService dialogService,
25+
PreferencesService preferences,
26+
StateManager stateManager,
27+
ThemeManager themeManager,
28+
IndexingTaskManager indexingTaskManager,
29+
BibEntryTypesManager entryTypesManager,
30+
TaskExecutor taskExecutor,
31+
JournalAbbreviationRepository journalAbbreviationRepository) {
3232
super(
3333
Localization.lang("Optional fields"),
3434
true,

src/main/java/org/jabref/gui/entryeditor/OptionalFieldsTabBase.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727

2828
public class OptionalFieldsTabBase extends FieldsEditorTab {
2929
private final BibEntryTypesManager entryTypesManager;
30-
private final boolean isPrimaryOptionalFields;
30+
private final boolean isImportantOptionalFields;
3131

3232
public OptionalFieldsTabBase(String title,
33-
boolean isPrimaryOptionalFields,
33+
boolean isImportantOptionalFields,
3434
BibDatabaseContext databaseContext,
3535
SuggestionProviders suggestionProviders,
3636
UndoManager undoManager,
@@ -54,7 +54,7 @@ public OptionalFieldsTabBase(String title,
5454
journalAbbreviationRepository,
5555
indexingTaskManager);
5656
this.entryTypesManager = entryTypesManager;
57-
this.isPrimaryOptionalFields = isPrimaryOptionalFields;
57+
this.isImportantOptionalFields = isImportantOptionalFields;
5858
setText(title);
5959
setTooltip(new Tooltip(Localization.lang("Show optional fields")));
6060
setGraphic(IconTheme.JabRefIcons.OPTIONAL.getGraphicNode());
@@ -65,10 +65,10 @@ protected SequencedSet<Field> determineFieldsToShow(BibEntry entry) {
6565
BibDatabaseMode mode = databaseContext.getMode();
6666
Optional<BibEntryType> entryType = entryTypesManager.enrich(entry.getType(), mode);
6767
if (entryType.isPresent()) {
68-
if (isPrimaryOptionalFields) {
69-
return entryType.get().getPrimaryOptionalFields();
68+
if (isImportantOptionalFields) {
69+
return entryType.get().getImportantOptionalFields();
7070
} else {
71-
return entryType.get().getSecondaryOptionalNotDeprecatedFields(mode);
71+
return entryType.get().getDetailOptionalNotDeprecatedFields(mode);
7272
}
7373
} else {
7474
// Entry type unknown -> treat all fields as required (thus no optional fields)

src/main/java/org/jabref/model/entry/BibEntryType.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,21 @@
2222
public class BibEntryType implements Comparable<BibEntryType> {
2323

2424
private final EntryType type;
25+
private final SequencedSet<BibField> allFields;
2526
private final SequencedSet<OrFields> requiredFields;
26-
private final SequencedSet<BibField> fields;
2727

2828
/**
2929
* Provides an enriched EntryType with information about defined standards as mandatory fields etc.
3030
*
3131
* A builder is available at {@link BibEntryTypeBuilder}
3232
*
3333
* @param type The EntryType this BibEntryType is wrapped around.
34-
* @param fields A BibFields list of all fields, including the required fields
34+
* @param allFields A BibFields list of all fields, including the required fields
3535
* @param requiredFields A OrFields list of just the required fields
3636
*/
37-
public BibEntryType(EntryType type, Collection<BibField> fields, Collection<OrFields> requiredFields) {
37+
public BibEntryType(EntryType type, Collection<BibField> allFields, Collection<OrFields> requiredFields) {
3838
this.type = Objects.requireNonNull(type);
39-
this.fields = new LinkedHashSet<>(fields);
39+
this.allFields = new LinkedHashSet<>(allFields);
4040
this.requiredFields = new LinkedHashSet<>(requiredFields);
4141
}
4242

@@ -70,21 +70,21 @@ public SequencedSet<OrFields> getRequiredFields() {
7070
* Returns all defined fields.
7171
*/
7272
public SequencedSet<BibField> getAllBibFields() {
73-
return Collections.unmodifiableSequencedSet(fields);
73+
return Collections.unmodifiableSequencedSet(allFields);
7474
}
7575

7676
public Set<Field> getAllFields() {
77-
return fields.stream().map(BibField::field).collect(Collectors.toCollection(LinkedHashSet::new));
77+
return allFields.stream().map(BibField::field).collect(Collectors.toCollection(LinkedHashSet::new));
7878
}
7979

80-
public SequencedSet<Field> getPrimaryOptionalFields() {
80+
public SequencedSet<Field> getImportantOptionalFields() {
8181
return getOptionalFields().stream()
8282
.filter(field -> field.priority() == FieldPriority.IMPORTANT)
8383
.map(BibField::field)
8484
.collect(Collectors.toCollection(LinkedHashSet::new));
8585
}
8686

87-
public SequencedSet<Field> getSecondaryOptionalFields() {
87+
public SequencedSet<Field> getDetailOptionalFields() {
8888
return getOptionalFields().stream()
8989
.filter(field -> field.priority() == FieldPriority.DETAIL)
9090
.map(BibField::field)
@@ -108,8 +108,8 @@ public Set<Field> getDeprecatedFields(BibDatabaseMode mode) {
108108
return deprecatedFields;
109109
}
110110

111-
public SequencedSet<Field> getSecondaryOptionalNotDeprecatedFields(BibDatabaseMode mode) {
112-
SequencedSet<Field> optionalFieldsNotPrimaryOrDeprecated = new LinkedHashSet<>(getSecondaryOptionalFields());
111+
public SequencedSet<Field> getDetailOptionalNotDeprecatedFields(BibDatabaseMode mode) {
112+
SequencedSet<Field> optionalFieldsNotPrimaryOrDeprecated = new LinkedHashSet<>(getDetailOptionalFields());
113113
optionalFieldsNotPrimaryOrDeprecated.removeAll(getDeprecatedFields(mode));
114114
return optionalFieldsNotPrimaryOrDeprecated;
115115
}
@@ -139,12 +139,12 @@ public boolean equals(Object o) {
139139
BibEntryType that = (BibEntryType) o;
140140
return type.equals(that.type) &&
141141
Objects.equals(requiredFields, that.requiredFields) &&
142-
Objects.equals(fields, that.fields);
142+
Objects.equals(allFields, that.allFields);
143143
}
144144

145145
@Override
146146
public int hashCode() {
147-
return Objects.hash(type, requiredFields, fields);
147+
return Objects.hash(type, requiredFields, allFields);
148148
}
149149

150150
/**
@@ -159,7 +159,7 @@ public int hashCode() {
159159
public String toString() {
160160
return "BibEntryType{" +
161161
"type=" + type +
162-
", allFields=" + fields +
162+
", allFields=" + allFields +
163163
", requiredFields=" + requiredFields +
164164
'}';
165165
}

0 commit comments

Comments
 (0)