Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into removeObsoleteSwing
Browse files Browse the repository at this point in the history
* upstream/master:
  Revert "Revert "Fix: bibkey generated does not handle diacritics" (#4741)" (#4742)
  Revert "Fix: bibkey generated does not handle diacritics" (#4741)
  Rename method to removeUnwantedCharacters
  Remove the dashes from test case
  Remove -s from key
  Update test cases
  Filter unwanted characters before removing whitespaces
  Fix NotOnJavaFXThread exception for remote import
  Remove old swing-based tests
  Extract authN method
  Shift cleaning of authString to authN only
  Clean key in BracketedPattern after author value is retrieved
  • Loading branch information
Siedlerchr committed Mar 10, 2019
2 parents 29e04a5 + fac6e62 commit efabb85
Show file tree
Hide file tree
Showing 20 changed files with 77 additions and 931 deletions.
1 change: 0 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,6 @@ dependencies {
testRuntime 'org.apache.logging.log4j:log4j-jul:2.11.2'
testCompile 'org.mockito:mockito-core:2.25.0'
testCompile 'com.github.tomakehurst:wiremock:2.21.0'
testCompile 'org.assertj:assertj-swing-junit:3.9.2'
testCompile 'org.reflections:reflections:0.9.11'
testCompile 'org.xmlunit:xmlunit-core:2.6.2'
testCompile 'org.xmlunit:xmlunit-matchers:2.6.2'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import java.util.Arrays;
import java.util.List;

import javafx.application.Platform;

import org.jabref.JabRefGUI;
import org.jabref.cli.ArgumentProcessor;
import org.jabref.logic.importer.ParserResult;
Expand All @@ -20,7 +22,11 @@ public void handleCommandLineArguments(String[] message) {
List<ParserResult> loaded = argumentProcessor.getParserResults();
for (int i = 0; i < loaded.size(); i++) {
ParserResult pr = loaded.get(i);
JabRefGUI.getMainFrame().addParserResult(pr, i == 0);
boolean focusPanel = i == 0;
Platform.runLater(() ->
// Need to run this on the JavaFX thread
JabRefGUI.getMainFrame().addParserResult(pr, focusPanel)
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ public class BibtexKeyGenerator extends BracketedPattern {
*/
public static final String APPENDIX_CHARACTERS = "abcdefghijklmnopqrstuvwxyz";
private static final Logger LOGGER = LoggerFactory.getLogger(BibtexKeyGenerator.class);
private static final String KEY_ILLEGAL_CHARACTERS = "{}(),\\\"#~^':`";
private static final String KEY_UNWANTED_CHARACTERS = "{}(),\\\"";
private static final String KEY_ILLEGAL_CHARACTERS = "{}(),\\\"-#~^':`";
private static final String KEY_UNWANTED_CHARACTERS = "{}(),\\\"-";
private final AbstractBibtexKeyPattern citeKeyPattern;
private final BibDatabase database;
private final BibtexKeyPatternPreferences bibtexKeyPatternPreferences;
Expand Down Expand Up @@ -72,15 +72,15 @@ private static String getAppendix(int number) {
}
}

public static String cleanKey(String key, boolean enforceLegalKey) {
public static String removeUnwantedCharacters(String key, boolean enforceLegalKey) {
if (!enforceLegalKey) {
// User doesn't want us to enforce legal characters. We must still look
// for whitespace and some characters such as commas, since these would
// interfere with parsing:
StringBuilder newKey = new StringBuilder();
for (int i = 0; i < key.length(); i++) {
char c = key.charAt(i);
if (!Character.isWhitespace(c) && (KEY_UNWANTED_CHARACTERS.indexOf(c) == -1)) {
if (KEY_UNWANTED_CHARACTERS.indexOf(c) == -1) {
newKey.append(c);
}
}
Expand All @@ -90,7 +90,7 @@ public static String cleanKey(String key, boolean enforceLegalKey) {
StringBuilder newKey = new StringBuilder();
for (int i = 0; i < key.length(); i++) {
char c = key.charAt(i);
if (!Character.isWhitespace(c) && (KEY_ILLEGAL_CHARACTERS.indexOf(c) == -1)) {
if (KEY_ILLEGAL_CHARACTERS.indexOf(c) == -1) {
newKey.append(c);
}
}
Expand All @@ -100,6 +100,10 @@ public static String cleanKey(String key, boolean enforceLegalKey) {
return StringUtil.replaceSpecialCharacters(newKey.toString());
}

public static String cleanKey(String key, boolean enforceLegalKey) {
return removeUnwantedCharacters(key, enforceLegalKey).replaceAll("\\s","");
}

public String generateKey(BibEntry entry) {
String key;
StringBuilder stringBuilder = new StringBuilder();
Expand All @@ -123,7 +127,7 @@ public String generateKey(BibEntry entry) {
List<String> parts = parseFieldMarker(typeListEntry);
Character delimiter = bibtexKeyPatternPreferences.getKeywordDelimiter();
String pattern = "[" + parts.get(0) + "]";
String label = expandBrackets(pattern, delimiter, entry, database);
String label = expandBrackets(pattern, delimiter, entry, database, bibtexKeyPatternPreferences.isEnforceLegalKey());
// apply modifier if present
if (parts.size() > 1) {
label = applyModifiers(label, parts, 1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ public String expand(BibEntry bibentry, Character keywordDelimiter, BibDatabase
return expandBrackets(this.pattern, keywordDelimiter, bibentry, database);
}

public static String expandBrackets(String pattern, Character keywordDelimiter, BibEntry entry, BibDatabase database) {
return expandBrackets(pattern, keywordDelimiter, entry, database, false);
}

/**
* Expands a pattern
*
Expand All @@ -101,7 +105,7 @@ public String expand(BibEntry bibentry, Character keywordDelimiter, BibDatabase
* @param database The database for field resolving. May be null.
* @return The expanded pattern. Not null.
*/
public static String expandBrackets(String pattern, Character keywordDelimiter, BibEntry entry, BibDatabase database) {
public static String expandBrackets(String pattern, Character keywordDelimiter, BibEntry entry, BibDatabase database, boolean isEnforceLegalKey) {
Objects.requireNonNull(pattern);
Objects.requireNonNull(entry);
StringBuilder sb = new StringBuilder();
Expand All @@ -122,10 +126,10 @@ public static String expandBrackets(String pattern, Character keywordDelimiter,
// check whether there is a modifier on the end such as
// ":lower":
if (fieldParts.size() <= 1) {
sb.append(getFieldValue(entry, token, keywordDelimiter, database));
sb.append(getFieldValue(entry, token, keywordDelimiter, database, isEnforceLegalKey));
} else {
// apply modifiers:
String fieldValue = getFieldValue(entry, fieldParts.get(0), keywordDelimiter, database);
String fieldValue = getFieldValue(entry, fieldParts.get(0), keywordDelimiter, database, isEnforceLegalKey);
sb.append(applyModifiers(fieldValue, fieldParts, 1));
}
// Fetch and discard the closing ']'
Expand Down Expand Up @@ -156,7 +160,7 @@ public static String expandBrackets(String pattern, Character keywordDelimiter,
*
* @return String containing the evaluation result. Empty string if the pattern cannot be resolved.
*/
public static String getFieldValue(BibEntry entry, String value, Character keywordDelimiter, BibDatabase database) {
public static String getFieldValue(BibEntry entry, String value, Character keywordDelimiter, BibDatabase database, boolean isEnforceLegalKey) {

String val = value;
try {
Expand Down Expand Up @@ -224,15 +228,8 @@ else if ("authorLast".equals(val)) {
return authNofMth(authString, Integer.parseInt(nums[0]),
Integer.parseInt(nums[1]));
} else if (val.matches("auth\\d+")) {
// authN. First N chars of the first author's last
// name.

String fa = firstAuthor(authString);
int num = Integer.parseInt(val.substring(4));
if (num > fa.length()) {
num = fa.length();
}
return fa.substring(0, num);
return authN(authString, num, isEnforceLegalKey);
} else if (val.matches("authors\\d+")) {
return nAuthors(authString, Integer.parseInt(val.substring(7)));
} else {
Expand Down Expand Up @@ -840,6 +837,18 @@ public static String authNofMth(String authorField, int n, int m) {
}
}

/**
* First N chars of the first author's last name.
*/
public static String authN(String authString, int num, boolean isEnforceLegalKey) {
authString = BibtexKeyGenerator.removeUnwantedCharacters(authString, isEnforceLegalKey);
String fa = firstAuthor(authString);
if (num > fa.length()) {
num = fa.length();
}
return fa.substring(0, num);
}

/**
* authshort format:
* added by Kolja Brix, kbx@users.sourceforge.net
Expand Down
24 changes: 0 additions & 24 deletions src/test/java/org/jabref/gui/AWTExceptionHandler.java

This file was deleted.

105 changes: 0 additions & 105 deletions src/test/java/org/jabref/gui/AbstractUITest.java

This file was deleted.

51 changes: 0 additions & 51 deletions src/test/java/org/jabref/gui/DialogTest.java

This file was deleted.

43 changes: 0 additions & 43 deletions src/test/java/org/jabref/gui/DialogTest2.java

This file was deleted.

Loading

0 comments on commit efabb85

Please sign in to comment.