diff --git a/src/main/java/net/sf/jabref/JabRef.java b/src/main/java/net/sf/jabref/JabRef.java index 4b8ab04ce42..9488821730b 100644 --- a/src/main/java/net/sf/jabref/JabRef.java +++ b/src/main/java/net/sf/jabref/JabRef.java @@ -28,6 +28,7 @@ import java.util.Enumeration; import java.util.Iterator; import java.util.List; +import java.util.Optional; import java.util.Vector; import java.util.prefs.BackingStoreException; @@ -158,14 +159,14 @@ public void start(String[] args) { // The preferences return the system newline character sequence as default Globals.NEWLINE = Globals.prefs.get(JabRefPreferences.NEWLINE); - Vector loaded = processArguments(args, true); + Optional> loaded = processArguments(args, true); - if ((loaded == null) || cli.isDisableGui() || cli.isShowVersion()) { + if ((!(loaded.isPresent())) || cli.isDisableGui() || cli.isShowVersion()) { JabRefExecutorService.INSTANCE.shutdownEverything(); return; } - SwingUtilities.invokeLater(() -> openWindow(loaded)); + SwingUtilities.invokeLater(() -> openWindow(loaded.get())); } private void setupLogHandlerForErrorConsole() { @@ -173,7 +174,7 @@ private void setupLogHandlerForErrorConsole() { ((Jdk14Logger) LOGGER).getLogger().addHandler(Globals.handler); } - public Vector processArguments(String[] args, boolean initialStartup) { + public Optional> processArguments(String[] args, boolean initialStartup) { cli = new JabRefCLI(args); @@ -183,7 +184,7 @@ public Vector processArguments(String[] args, boolean initialStart if (initialStartup && cli.isHelp()) { cli.printUsage(); - return null; // TODO replace with optional one day + return Optional.empty(); } // Check if we should reset all preferences to default values: @@ -246,12 +247,7 @@ public Vector processArguments(String[] args, boolean initialStart if (initialStartup) { toImport.add(aLeftOver); } else { - ParserResult res = JabRef.importToOpenBase(aLeftOver); - if (res != null) { - loaded.add(res); - } else { - loaded.add(ParserResult.INVALID_FORMAT); - } + loaded.add(JabRef.importToOpenBase(aLeftOver).orElse(ParserResult.INVALID_FORMAT)); } } else if (pr != ParserResult.FILE_LOCKED) { loaded.add(pr); @@ -265,24 +261,15 @@ public Vector processArguments(String[] args, boolean initialStart } for (String filenameString : toImport) { - ParserResult pr = JabRef.importFile(filenameString); - if (pr != null) { - loaded.add(pr); - } + importFile(filenameString).ifPresent(loaded::add); } if (!cli.isBlank() && cli.isImportToOpenBase()) { - ParserResult res = JabRef.importToOpenBase(cli.getImportToOpenBase()); - if (res != null) { - loaded.add(res); - } + importToOpenBase(cli.getImportToOpenBase()).ifPresent(loaded::add); } if (!cli.isBlank() && cli.isFetcherEngine()) { - ParserResult res = fetch(cli.getFetcherEngine()); - if (res != null) { - loaded.add(res); - } + fetch(cli.getFetcherEngine()).ifPresent(loaded::add); } if (cli.isExportMatches()) { @@ -315,7 +302,7 @@ public Vector processArguments(String[] args, boolean initialStart System.err.println( Localization.lang("Output file missing").concat(". \n \t ").concat("Usage").concat(": ") + JabRefCLI.getExportMatchesSyntax()); - return null; // TODO replace with optional one day + return Optional.empty(); } //end switch //export new database @@ -479,7 +466,7 @@ public Vector processArguments(String[] args, boolean initialStart } } - return loaded; + return Optional.of(loaded); } /** @@ -491,12 +478,12 @@ public Vector processArguments(String[] args, boolean initialStart * the search query, separated by a : * @return A parser result containing the entries fetched or null if an error occurred. */ - private ParserResult fetch(String fetchCommand) { + private Optional fetch(String fetchCommand) { if ((fetchCommand == null) || !fetchCommand.contains(":") || (fetchCommand.split(":").length != 2)) { System.out.println(Localization.lang("Expected syntax for --fetch=':'")); System.out.println(Localization.lang("The following fetchers are available:")); - return null; + return Optional.empty(); } String[] split = fetchCommand.split(":"); @@ -517,7 +504,7 @@ private ParserResult fetch(String fetchCommand) { for (EntryFetcher e : EntryFetchers.INSTANCE.getEntryFetchers()) { System.out.println(" " + e.getClass().getSimpleName().replaceAll("Fetcher", "").toLowerCase()); } - return null; + return Optional.empty(); } System.out.println(Localization.lang("Running Query '%0' with fetcher '%1'.", query, engine) + " " @@ -527,10 +514,10 @@ private ParserResult fetch(String fetchCommand) { if ((result == null) || result.isEmpty()) { System.out.println( Localization.lang("Query '%0' with fetcher '%1' did not return any results.", query, engine)); - return null; + return Optional.empty(); } - return new ParserResult(result); + return Optional.of(new ParserResult(result)); } private void setLookAndFeel() { @@ -832,7 +819,7 @@ public static ParserResult openBibFile(String name, boolean ignoreAutosave) { } - private static ParserResult importFile(String argument) { + private static Optional importFile(String argument) { String[] data = argument.split(","); try { if ((data.length > 1) && !"*".equals(data[1])) { @@ -845,10 +832,10 @@ private static ParserResult importFile(String argument) { entries = Globals.importFormatReader.importFromFile(data[1], data[0].replaceAll("~", System.getProperty("user.home")), JabRef.jrf); } - return new ParserResult(entries); + return Optional.of(new ParserResult(entries)); } catch (IllegalArgumentException ex) { System.err.println(Localization.lang("Unknown import format") + ": " + data[1]); - return null; + return Optional.empty(); } } else { // * means "guess the format": @@ -865,7 +852,7 @@ private static ParserResult importFile(String argument) { if (importResult != null) { System.out.println(Localization.lang("Format used") + ": " + importResult.format); - return importResult.parserResult; + return Optional.of(importResult.parserResult); } else { System.out.println(Localization.lang("Could not find a suitable import format.")); } @@ -874,7 +861,7 @@ private static ParserResult importFile(String argument) { System.err.println( Localization.lang("Error opening file") + " '" + data[0] + "': " + ex.getLocalizedMessage()); } - return null; + return Optional.empty(); } /** @@ -883,12 +870,10 @@ private static ParserResult importFile(String argument) { * @param argument See importFile. * @return ParserResult with setToOpenTab(true) */ - private static ParserResult importToOpenBase(String argument) { - ParserResult result = JabRef.importFile(argument); + private static Optional importToOpenBase(String argument) { + Optional result = JabRef.importFile(argument); - if (result != null) { - result.setToOpenTab(true); - } + result.ifPresent(x -> x.setToOpenTab(true)); return result; } diff --git a/src/main/java/net/sf/jabref/bibtex/DuplicateCheck.java b/src/main/java/net/sf/jabref/bibtex/DuplicateCheck.java index cb435f6b907..fe877edb132 100644 --- a/src/main/java/net/sf/jabref/bibtex/DuplicateCheck.java +++ b/src/main/java/net/sf/jabref/bibtex/DuplicateCheck.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.HashSet; +import java.util.Optional; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -207,13 +208,13 @@ public static double compareEntriesStrictly(BibEntry one, BibEntry two) { * @param entry The entry of which we are looking for duplicates. * @return The first duplicate entry found. null if no duplicates are found. */ - public static BibEntry containsDuplicate(BibDatabase database, BibEntry entry) { + public static Optional containsDuplicate(BibDatabase database, BibEntry entry) { for (BibEntry other : database.getEntries()) { if (DuplicateCheck.isDuplicate(entry, other)) { - return other; // Duplicate found. + return Optional.of(other); // Duplicate found. } } - return null; // No duplicate found. + return Optional.empty(); // No duplicate found. } /** diff --git a/src/main/java/net/sf/jabref/collab/ChangeScanner.java b/src/main/java/net/sf/jabref/collab/ChangeScanner.java index 3485323ae73..4a8daad7577 100644 --- a/src/main/java/net/sf/jabref/collab/ChangeScanner.java +++ b/src/main/java/net/sf/jabref/collab/ChangeScanner.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.util.HashSet; import java.util.Iterator; +import java.util.Optional; import java.util.Vector; import java.util.ArrayList; @@ -412,10 +413,10 @@ private void scanStrings(BibDatabase inMem1, BibDatabase onTmp, BibDatabase onDi // We have found a string with a matching name. if ((tmp.getContent() != null) && !tmp.getContent().equals(disk.getContent())) { // But they have nonmatching contents, so we've found a change. - BibtexString mem = findString(inMem1, tmp.getName(), usedInMem); - if (mem != null) { - changes.add( - new StringChange(mem, tmp, tmp.getName(), mem.getContent(), disk.getContent())); + Optional mem = findString(inMem1, tmp.getName(), usedInMem); + if (mem.isPresent()) { + changes.add(new StringChange(mem.get(), tmp, tmp.getName(), mem.get().getContent(), + disk.getContent())); } else { changes.add(new StringChange(null, tmp, tmp.getName(), null, disk.getContent())); } @@ -477,10 +478,9 @@ private void scanStrings(BibDatabase inMem1, BibDatabase onTmp, BibDatabase onDi // Still one or more non-matched strings. So they must have been removed. for (String nmId : notMatched) { BibtexString tmp = onTmp.getString(nmId); - BibtexString mem = findString(inMem1, tmp.getName(), usedInMem); - if (mem != null) { // The removed string is not removed from the mem version. - changes.add(new StringRemoveChange(tmp, tmp, mem)); - } + // The removed string is not removed from the mem version. + findString(inMem1, tmp.getName(), usedInMem) + .ifPresent(x -> changes.add(new StringRemoveChange(tmp, tmp, x))); } } @@ -496,18 +496,18 @@ private void scanStrings(BibDatabase inMem1, BibDatabase onTmp, BibDatabase onDi } } - private static BibtexString findString(BibDatabase base, String name, HashSet used) { + private static Optional findString(BibDatabase base, String name, HashSet used) { if (!base.hasStringLabel(name)) { - return null; + return Optional.empty(); } for (String key : base.getStringKeySet()) { BibtexString bs = base.getString(key); if (bs.getName().equals(name) && !used.contains(key)) { used.add(key); - return bs; + return Optional.of(bs); } } - return null; + return Optional.empty(); } /** diff --git a/src/main/java/net/sf/jabref/external/ExternalFileTypeEditor.java b/src/main/java/net/sf/jabref/external/ExternalFileTypeEditor.java index 0715478e9f1..5c3d672ecd4 100644 --- a/src/main/java/net/sf/jabref/external/ExternalFileTypeEditor.java +++ b/src/main/java/net/sf/jabref/external/ExternalFileTypeEditor.java @@ -301,10 +301,8 @@ public String getColumnName(int column) { return Localization.lang("Extension"); case 3: return Localization.lang("MIME type"); - case 4: + default: // Five columns return Localization.lang("Application"); - default: - return null; } } @@ -329,10 +327,8 @@ public Object getValueAt(int rowIndex, int columnIndex) { return type.getExtension(); case 3: return type.getMimeType(); - case 4: + default: // Five columns return type.getOpenWith(); - default: - return null; } } } diff --git a/src/main/java/net/sf/jabref/external/SynchronizeFileField.java b/src/main/java/net/sf/jabref/external/SynchronizeFileField.java index 190d027d5c9..51c278e92c6 100644 --- a/src/main/java/net/sf/jabref/external/SynchronizeFileField.java +++ b/src/main/java/net/sf/jabref/external/SynchronizeFileField.java @@ -105,11 +105,6 @@ public void run() { int progress = 0; final NamedCompound ce = new NamedCompound(Localization.lang("Autoset %0 field", fieldName)); - //final OpenFileFilter off = Util.getFileFilterForField(fieldName); - - //ExternalFilePanel extPan = new ExternalFilePanel(fieldName, panel.metaData(), null, null, off); - //TextField editor = new TextField(fieldName, "", false); - Set changedEntries = new HashSet<>(); // First we try to autoset fields @@ -120,30 +115,9 @@ public void run() { // Start the autosetting process: Runnable r = Util.autoSetLinks(entries, ce, changedEntries, null, panel.metaData(), null, null); JabRefExecutorService.INSTANCE.executeAndWait(r); - /* - progress += weightAutoSet; - panel.frame().setProgressBarValue(progress); - - Object old = sel[i].getField(fieldName); - FileListTableModel tableModel = new FileListTableModel(); - if (old != null) - tableModel.setContent((String)old); - Thread t = FileListEditor.autoSetLinks(sel[i], tableModel, null, null); - - if (!tableModel.getStringRepresentation().equals(old)) { - String toSet = tableModel.getStringRepresentation(); - if (toSet.length() == 0) - toSet = null; - ce.addEdit(new UndoableFieldChange(sel[i], fieldName, old, toSet)); - sel[i].setField(fieldName, toSet); - entriesChanged++; - } - } */ - } progress += sel.length * weightAutoSet; panel.frame().setProgressBarValue(progress); - //System.out.println("Done setting"); // The following loop checks all external links that are already set. if (checkExisting) { boolean removeAllBroken = false; diff --git a/src/main/java/net/sf/jabref/gui/ImportInspectionDialog.java b/src/main/java/net/sf/jabref/gui/ImportInspectionDialog.java index da2e9bb8327..ad319c0e1da 100644 --- a/src/main/java/net/sf/jabref/gui/ImportInspectionDialog.java +++ b/src/main/java/net/sf/jabref/gui/ImportInspectionDialog.java @@ -395,8 +395,8 @@ public void addEntries(Collection entriesToAdd) { // Checking duplicates means both checking against the background // database (if // applicable) and against entries already in the table. - if (((panel != null) && (DuplicateCheck.containsDuplicate(panel.database(), entry) != null)) || - (internalDuplicate(this.entries, entry) != null)) { + if (((panel != null) && (DuplicateCheck.containsDuplicate(panel.database(), entry).isPresent())) + || (internalDuplicate(this.entries, entry).isPresent())) { entry.setGroupHit(true); deselectAllDuplicates.setEnabled(true); } @@ -414,16 +414,16 @@ public void addEntries(Collection entriesToAdd) { * @param entry The entry to search for duplicates of. * @return A possible duplicate, if any, or null if none were found. */ - private static BibEntry internalDuplicate(Collection entriesDupe, BibEntry entry) { + private static Optional internalDuplicate(Collection entriesDupe, BibEntry entry) { for (BibEntry othEntry : entriesDupe) { if (othEntry == entry) { continue; // Don't compare the entry to itself } if (DuplicateCheck.isDuplicate(entry, othEntry)) { - return othEntry; + return Optional.of(othEntry); } } - return null; + return Optional.empty(); } /** @@ -1077,12 +1077,13 @@ public void mousePressed(MouseEvent e) { // Is this the duplicate icon column, and is there an icon? if ((col == DUPL_COL) && (glTable.getValueAt(row, col) != null)) { BibEntry first = sortedList.get(row); - BibEntry other = DuplicateCheck.containsDuplicate(panel.database(), first); - if (other != null) { + Optional other = DuplicateCheck.containsDuplicate(panel.database(), first); + if (other.isPresent()) { // This will be true if the duplicate is in the existing // database. DuplicateResolverDialog diag = new DuplicateResolverDialog( - ImportInspectionDialog.this, other, first, +ImportInspectionDialog.this, other.get(), + first, DuplicateResolverDialog.INSPECTION); PositionWindow.placeDialog(diag, ImportInspectionDialog.this); diag.setVisible(true); @@ -1091,7 +1092,7 @@ public void mousePressed(MouseEvent e) { // Remove old entry. Or... add it to a list of entries // to be deleted. We only delete // it after Ok is clicked. - entriesToDelete.add(other); + entriesToDelete.add(other.get()); // Clear duplicate icon, which is controlled by the // group hit // field of the entry: @@ -1113,7 +1114,7 @@ public void mousePressed(MouseEvent e) { // Remove old entry. Or... add it to a list of entries // to be deleted. We only delete // it after Ok is clicked. - entriesToDelete.add(other); + entriesToDelete.add(other.get()); // Store merged entry for later adding // Clear duplicate icon, which is controlled by the // group hit @@ -1129,15 +1130,15 @@ public void mousePressed(MouseEvent e) { } // Check if the duplicate is of another entry in the import: other = internalDuplicate(entries, first); - if (other != null) { - DuplicateResolverDialog diag = new DuplicateResolverDialog( - ImportInspectionDialog.this, first, other, DuplicateResolverDialog.DUPLICATE_SEARCH); + if (other.isPresent()) { + DuplicateResolverDialog diag = new DuplicateResolverDialog(ImportInspectionDialog.this, first, + other.get(), DuplicateResolverDialog.DUPLICATE_SEARCH); PositionWindow.placeDialog(diag, ImportInspectionDialog.this); diag.setVisible(true); ImportInspectionDialog.this.toFront(); int answer = diag.getSelected(); if (answer == DuplicateResolverDialog.KEEP_UPPER) { - entries.remove(other); + entries.remove(other.get()); first.setGroupHit(false); } else if (answer == DuplicateResolverDialog.KEEP_LOWER) { entries.remove(first); @@ -1148,7 +1149,7 @@ public void mousePressed(MouseEvent e) { diag.getMergedEntry().setSearchHit(true); entries.add(diag.getMergedEntry()); entries.remove(first); - entries.remove(other); + entries.remove(other.get()); } } } diff --git a/src/main/java/net/sf/jabref/gui/preftabs/AppearancePrefsTab.java b/src/main/java/net/sf/jabref/gui/preftabs/AppearancePrefsTab.java index efcc4e5417d..e72fb38cf42 100644 --- a/src/main/java/net/sf/jabref/gui/preftabs/AppearancePrefsTab.java +++ b/src/main/java/net/sf/jabref/gui/preftabs/AppearancePrefsTab.java @@ -20,6 +20,7 @@ import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.Optional; import javax.swing.*; @@ -120,11 +121,8 @@ public void actionPerformed(ActionEvent e) { @Override public void actionPerformed(ActionEvent e) { - Font f = new FontSelectorDialog - (null, GUIGlobals.CURRENTFONT).getSelectedFont(); - if (f != null) { - font = f; - } + Optional f = new FontSelectorDialog(null, GUIGlobals.CURRENTFONT).getSelectedFont(); + f.ifPresent(x -> font = x); } }); diff --git a/src/main/java/net/sf/jabref/gui/preftabs/FontSelectorDialog.java b/src/main/java/net/sf/jabref/gui/preftabs/FontSelectorDialog.java index c1067ecc428..f77702c7260 100644 --- a/src/main/java/net/sf/jabref/gui/preftabs/FontSelectorDialog.java +++ b/src/main/java/net/sf/jabref/gui/preftabs/FontSelectorDialog.java @@ -64,6 +64,7 @@ Portions copyright (C) 1999 Jason Ginchereau import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.reflect.InvocationTargetException; +import java.util.Optional; import java.util.Vector; import javax.swing.Box; @@ -186,10 +187,8 @@ private class ActionHandler implements ActionListener { @Override public void actionPerformed(ActionEvent evt) { - Font font = new FontSelectorDialog(FontSelector.this, getFont()).getSelectedFont(); - if (font != null) { - setFont(font); - } + Optional font = new FontSelectorDialog(FontSelector.this, getFont()).getSelectedFont(); + font.ifPresent(f -> setFont(f)); } } @@ -314,9 +313,9 @@ private void cancel() { dispose(); } - public Font getSelectedFont() { + public Optional getSelectedFont() { if (!isOK) { - return null; + return Optional.empty(); } int size; @@ -326,7 +325,7 @@ public Font getSelectedFont() { size = 14; } - return new Font(familyField.getText(), styleList.getSelectedIndex(), size); + return Optional.of(new Font(familyField.getText(), styleList.getSelectedIndex(), size)); } diff --git a/src/main/java/net/sf/jabref/gui/preftabs/NameFormatterTab.java b/src/main/java/net/sf/jabref/gui/preftabs/NameFormatterTab.java index 8ce03dfd47f..0db5d8a54e8 100644 --- a/src/main/java/net/sf/jabref/gui/preftabs/NameFormatterTab.java +++ b/src/main/java/net/sf/jabref/gui/preftabs/NameFormatterTab.java @@ -133,10 +133,9 @@ public Object getValueAt(int row, int column) { switch (column) { case 0: return tr.name; - case 1: + default: // Only two columns return tr.format; } - return null; // Unreachable. } @Override diff --git a/src/main/java/net/sf/jabref/gui/preftabs/TableColumnsTab.java b/src/main/java/net/sf/jabref/gui/preftabs/TableColumnsTab.java index 599874ea8eb..6e96e134fb1 100644 --- a/src/main/java/net/sf/jabref/gui/preftabs/TableColumnsTab.java +++ b/src/main/java/net/sf/jabref/gui/preftabs/TableColumnsTab.java @@ -150,10 +150,9 @@ public Object getValueAt(int row, int column) { switch (column) { case 0: return tr.name; - case 1: + default: // Only two columns return tr.length > 0 ? Integer.toString(tr.length) : ""; } - return null; // Unreachable. } @Override diff --git a/src/main/java/net/sf/jabref/gui/remote/JabRefMessageHandler.java b/src/main/java/net/sf/jabref/gui/remote/JabRefMessageHandler.java index 694d687ccb0..276baa03757 100644 --- a/src/main/java/net/sf/jabref/gui/remote/JabRefMessageHandler.java +++ b/src/main/java/net/sf/jabref/gui/remote/JabRefMessageHandler.java @@ -19,6 +19,7 @@ import net.sf.jabref.importer.ParserResult; import net.sf.jabref.logic.remote.server.MessageHandler; +import java.util.Optional; import java.util.Vector; public class JabRefMessageHandler implements MessageHandler { @@ -31,13 +32,13 @@ public JabRefMessageHandler(JabRef jabRef) { @Override public void handleMessage(String message) { - Vector loaded = jabRef.processArguments(message.split("\n"), false); - if (loaded == null) { + Optional> loaded = jabRef.processArguments(message.split("\n"), false); + if (!(loaded.isPresent())) { throw new IllegalStateException("Could not start JabRef with arguments " + message); } - for (int i = 0; i < loaded.size(); i++) { - ParserResult pr = loaded.elementAt(i); + for (int i = 0; i < loaded.get().size(); i++) { + ParserResult pr = loaded.get().elementAt(i); JabRef.jrf.addParserResult(pr, i == 0); } } diff --git a/src/main/java/net/sf/jabref/importer/EntryFromExternalFileCreator.java b/src/main/java/net/sf/jabref/importer/EntryFromExternalFileCreator.java index 04ebfb8886e..06524020a12 100644 --- a/src/main/java/net/sf/jabref/importer/EntryFromExternalFileCreator.java +++ b/src/main/java/net/sf/jabref/importer/EntryFromExternalFileCreator.java @@ -1,6 +1,7 @@ package net.sf.jabref.importer; import java.io.File; +import java.util.Optional; import net.sf.jabref.model.entry.BibEntry; import net.sf.jabref.external.ExternalFileType; @@ -20,12 +21,12 @@ public boolean accept(File f) { } @Override - protected BibEntry createBibtexEntry(File file) { + protected Optional createBibtexEntry(File file) { if (!accept(file)) { - return null; + return Optional.empty(); } - return new BibEntry(); + return Optional.of(new BibEntry()); } @Override diff --git a/src/main/java/net/sf/jabref/importer/EntryFromFileCreator.java b/src/main/java/net/sf/jabref/importer/EntryFromFileCreator.java index 803c561ed0c..31398d7680e 100644 --- a/src/main/java/net/sf/jabref/importer/EntryFromFileCreator.java +++ b/src/main/java/net/sf/jabref/importer/EntryFromFileCreator.java @@ -17,6 +17,7 @@ import java.io.File; import java.util.List; +import java.util.Optional; import java.util.StringTokenizer; import net.sf.jabref.Globals; @@ -55,7 +56,7 @@ public abstract class EntryFromFileCreator implements java.io.FileFilter { this.externalFileType = externalFileType; } - protected abstract BibEntry createBibtexEntry(File f); + protected abstract Optional createBibtexEntry(File f); /** *

@@ -98,22 +99,22 @@ public BibEntry createEntry(File f, boolean addPathTokensAsKeywords) { if ((f == null) || !f.exists()) { return null; } - BibEntry newEntry = createBibtexEntry(f); + Optional newEntry = createBibtexEntry(f); - if (newEntry == null) { + if (!(newEntry.isPresent())) { return null; } if (addPathTokensAsKeywords) { - appendToField(newEntry, "keywords", extractPathesToKeyWordsfield(f.getAbsolutePath())); + appendToField(newEntry.get(), "keywords", extractPathesToKeyWordsfield(f.getAbsolutePath())); } - if (newEntry.getField("title") == null) { - newEntry.setField("title", f.getName()); + if (newEntry.get().getField("title") == null) { + newEntry.get().setField("title", f.getName()); } - addFileInfo(newEntry, f); - return newEntry; + addFileInfo(newEntry.get(), f); + return newEntry.get(); } /** Returns the ExternalFileType that is imported here */ diff --git a/src/main/java/net/sf/jabref/importer/EntryFromPDFCreator.java b/src/main/java/net/sf/jabref/importer/EntryFromPDFCreator.java index a6e622bb6a2..365a810ddaa 100644 --- a/src/main/java/net/sf/jabref/importer/EntryFromPDFCreator.java +++ b/src/main/java/net/sf/jabref/importer/EntryFromPDFCreator.java @@ -5,6 +5,7 @@ import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.List; +import java.util.Optional; import net.sf.jabref.gui.IconTheme; import org.apache.pdfbox.pdmodel.PDDocument; @@ -54,17 +55,17 @@ public boolean accept(File f) { } @Override - protected BibEntry createBibtexEntry(File pdfFile) { + protected Optional createBibtexEntry(File pdfFile) { if (!accept(pdfFile)) { - return null; + return Optional.empty(); } PdfImporter pi = new PdfImporter(JabRef.jrf, JabRef.jrf.getCurrentBasePanel(), JabRef.jrf.getCurrentBasePanel().mainTable, -1); String[] fileNames = {pdfFile.toString()}; ImportPdfFilesResult res = pi.importPdfFiles(fileNames, JabRef.jrf); assert res.entries.size() == 1; - return res.entries.get(0); + return Optional.of(res.entries.get(0)); /*addEntryDataFromPDDocumentInformation(pdfFile, entry); addEntyDataFromXMP(pdfFile, entry); diff --git a/src/main/java/net/sf/jabref/importer/HTMLConverter.java b/src/main/java/net/sf/jabref/importer/HTMLConverter.java index c5c08329e05..e4e6ede3918 100644 --- a/src/main/java/net/sf/jabref/importer/HTMLConverter.java +++ b/src/main/java/net/sf/jabref/importer/HTMLConverter.java @@ -773,11 +773,11 @@ public class HTMLConverter implements LayoutFormatter, Formatter { public HTMLConverter() { super(); for (String[] aConversionList : conversionList) { - if (aConversionList[2].length() >= 1) { - if (aConversionList[1].length() >= 1) { + if (!(aConversionList[2].isEmpty())) { + if (!(aConversionList[1].isEmpty())) { escapedSymbols.put("&" + aConversionList[1] + ";", aConversionList[2]); } - if (aConversionList[0].length() >= 1) { + if (!(aConversionList[0].isEmpty())) { numSymbols.put(Integer.decode(aConversionList[0]), aConversionList[2]); if (Integer.decode(aConversionList[0]) > 128) { Character c = (char) Integer.decode(aConversionList[0]).intValue(); diff --git a/src/main/java/net/sf/jabref/importer/fileformat/JSONEntryParser.java b/src/main/java/net/sf/jabref/importer/fileformat/JSONEntryParser.java index b2dc530e506..2bf307cd03d 100644 --- a/src/main/java/net/sf/jabref/importer/fileformat/JSONEntryParser.java +++ b/src/main/java/net/sf/jabref/importer/fileformat/JSONEntryParser.java @@ -206,8 +206,8 @@ public static BibEntry SpringerJSONtoBibtex(JSONObject springerJsonEntry) { } // Page numbers - if (springerJsonEntry.has("startingPage") && (springerJsonEntry.getString("startingPage").length() > 0)) { - if (springerJsonEntry.has("endPage") && (springerJsonEntry.getString("endPage").length() > 0)) { + if (springerJsonEntry.has("startingPage") && !(springerJsonEntry.getString("startingPage").isEmpty())) { + if (springerJsonEntry.has("endPage") && !(springerJsonEntry.getString("endPage").isEmpty())) { entry.setField("pages", springerJsonEntry.getString("startingPage") + "--" + springerJsonEntry.getString("endPage")); } else { diff --git a/src/main/java/net/sf/jabref/logic/labelPattern/LabelPatternUtil.java b/src/main/java/net/sf/jabref/logic/labelPattern/LabelPatternUtil.java index e5a2e86500d..5760c3ef9d1 100644 --- a/src/main/java/net/sf/jabref/logic/labelPattern/LabelPatternUtil.java +++ b/src/main/java/net/sf/jabref/logic/labelPattern/LabelPatternUtil.java @@ -122,8 +122,8 @@ private static String normalize(String content) { * @return The content without diacritics. */ private static String removeDiacritics(String content) { - if (content == null) { - return null; + if (content.isEmpty()) { + return content; } // Replace umaut with '?e' @@ -175,8 +175,11 @@ private static String unifyDiacritics(String content) { * @return True if the author or editor is an institution. */ private static boolean isInstitution(String author) { - return (author.charAt(0) == '{') - && (author.charAt(author.length() - 1) == '}'); + if (!(author.isEmpty())) { + return (author.charAt(0) == '{') && (author.charAt(author.length() - 1) == '}'); + } else { + return false; // In case of empty author + } } /** @@ -245,14 +248,14 @@ private static boolean isInstitution(String author) { * * @param content the institution to generate a Bibtex key for * @return

    - *
  • the institutation key
  • + *
  • the institution key
  • *
  • "" in the case of a failure
  • *
  • null if content is null
  • *
*/ private static String generateInstitutionKey(String content) { - if (content == null) { - return null; + if (content.isEmpty()) { + return content; } content = LabelPatternUtil.unifyDiacritics(content); List ignore = Arrays.asList("press", "the"); diff --git a/src/main/java/net/sf/jabref/logic/util/strings/StringUtil.java b/src/main/java/net/sf/jabref/logic/util/strings/StringUtil.java index 621fe5dff14..ff56caa2158 100644 --- a/src/main/java/net/sf/jabref/logic/util/strings/StringUtil.java +++ b/src/main/java/net/sf/jabref/logic/util/strings/StringUtil.java @@ -37,7 +37,7 @@ public class StringUtil { */ public static String shaveString(String toShave) { - if ((toShave == null) || (toShave.length() == 0)) { + if ((toShave == null) || (toShave.isEmpty())) { return toShave; } toShave = toShave.trim(); @@ -436,7 +436,7 @@ public static String putBracesAroundCapitals(String s) { return buf.toString(); /* - * if (s.length() == 0) return s; // Protect against ArrayIndexOutOf.... + * if (s.isEmpty()) return s; // Protect against ArrayIndexOutOf.... * StringBuffer buf = new StringBuffer(); * * Matcher mcr = titleCapitalPattern.matcher(s.substring(1)); while diff --git a/src/main/java/net/sf/jabref/model/entry/BibEntry.java b/src/main/java/net/sf/jabref/model/entry/BibEntry.java index f2ae25ff351..69bfc25d9a8 100644 --- a/src/main/java/net/sf/jabref/model/entry/BibEntry.java +++ b/src/main/java/net/sf/jabref/model/entry/BibEntry.java @@ -569,7 +569,7 @@ public void addKeyword(String keyword) { List keywords = this.getSeparatedKeywords(); Boolean duplicate = false; - if ((keyword == null) || (keyword.length() == 0)) { + if ((keyword == null) || (keyword.isEmpty())) { return; } diff --git a/src/main/java/net/sf/jabref/util/Util.java b/src/main/java/net/sf/jabref/util/Util.java index 0d964cd8dc1..795ae19a6e8 100644 --- a/src/main/java/net/sf/jabref/util/Util.java +++ b/src/main/java/net/sf/jabref/util/Util.java @@ -326,7 +326,7 @@ private static void setAutomaticFields(BibEntry entry, boolean setOwner, String if (setOwner) { // No or empty owner field? // if (entry.getField(Globals.OWNER) == null - // || ((String) entry.getField(Globals.OWNER)).length() == 0) { + // || ((String) entry.getField(Globals.OWNER)).isEmpty()) { // Set owner field to default value entry.setField(BibtexFields.OWNER, owner); // }