Skip to content

Commit 4ef1460

Browse files
committed
Merge remote-tracking branch 'upstream/master' into fixlookupfulltext
* upstream/master: fix bug where main file directory is not set correctly (#5215) Use UTF-8 as default encoding for files (#5213) fix: missing separator for unchanged diff words fix: use UTF-8 as default encoding for files ~ resolves #5133 Minor improvements to TexParser Fix lookup entry types in enums (#5209)
2 parents 33fb6c5 + dd0f304 commit 4ef1460

File tree

17 files changed

+108
-35
lines changed

17 files changed

+108
-35
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public void init(BibEntry entry) {
7777

7878
currentEntry = entry;
7979
Optional<String> citeKey = entry.getCiteKeyOptional();
80+
8081
if (citeKey.isPresent()) {
8182
startSearch(citeKey.get());
8283
} else {

src/main/java/org/jabref/gui/mergeentries/DiffHighlighting.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ private DiffHighlighting() {
2222

2323
public static List<Text> generateDiffHighlighting(String baseString, String modifiedString, String separator) {
2424
List<String> stringList = Arrays.asList(baseString.split(separator));
25-
List<Text> result = stringList.stream().map(DiffHighlighting::forUnchanged).collect(Collectors.toList());
25+
List<Text> result = stringList.stream().map(text -> forUnchanged(text + separator)).collect(Collectors.toList());
2626
List<AbstractDelta<String>> deltaList;
2727
try {
2828
deltaList = DiffUtils.diff(stringList, Arrays.asList(modifiedString.split(separator))).getDeltas();

src/main/java/org/jabref/gui/preferences/FileTabViewModel.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public FileTabViewModel(DialogService dialogService, JabRefPreferences preferenc
7777
);
7878
}
7979

80+
@Override
8081
public void setValues() {
8182
openLastStartupProperty.setValue(preferences.getBoolean(JabRefPreferences.OPEN_LAST_EDITED));
8283
backupOldFileProperty.setValue(preferences.getBoolean(JabRefPreferences.BACKUP));
@@ -88,7 +89,7 @@ public void setValues() {
8889
selectedNewLineSeparatorProperty.setValue(preferences.getNewLineSeparator());
8990
alwaysReformatBibProperty.setValue(preferences.getBoolean(JabRefPreferences.REFORMAT_FILE_ON_SAVE_AND_EXPORT));
9091

91-
mainFileDirProperty.setValue(preferences.getAsOptional(StandardField.FILE + FilePreferences.DIR_SUFFIX).orElse(""));
92+
mainFileDirProperty.setValue(preferences.getAsOptional(StandardField.FILE.getName() + FilePreferences.DIR_SUFFIX).orElse(""));
9293
useBibLocationAsPrimaryProperty.setValue(preferences.getBoolean(JabRefPreferences.BIB_LOC_AS_PRIMARY_DIR));
9394
if (preferences.getBoolean(JabRefPreferences.AUTOLINK_USE_REG_EXP_SEARCH_KEY)) { // Flipped around
9495
autolinkUseRegexProperty.setValue(true);
@@ -104,6 +105,7 @@ public void setValues() {
104105
autosaveLocalLibraries.setValue(preferences.getBoolean(JabRefPreferences.LOCAL_AUTO_SAVE));
105106
}
106107

108+
@Override
107109
public void storeSettings() {
108110
preferences.putBoolean(JabRefPreferences.OPEN_LAST_EDITED, openLastStartupProperty.getValue());
109111
preferences.putBoolean(JabRefPreferences.BACKUP, backupOldFileProperty.getValue());
@@ -119,7 +121,7 @@ public void storeSettings() {
119121
preferences.setNewLineSeparator(selectedNewLineSeparatorProperty.getValue());
120122
preferences.putBoolean(JabRefPreferences.REFORMAT_FILE_ON_SAVE_AND_EXPORT, alwaysReformatBibProperty.getValue());
121123

122-
preferences.put(StandardField.FILE + FilePreferences.DIR_SUFFIX, mainFileDirProperty.getValue());
124+
preferences.put(StandardField.FILE.getName() + FilePreferences.DIR_SUFFIX, mainFileDirProperty.getValue());
123125
preferences.putBoolean(JabRefPreferences.BIB_LOC_AS_PRIMARY_DIR, useBibLocationAsPrimaryProperty.getValue());
124126
preferences.putBoolean(JabRefPreferences.AUTOLINK_USE_REG_EXP_SEARCH_KEY, autolinkUseRegexProperty.getValue());
125127
preferences.putBoolean(JabRefPreferences.AUTOLINK_EXACT_KEY_ONLY, autolinkFileExactBibtexProperty.getValue());
@@ -133,6 +135,7 @@ ValidationStatus mainFileDirValidationStatus() {
133135
return mainFileDirValidator.getValidationStatus();
134136
}
135137

138+
@Override
136139
public boolean validateSettings() {
137140
ValidationStatus status = mainFileDirValidationStatus();
138141
if (!status.isValid()) {

src/main/java/org/jabref/logic/journals/AbbreviationParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.io.File;
55
import java.io.FileInputStream;
66
import java.io.FileNotFoundException;
7-
import java.io.FileReader;
87
import java.io.IOException;
98
import java.io.InputStreamReader;
109
import java.io.Reader;
@@ -39,7 +38,8 @@ public void readJournalListFromResource(String resourceFileName) {
3938
}
4039

4140
public void readJournalListFromFile(File file) throws FileNotFoundException {
42-
try (FileReader reader = new FileReader(Objects.requireNonNull(file))) {
41+
try (FileInputStream stream = new FileInputStream(Objects.requireNonNull(file));
42+
InputStreamReader reader = new InputStreamReader(stream, Objects.requireNonNull(StandardCharsets.UTF_8))) {
4343
readJournalList(reader);
4444
} catch (FileNotFoundException e) {
4545
throw e;

src/main/java/org/jabref/logic/journals/JournalAbbreviationLoader.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.slf4j.LoggerFactory;
1212

1313
public class JournalAbbreviationLoader {
14-
1514
private static final Logger LOGGER = LoggerFactory.getLogger(JournalAbbreviationLoader.class);
1615

1716
// journal initialization

src/main/java/org/jabref/logic/texparser/DefaultTexParser.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.io.IOException;
44
import java.io.LineNumberReader;
5+
import java.io.Reader;
56
import java.io.UncheckedIOException;
67
import java.nio.channels.ClosedChannelException;
78
import java.nio.file.Files;
@@ -27,8 +28,8 @@ public class DefaultTexParser implements TexParser {
2728
private static final String TEX_EXT = ".tex";
2829

2930
/**
30-
* It is allowed to add new cite commands for pattern matching.
31-
* Some valid examples: "citep", "[cC]ite", and "[cC]ite(author|title|year|t|p)?".
31+
* It is allowed to add new cite commands for pattern matching. Some valid examples: "citep", "[cC]ite", and
32+
* "[cC]ite(author|title|year|t|p)?".
3233
*/
3334
private static final String[] CITE_COMMANDS = {
3435
"[cC]ite(alt|alp|author|authorfull|date|num|p|t|text|title|url|year|yearpar)?",
@@ -76,7 +77,9 @@ public TexParserResult parse(List<Path> texFiles) {
7677
continue;
7778
}
7879

79-
try (LineNumberReader lineNumberReader = new LineNumberReader(new CharsetDetector().setText(Files.readAllBytes(file)).detect().getReader())) {
80+
try (
81+
Reader reader = new CharsetDetector().setText(Files.readAllBytes(file)).detect().getReader();
82+
LineNumberReader lineNumberReader = new LineNumberReader(reader)) {
8083
for (String line = lineNumberReader.readLine(); line != null; line = lineNumberReader.readLine()) {
8184
// Skip comments and blank lines.
8285
if (line.trim().isEmpty() || line.trim().charAt(0) == '%') {
@@ -86,15 +89,19 @@ public TexParserResult parse(List<Path> texFiles) {
8689
matchNestedFile(file, texFiles, referencedFiles, line);
8790
}
8891
} catch (ClosedChannelException e) {
89-
LOGGER.error("Parsing has been interrupted");
90-
return null;
92+
// User changed the underlying LaTeX file
93+
// We ignore this error and just continue with parsing
94+
LOGGER.info("Parsing has been interrupted");
9195
} catch (IOException | UncheckedIOException e) {
92-
LOGGER.error("Error while parsing file {}", file, e);
96+
// Some weired error during reading
97+
// We ignore this error and just continue with parsing
98+
LOGGER.info("Error while parsing file {}", file, e);
9399
}
94100
}
95101

96102
// Parse all files referenced by TEX files, recursively.
97103
if (!referencedFiles.isEmpty()) {
104+
// modifies class variable texParserResult
98105
parse(referencedFiles);
99106
}
100107

src/main/java/org/jabref/model/entry/types/EntryType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@ public interface EntryType {
1010
String getName();
1111

1212
String getDisplayName();
13+
1314
}

src/main/java/org/jabref/model/entry/types/EntryTypeFactory.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package org.jabref.model.entry.types;
22

3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.List;
6+
import java.util.Locale;
7+
import java.util.Objects;
8+
39
import org.jabref.model.entry.BibEntryType;
4-
import org.jabref.model.util.OptionalUtil;
510

611
public class EntryTypeFactory {
712

@@ -22,10 +27,10 @@ public static boolean isEqualNameAndFieldBased(BibEntryType type1, BibEntryType
2227
} else if ((type1 == null) || (type2 == null)) {
2328
return false;
2429
} else {
25-
return type1.getType().equals(type2.getType())
26-
&& type1.getRequiredFields().equals(type2.getRequiredFields())
27-
&& type1.getOptionalFields().equals(type2.getOptionalFields())
28-
&& type1.getSecondaryOptionalFields().equals(type2.getSecondaryOptionalFields());
30+
return Objects.equals(type1.getType(), type2.getType())
31+
&& Objects.equals(type1.getRequiredFields(), type2.getRequiredFields())
32+
&& Objects.equals(type1.getOptionalFields(), type2.getOptionalFields())
33+
&& Objects.equals(type1.getSecondaryOptionalFields(), type2.getSecondaryOptionalFields());
2934
}
3035
}
3136

@@ -42,6 +47,10 @@ private static boolean isBiblatex(EntryType type) {
4247
}
4348

4449
public static EntryType parse(String typeName) {
45-
return OptionalUtil.orElse(StandardEntryType.fromName(typeName), new UnknownEntryType(typeName));
50+
51+
List<EntryType> types = new ArrayList<>(Arrays.<EntryType> asList(StandardEntryType.values()));
52+
types.addAll(Arrays.<EntryType> asList(IEEETranEntryType.values()));
53+
54+
return types.stream().filter(type -> type.getName().equals(typeName.toLowerCase(Locale.ENGLISH))).findFirst().orElse(new UnknownEntryType(typeName));
4655
}
4756
}

src/main/java/org/jabref/model/entry/types/StandardEntryType.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package org.jabref.model.entry.types;
22

3-
import java.util.Arrays;
43
import java.util.Locale;
5-
import java.util.Optional;
64

75
public enum StandardEntryType implements EntryType {
86
// BibTeX
@@ -44,12 +42,6 @@ public enum StandardEntryType implements EntryType {
4442
this.displayName = displayName;
4543
}
4644

47-
public static Optional<StandardEntryType> fromName(String name) {
48-
return Arrays.stream(StandardEntryType.values())
49-
.filter(field -> field.getName().equalsIgnoreCase(name))
50-
.findAny();
51-
}
52-
5345
@Override
5446
public String getName() {
5547
return displayName.toLowerCase(Locale.ENGLISH);

src/main/java/org/jabref/model/entry/types/UnknownEntryType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public boolean equals(Object o) {
3434
if (this == o) {
3535
return true;
3636
}
37-
if (o == null || getClass() != o.getClass()) {
37+
if ((o == null) || (getClass() != o.getClass())) {
3838
return false;
3939
}
4040
UnknownEntryType that = (UnknownEntryType) o;

0 commit comments

Comments
 (0)