Skip to content

Commit 7bbf120

Browse files
committed
Merge remote-tracking branch 'origin/main' into more-conservative-save
2 parents 9054614 + 60f5c1b commit 7bbf120

File tree

3 files changed

+10
-34
lines changed

3 files changed

+10
-34
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve
2222

2323
### Fixed
2424

25+
- We fixed a performance regression when opening large libraries [#9041](https://github.com/JabRef/jabref/issues/9041)
26+
2527
### Removed
2628

2729

build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ dependencyLocking {
9999
}
100100

101101
javafx {
102-
version = "18.0.1"
102+
version = "18.0.2"
103103
modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.web', 'javafx.swing' ]
104104
}
105105

src/main/java/org/jabref/model/database/BibDatabase.java

+7-33
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import javafx.collections.FXCollections;
2222
import javafx.collections.ObservableList;
23-
import javafx.collections.ObservableSet;
2423

2524
import org.jabref.logic.bibtex.FieldWriter;
2625
import org.jabref.model.database.event.EntriesAddedEvent;
@@ -30,7 +29,6 @@
3029
import org.jabref.model.entry.Month;
3130
import org.jabref.model.entry.event.EntriesEventSource;
3231
import org.jabref.model.entry.event.EntryChangedEvent;
33-
import org.jabref.model.entry.event.FieldAddedOrRemovedEvent;
3432
import org.jabref.model.entry.event.FieldChangedEvent;
3533
import org.jabref.model.entry.field.Field;
3634
import org.jabref.model.entry.field.FieldFactory;
@@ -54,8 +52,6 @@ public class BibDatabase {
5452
* State attributes
5553
*/
5654
private final ObservableList<BibEntry> entries = FXCollections.synchronizedObservableList(FXCollections.observableArrayList(BibEntry::getObservables));
57-
58-
private final ObservableSet<Field> visibleFields = FXCollections.observableSet();
5955
private Map<String, BibtexString> bibtexStrings = new ConcurrentHashMap<>();
6056

6157
private final EventBus eventBus = new EventBus();
@@ -140,8 +136,13 @@ public ObservableList<BibEntry> getEntries() {
140136
*
141137
* @return set of fieldnames, that are visible
142138
*/
143-
public ObservableSet<Field> getAllVisibleFields() {
144-
return visibleFields;
139+
public Set<Field> getAllVisibleFields() {
140+
Set<Field> allFields = new TreeSet<>(Comparator.comparing(Field::getName));
141+
for (BibEntry e : getEntries()) {
142+
allFields.addAll(e.getFields());
143+
}
144+
return allFields.stream().filter(field -> !FieldFactory.isInternalField(field))
145+
.collect(Collectors.toSet());
145146
}
146147

147148
/**
@@ -213,8 +214,6 @@ public synchronized void insertEntries(List<BibEntry> newEntries, EntriesEventSo
213214
eventBus.post(new EntriesAddedEvent(newEntries, newEntries.get(0), eventSource));
214215
}
215216
entries.addAll(newEntries);
216-
217-
updateVisibleFields();
218217
}
219218

220219
public synchronized void removeEntry(BibEntry bibEntry) {
@@ -252,7 +251,6 @@ public synchronized void removeEntries(List<BibEntry> toBeDeleted, EntriesEventS
252251
boolean anyRemoved = entries.removeIf(entry -> ids.contains(entry.getId()));
253252
if (anyRemoved) {
254253
eventBus.post(new EntriesRemovedEvent(toBeDeleted, eventSource));
255-
updateVisibleFields();
256254
}
257255
}
258256

@@ -586,30 +584,6 @@ private void relayEntryChangeEvent(FieldChangedEvent event) {
586584
eventBus.post(event);
587585
}
588586

589-
@Subscribe
590-
private void listen(FieldAddedOrRemovedEvent event) {
591-
// When a field is removed from an entry we can't tell if it's
592-
// still present in other entries, and thus we can't remove it
593-
// from the set of visible fields. However, when a new field is added
594-
// to any entry, we can simply add it to the set because we're
595-
// going to add it whether other entries have it or not
596-
boolean isAdded = visibleFields.add(event.getField());
597-
if (!isAdded) {
598-
updateVisibleFields();
599-
}
600-
}
601-
602-
private void updateVisibleFields() {
603-
visibleFields.clear();
604-
Set<Field> allFields = new TreeSet<>(Comparator.comparing(Field::getName));
605-
for (BibEntry e : getEntries()) {
606-
allFields.addAll(e.getFields());
607-
}
608-
visibleFields.addAll(allFields.stream().filter(field -> !FieldFactory.isInternalField(field))
609-
.filter(field -> StringUtil.isNotBlank(field.getName()))
610-
.collect(Collectors.toSet()));
611-
}
612-
613587
public Optional<BibEntry> getReferencedEntry(BibEntry entry) {
614588
return entry.getField(StandardField.CROSSREF).flatMap(this::getEntryByCitationKey);
615589
}

0 commit comments

Comments
 (0)