Skip to content

Commit c5a44c4

Browse files
committed
Merge remote-tracking branch 'upstream/master' into macsign
* upstream/master: Fix order of fields in bib file (#6750) Squashed 'src/main/resources/csl-styles/' changes from eb0d37e..c8c6c6d Try to fix cleanup PR
2 parents b5fe951 + 9adfd5b commit c5a44c4

File tree

6 files changed

+621
-32
lines changed

6 files changed

+621
-32
lines changed

.github/workflows/cleanup_pr.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
id: checksecrets
1414
shell: bash
1515
run: |
16-
if [ "$BUILDJABREFPRIVATEKEY" == "" ]; then
16+
if [ -z "$BUILDJABREFPRIVATEKEY" ]; then
1717
echo ::set-output name=secretspresent::false
1818
else
1919
echo ::set-output name=secretspresent::true

src/main/java/org/jabref/logic/bibtex/BibEntryWriter.java

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import java.io.IOException;
44
import java.io.StringWriter;
55
import java.io.Writer;
6+
import java.util.Collection;
67
import java.util.Comparator;
8+
import java.util.HashSet;
79
import java.util.List;
810
import java.util.Locale;
911
import java.util.Optional;
12+
import java.util.Set;
1013
import java.util.SortedSet;
1114
import java.util.TreeSet;
1215
import java.util.function.Predicate;
@@ -21,7 +24,6 @@
2124
import org.jabref.model.entry.field.BibField;
2225
import org.jabref.model.entry.field.Field;
2326
import org.jabref.model.entry.field.InternalField;
24-
import org.jabref.model.entry.field.OrFields;
2527
import org.jabref.model.strings.StringUtil;
2628

2729
public class BibEntryWriter {
@@ -91,30 +93,44 @@ public void writeWithoutPrependedNewlines(BibEntry entry, Writer out, BibDatabas
9193
*/
9294
private void writeRequiredFieldsFirstRemainingFieldsSecond(BibEntry entry, Writer out,
9395
BibDatabaseMode bibDatabaseMode) throws IOException {
94-
// Write header with type and bibtex-key.
96+
// Write header with type and bibtex-key
9597
TypedBibEntry typedEntry = new TypedBibEntry(entry, bibDatabaseMode);
9698
out.write('@' + typedEntry.getTypeForDisplay() + '{');
9799

98100
writeKeyField(entry, out);
99101

100-
TreeSet<Field> written = new TreeSet<>(Comparator.comparing(Field::getName));
102+
Set<Field> written = new HashSet<>();
101103
written.add(InternalField.KEY_FIELD);
102104
int indentation = getLengthOfLongestFieldName(entry);
103105

104106
Optional<BibEntryType> type = entryTypesManager.enrich(entry.getType(), bibDatabaseMode);
105107
if (type.isPresent()) {
106-
// Write required fields first.
107-
for (OrFields value : type.get().getRequiredFields()) {
108-
for (Field field : value) {
109-
writeField(entry, out, field, indentation);
110-
written.add(field);
111-
}
108+
// Write required fields first
109+
List<Field> requiredFields = type.get()
110+
.getRequiredFields()
111+
.stream()
112+
.flatMap(Collection::stream)
113+
.sorted(Comparator.comparing(Field::getName))
114+
.collect(Collectors.toList());
115+
116+
for (Field field : requiredFields) {
117+
writeField(entry, out, field, indentation);
112118
}
113-
// Then optional fields.
114-
for (BibField field : type.get().getOptionalFields()) {
115-
writeField(entry, out, field.getField(), indentation);
116-
written.add(field.getField());
119+
120+
// Then optional fields
121+
List<Field> optionalFields = type.get()
122+
.getOptionalFields()
123+
.stream()
124+
.map(BibField::getField)
125+
.sorted(Comparator.comparing(Field::getName))
126+
.collect(Collectors.toList());
127+
128+
for (Field field : optionalFields) {
129+
writeField(entry, out, field, indentation);
117130
}
131+
132+
written.addAll(requiredFields);
133+
written.addAll(optionalFields);
118134
}
119135
// Then write remaining fields in alphabetic order.
120136
SortedSet<Field> remainingFields = entry.getFields()

0 commit comments

Comments
 (0)