[jabref] 02/07: add 001_koppor_debian_3.8.patch

Tony Mancill tmancill at moszumanska.debian.org
Thu Dec 15 07:25:40 UTC 2016


This is an automated email from the git hooks/post-receive script.

tmancill pushed a commit to branch dev
in repository jabref.

commit cdabebd44b8ef9acd608fb17bb2f10fe7e79503b
Author: tony mancill <tmancill at debian.org>
Date:   Wed Dec 14 23:09:56 2016 -0800

    add 001_koppor_debian_3.8.patch
    
    difference between jabref/master and koppor/debian_3.8
---
 debian/patches/001_koppor_debian_3.8.patch | 1427 ++++++++++++++++++++++++++++
 debian/patches/series                      |    1 +
 2 files changed, 1428 insertions(+)

diff --git a/debian/patches/001_koppor_debian_3.8.patch b/debian/patches/001_koppor_debian_3.8.patch
new file mode 100644
index 0000000..785d609
--- /dev/null
+++ b/debian/patches/001_koppor_debian_3.8.patch
@@ -0,0 +1,1427 @@
+diff --git a/build.gradle b/build.gradle
+index c31aab6d2..343d21c63 100644
+--- a/build.gradle
++++ b/build.gradle
+@@ -91,8 +91,6 @@ dependencies {
+     compile 'org.openoffice:ridl:4.1.2'
+     compile 'org.openoffice:unoil:4.1.2'
+ 
+-    compile 'com.github.bkromhout:java-diff-utils:2.1.1'
+-
+     antlr3 'org.antlr:antlr:3.5.2'
+     compile 'org.antlr:antlr-runtime:3.5.2'
+ 
+@@ -102,7 +100,7 @@ dependencies {
+     // VersionEye states that 6.0.5 is the most recent version, but http://dev.mysql.com/downloads/connector/j/ shows that as "Development Release"
+     compile 'mysql:mysql-connector-java:5.1.40'
+ 
+-    compile 'com.impossibl.pgjdbc-ng:pgjdbc-ng:0.6'
++    compile 'org.postgresql:postgresql:9.4.1210'
+ 
+     compile 'net.java.dev.glazedlists:glazedlists_java15:1.9.1'
+     compile fileTree(dir: 'lib', includes: ['*.jar'])
+@@ -123,13 +121,6 @@ dependencies {
+     compile 'org.xmlunit:xmlunit-core:2.3.0'
+     compile 'org.xmlunit:xmlunit-matchers:2.3.0'
+ 
+-    // need to use snapshots as the stable version is from 2013 and doesn't support v1.0.1 CitationStyles
+-    compile 'org.citationstyles:styles:1.0.1-SNAPSHOT'
+-    compile 'org.citationstyles:locales:1.0.1-SNAPSHOT'
+-    compile 'de.undercouch:citeproc-java:1.0.1'
+-
+-    compile 'com.github.lgooddatepicker:LGoodDatePicker:8.3.0'
+-
+     testCompile 'junit:junit:4.12'
+     testCompile 'org.mockito:mockito-core:2.3.0'
+     testCompile 'com.github.tomakehurst:wiremock:2.4.1'
+diff --git a/external-libraries.txt b/external-libraries.txt
+index 4d969fa02..52518a719 100644
+--- a/external-libraries.txt
++++ b/external-libraries.txt
+@@ -45,16 +45,6 @@ Project: Apache Commons Logging
+ URL:     http://commons.apache.org/logging/
+ License: Apache-2.0
+ 
+-Id:      com.github.bkromhout:java-diff-utils
+-Project: java-diff-utils
+-URL:     https://github.com/bkromhout/java-diff-utils
+-License: Apache-2.0
+-
+-Id:      com.impossibl.pgjdbc-ng:pgjdbc-ng
+-Project: pgjdbc-ng
+-URL:     http://impossibl.github.io/pgjdbc-ng
+-License: BSD
+-
+ Id:      com.jgoodies:jgoodies-common
+ Project: JGoodies Common
+ URL:     http://www.jgoodies.com/downloads/libraries/
+@@ -145,10 +135,11 @@ Project: SwingX
+ URL:     https://swingx.java.net/
+ License: LGPL-3.0
+ 
+-Id:      com.github.lgooddatepicker:LGoodDatePicker
+-Project: LGoodDatePicker
+-URL:     https://github.com/LGoodDatePicker/LGoodDatePicker
+-License: MIT
++Id:      microba
++Path:    lib/microba.jar
++Project: Microba
++URL:     https://github.com/tdbear/microba
++License: BSD
+ 
+ Id:      spin
+ Path:    lib/spin.jar
+@@ -156,19 +147,4 @@ Project: Spin
+ URL:     http://spin.sourceforge.net/
+ License: LGPL-2.1+
+ 
+-Id:      org.citationstyles.styles
+-Project: CSL Styles
+-URL:     https://github.com/citation-style-language/styles
+-Licence: Creative Commons Attribution-ShareAlike 3.0 Unported license
+-
+-Id:      org.citationstyles.locales
+-Project: CSL Locales
+-URL:     https://github.com/citation-style-language/locales
+-Licence: CC-BY-SA-3.0
+-
+-Id:      de.undercouch.citeproc-java
+-Project: Citeproc-Java
+-URL:     http://michel-kraemer.github.io/citeproc-java/
+-Licence: Apache-2.0
+-
+ The last entry has to end with an empty line. Otherwise the entry is not present in About.html.
+diff --git a/src/main/java/net/sf/jabref/gui/BasePanel.java b/src/main/java/net/sf/jabref/gui/BasePanel.java
+index f89a0a9bc..25a6d1437 100644
+--- a/src/main/java/net/sf/jabref/gui/BasePanel.java
++++ b/src/main/java/net/sf/jabref/gui/BasePanel.java
+@@ -98,7 +98,6 @@ import net.sf.jabref.logic.autocompleter.AutoCompleter;
+ import net.sf.jabref.logic.autocompleter.AutoCompleterFactory;
+ import net.sf.jabref.logic.autocompleter.ContentAutoCompleters;
+ import net.sf.jabref.logic.bibtexkeypattern.BibtexKeyPatternUtil;
+-import net.sf.jabref.logic.citationstyle.CitationStyleCache;
+ import net.sf.jabref.logic.exporter.BibtexDatabaseWriter;
+ import net.sf.jabref.logic.exporter.FileSaveSession;
+ import net.sf.jabref.logic.exporter.SaveException;
+@@ -151,8 +150,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
+     private final BibDatabaseContext bibDatabaseContext;
+     private final MainTableDataModel tableModel;
+ 
+-    private final CitationStyleCache citationStyleCache;
+-
+     // To contain instantiated entry editors. This is to save time
+     // As most enums, this must not be null
+     private BasePanelMode mode = BasePanelMode.SHOWING_NOTHING;
+@@ -219,8 +216,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
+         this.frame = frame;
+         this.tableModel = new MainTableDataModel(getBibDatabaseContext());
+ 
+-        citationStyleCache = new CitationStyleCache(bibDatabaseContext);
+-
+         setupMainPanel();
+ 
+         setupActions();
+@@ -2382,10 +2377,6 @@ public class BasePanel extends JPanel implements ClipboardOwner, FileUpdateListe
+         this.currentSearchQuery = currentSearchQuery;
+     }
+ 
+-    public CitationStyleCache getCitationStyleCache() {
+-        return citationStyleCache;
+-    }
+-
+     public PreviewPanel getPreviewPanel() {
+         if (selectionListener == null) {
+             // only occurs if this is called while instantiating this BasePanel
+diff --git a/src/main/java/net/sf/jabref/gui/IconTheme.java b/src/main/java/net/sf/jabref/gui/IconTheme.java
+index f43f8f9bd..2177138bc 100644
+--- a/src/main/java/net/sf/jabref/gui/IconTheme.java
++++ b/src/main/java/net/sf/jabref/gui/IconTheme.java
+@@ -158,7 +158,6 @@ public class IconTheme {
+         FACEBOOK("\uf20c"), /* css: facebook */
+         BLOG("\uf46b"), /* css: rss */
+         GLOBAL_SEARCH("\uF1E7"), /* css: earth */
+-        DATE_PICKER("\uF0ED;"), /* css: calendar */
+         // STILL MISSING:
+         GROUP_REGULAR("\uF4E6", Color.RED);
+ 
+diff --git a/src/main/java/net/sf/jabref/gui/PreviewPanel.java b/src/main/java/net/sf/jabref/gui/PreviewPanel.java
+index 0238f1861..97501e09b 100644
+--- a/src/main/java/net/sf/jabref/gui/PreviewPanel.java
++++ b/src/main/java/net/sf/jabref/gui/PreviewPanel.java
+@@ -31,8 +31,6 @@ import net.sf.jabref.JabRefExecutorService;
+ import net.sf.jabref.gui.desktop.JabRefDesktop;
+ import net.sf.jabref.gui.fieldeditors.PreviewPanelTransferHandler;
+ import net.sf.jabref.gui.keyboard.KeyBinding;
+-import net.sf.jabref.gui.worker.CitationStyleWorker;
+-import net.sf.jabref.logic.citationstyle.CitationStyle;
+ import net.sf.jabref.logic.exporter.ExportFormats;
+ import net.sf.jabref.logic.l10n.Localization;
+ import net.sf.jabref.logic.layout.Layout;
+@@ -79,7 +77,6 @@ public class PreviewPanel extends JPanel implements SearchQueryHighlightListener
+     private final CopyPreviewAction copyPreviewAction = new CopyPreviewAction();
+ 
+     private Optional<Pattern> highlightPattern = Optional.empty();
+-    private Optional<CitationStyleWorker> citationStyleWorker = Optional.empty();
+ 
+     /**
+      * @param databaseContext
+@@ -202,21 +199,10 @@ public class PreviewPanel extends JPanel implements SearchQueryHighlightListener
+         PreviewPreferences previewPreferences = Globals.prefs.getPreviewPreferences();
+         String style = previewPreferences.getPreviewCycle().get(previewPreferences.getPreviewCyclePosition());
+ 
+-        if (CitationStyle.isCitationStyleFile(style)) {
+-            if (basePanel.isPresent()) {
+-                layout = Optional.empty();
+-                CitationStyle citationStyle = CitationStyle.createCitationStyleFromFile(style);
+-                if (citationStyle != null) {
+-                    basePanel.get().getCitationStyleCache().setCitationStyle(citationStyle);
+-                    basePanel.get().output(Localization.lang("Preview style changed to: %0", citationStyle.getTitle()));
+-                }
+-            }
+-        } else {
+             updatePreviewLayout(previewPreferences.getPreviewStyle());
+             if (basePanel.isPresent()) {
+                 basePanel.get().output(Localization.lang("Preview style changed to: %0", Localization.lang("Preview")));
+             }
+-        }
+ 
+         update();
+     }
+@@ -264,11 +250,6 @@ public class PreviewPanel extends JPanel implements SearchQueryHighlightListener
+     public void update() {
+         ExportFormats.entryNumber = 1; // Set entry number in case that is included in the preview layout.
+ 
+-        if (citationStyleWorker.isPresent()){
+-            citationStyleWorker.get().cancel(true);
+-            citationStyleWorker = Optional.empty();
+-        }
+-
+         if (layout.isPresent()){
+             StringBuilder sb = new StringBuilder();
+             bibEntry.ifPresent(entry -> sb.append(layout.get()
+@@ -276,10 +257,6 @@ public class PreviewPanel extends JPanel implements SearchQueryHighlightListener
+             setPreviewLabel(sb.toString());
+             markHighlights();
+         }
+-        else if (basePanel.isPresent()){
+-            citationStyleWorker = Optional.of(new CitationStyleWorker(this, previewPane));
+-            citationStyleWorker.get().execute();
+-        }
+ 
+     }
+ 
+@@ -316,18 +293,12 @@ public class PreviewPanel extends JPanel implements SearchQueryHighlightListener
+ 
+     /**
+      * this fixes the Layout, the user cannot change it anymore. Useful for testing the styles in the settings
+-     * @param parameter should be either a {@link String} (for the old PreviewStyle) or a {@link CitationStyle}.
+      */
+-    public PreviewPanel setFixedLayout(Object parameter) {
++    public PreviewPanel setFixedLayout(String parameter) {
+         this.fixedLayout = true;
+ 
+         if (parameter instanceof String) {
+             updatePreviewLayout((String) parameter);
+-        } else if (parameter instanceof CitationStyle) {
+-            layout = Optional.empty();
+-            if (basePanel.isPresent()){
+-                basePanel.get().getCitationStyleCache().setCitationStyle((CitationStyle) parameter);
+-            }
+         } else {
+             LOGGER.error("unknown style type");
+         }
+diff --git a/src/main/java/net/sf/jabref/gui/date/DatePickerButton.java b/src/main/java/net/sf/jabref/gui/date/DatePickerButton.java
+index 6b4a3b997..a11d7710d 100644
+--- a/src/main/java/net/sf/jabref/gui/date/DatePickerButton.java
++++ b/src/main/java/net/sf/jabref/gui/date/DatePickerButton.java
+@@ -1,30 +1,26 @@
+ package net.sf.jabref.gui.date;
+ 
+ import java.awt.BorderLayout;
+-import java.time.LocalDate;
+-import java.time.ZonedDateTime;
+-import java.time.format.DateTimeFormatter;
++import java.awt.event.ActionEvent;
++import java.awt.event.ActionListener;
++import java.util.Date;
+ 
+ import javax.swing.JComponent;
+ import javax.swing.JPanel;
+ 
+ import net.sf.jabref.Globals;
+-import net.sf.jabref.gui.IconTheme;
+ import net.sf.jabref.gui.fieldeditors.FieldEditor;
+ import net.sf.jabref.logic.util.date.EasyDateFormat;
+ import net.sf.jabref.preferences.JabRefPreferences;
+ 
+-import com.github.lgooddatepicker.components.DatePicker;
+-import com.github.lgooddatepicker.components.DatePickerSettings;
+-import com.github.lgooddatepicker.optionalusertools.DateChangeListener;
+-import com.github.lgooddatepicker.zinternaltools.DateChangeEvent;
++import com.michaelbaranov.microba.calendar.DatePicker;
+ 
+ /**
+  * wrapper and service class for the DatePicker handling at the EntryEditor
+  */
+-public class DatePickerButton implements DateChangeListener {
++public class DatePickerButton implements ActionListener {
+ 
+-    private final DatePicker datePicker;
++    private final DatePicker datePicker = new DatePicker();
+     private final JPanel panel = new JPanel();
+     private final FieldEditor editor;
+     private final boolean isoFormat;
+@@ -32,29 +28,24 @@ public class DatePickerButton implements DateChangeListener {
+ 
+     public DatePickerButton(FieldEditor pEditor, Boolean isoFormat) {
+         this.isoFormat = isoFormat;
+-        // Create a date picker with hidden text field (showing button only).
+-        DatePickerSettings dateSettings = new DatePickerSettings();
+-        dateSettings.setVisibleDateTextField(false);
+-        dateSettings.setGapBeforeButtonPixels(0);
+-
+-        datePicker = new DatePicker(dateSettings);
+-        datePicker.addDateChangeListener(this);
+-        datePicker.getComponentToggleCalendarButton().setIcon(IconTheme.JabRefIcon.DATE_PICKER.getIcon());
+-        datePicker.getComponentToggleCalendarButton().setText("");
+-
++        datePicker.showButtonOnly(true);
++        datePicker.addActionListener(this);
++        datePicker.setShowTodayButton(true);
+         panel.setLayout(new BorderLayout());
+         panel.add(datePicker, BorderLayout.WEST);
+         editor = pEditor;
+     }
+ 
+     @Override
+-    public void dateChanged(DateChangeEvent dateChangeEvent) {
+-        LocalDate date = datePicker.getDate();
++    public void actionPerformed(ActionEvent e) {
++        Date date = datePicker.getDate();
+         if (date != null) {
+             if (isoFormat) {
+-                editor.setText(date.format(DateTimeFormatter.ISO_DATE));
++                editor.setText(EasyDateFormat.isoDateFormat().getDateAt(date));
+             } else {
+-                EasyDateFormat.fromTimeStampFormat(Globals.prefs.get(JabRefPreferences.TIME_STAMP_FORMAT)).getDateAt(ZonedDateTime.from(date));
++                editor.setText(EasyDateFormat
++                        .fromTimeStampFormat(Globals.prefs.get(JabRefPreferences.TIME_STAMP_FORMAT))
++                        .getDateAt(date));
+             }
+         } else {
+             // in this case the user selected "none" in the date picker, so we just clear the field
+diff --git a/src/main/java/net/sf/jabref/gui/mergeentries/MergeEntries.java b/src/main/java/net/sf/jabref/gui/mergeentries/MergeEntries.java
+index e5b65c483..1b19f585e 100644
+--- a/src/main/java/net/sf/jabref/gui/mergeentries/MergeEntries.java
++++ b/src/main/java/net/sf/jabref/gui/mergeentries/MergeEntries.java
+@@ -34,7 +34,6 @@ import net.sf.jabref.logic.bibtex.BibEntryWriter;
+ import net.sf.jabref.logic.bibtex.LatexFieldFormatter;
+ import net.sf.jabref.logic.formatter.casechanger.SentenceCaseFormatter;
+ import net.sf.jabref.logic.l10n.Localization;
+-import net.sf.jabref.logic.util.strings.DiffHighlighting;
+ import net.sf.jabref.model.database.BibDatabaseMode;
+ import net.sf.jabref.model.entry.BibEntry;
+ import net.sf.jabref.model.entry.InternalBibtexFields;
+@@ -272,7 +271,7 @@ public class MergeEntries {
+         mergePanel.add(boldFontLabel(Localization.lang("Entry type")), CELL_CONSTRAINTS.xy(1, 1));
+ 
+         JTextPane leftTypeDisplay = new DiffHighlightingTextPane();
+-        leftTypeDisplay.setText(DiffHighlighting.HTML_START + leftEntry.getType() + DiffHighlighting.HTML_END);
++        leftTypeDisplay.setText(leftEntry.getType());
+         mergePanel.add(leftTypeDisplay, CELL_CONSTRAINTS.xy(3, 1));
+         if (leftEntry.getType().equals(rightEntry.getType())) {
+             identicalTypes = true;
+@@ -290,13 +289,14 @@ public class MergeEntries {
+             typeRadioButtons.get(0).setSelected(true);
+         }
+         JTextPane rightTypeDisplay = new DiffHighlightingTextPane();
+-        rightTypeDisplay.setText(DiffHighlighting.HTML_START + rightEntry.getType() + DiffHighlighting.HTML_END);
++        rightTypeDisplay.setText(rightEntry.getType());
+         mergePanel.add(rightTypeDisplay, CELL_CONSTRAINTS.xy(11, 1));
+     }
+ 
+     private void setupHeadingRows() {
+         mainPanel.add(boldFontLabel(Localization.lang("Use")), CELL_CONSTRAINTS.xyw(4, 1, 7, "center, bottom"));
+         mainPanel.add(diffMode, CELL_CONSTRAINTS.xy(11, 1, "right, bottom"));
++        diffMode.setVisible(false);
+ 
+         // Set headings
+         for (int i = 0; i < 6; i++) {
+@@ -362,33 +362,11 @@ public class MergeEntries {
+         for (String field : fields) {
+             String leftString = leftEntry.getField(field).orElse("");
+             String rightString = rightEntry.getField(field).orElse("");
+-            switch (diffMode.getSelectedIndex()) {
+-            case 0: // Plain text
+-                break;
+-            case 1: // Latexdiff style - word
+-                rightString = DiffHighlighting.generateDiffHighlighting(leftString, rightString, " ");
+-                break;
+-            case 2: // Latexdiff style - character
+-                rightString = DiffHighlighting.generateDiffHighlighting(leftString, rightString, "");
+-                break;
+-            case 3: // Symmetric style - word
+-                String tmpLeftString = DiffHighlighting.generateSymmetricHighlighting(leftString, rightString, " ");
+-                rightString = DiffHighlighting.generateSymmetricHighlighting(rightString, leftString, " ");
+-                leftString = tmpLeftString;
+-                break;
+-            case 4: // Symmetric style - character
+-                tmpLeftString = DiffHighlighting.generateSymmetricHighlighting(leftString, rightString, "");
+-                rightString = DiffHighlighting.generateSymmetricHighlighting(rightString, leftString, "");
+-                leftString = tmpLeftString;
+-                break;
+-            default: // Shouldn't happen
+-                break;
+-            }
+             if ((leftString != null) && leftTextPanes.containsKey(field)) {
+-                leftTextPanes.get(field).setText(DiffHighlighting.HTML_START + leftString + DiffHighlighting.HTML_END);
++                leftTextPanes.get(field).setText(leftString);
+             }
+             if ((rightString != null) && rightTextPanes.containsKey(field)) {
+-                rightTextPanes.get(field).setText(DiffHighlighting.HTML_START + rightString + DiffHighlighting.HTML_END);
++                rightTextPanes.get(field).setText(rightString);
+             }
+         }
+         SwingUtilities.invokeLater(() -> scrollPane.getVerticalScrollBar()
+diff --git a/src/main/java/net/sf/jabref/gui/preftabs/PreviewPrefsTab.java b/src/main/java/net/sf/jabref/gui/preftabs/PreviewPrefsTab.java
+index 38bdaf180..3cbfc9978 100644
+--- a/src/main/java/net/sf/jabref/gui/preftabs/PreviewPrefsTab.java
++++ b/src/main/java/net/sf/jabref/gui/preftabs/PreviewPrefsTab.java
+@@ -22,7 +22,6 @@ import net.sf.jabref.Globals;
+ import net.sf.jabref.JabRefGUI;
+ import net.sf.jabref.gui.BasePanel;
+ import net.sf.jabref.gui.PreviewPanel;
+-import net.sf.jabref.logic.citationstyle.CitationStyle;
+ import net.sf.jabref.logic.l10n.Localization;
+ import net.sf.jabref.logic.util.TestEntry;
+ import net.sf.jabref.preferences.PreviewPreferences;
+@@ -38,8 +37,6 @@ public class PreviewPrefsTab extends JPanel implements PrefsTab {
+ 
+     private static final Log LOGGER = LogFactory.getLog(PreviewPrefsTab.class);
+ 
+-    private SwingWorker<List<CitationStyle>, Void> discoverCitationStyleWorker;
+-
+     private final DefaultListModel<Object> availableModel = new DefaultListModel<>();
+     private final DefaultListModel<Object> chosenModel = new DefaultListModel<>();
+ 
+@@ -171,16 +168,12 @@ public class PreviewPrefsTab extends JPanel implements PrefsTab {
+         chosenModel.clear();
+         boolean isPreviewChosen = false;
+         for (String style : previewPreferences.getPreviewCycle()) {
+-            if (CitationStyle.isCitationStyleFile(style)) {
+-                chosenModel.addElement(CitationStyle.createCitationStyleFromFile(style));
+-            } else {
+                 if (isPreviewChosen) {
+                     LOGGER.error("Preview is already in the list, something went wrong");
+                     continue;
+                 }
+                 isPreviewChosen = true;
+                 chosenModel.addElement(Localization.lang("Preview"));
+-            }
+         }
+ 
+         availableModel.clear();
+@@ -193,35 +186,6 @@ public class PreviewPrefsTab extends JPanel implements PrefsTab {
+         btnUp.setEnabled(!chosen.isSelectionEmpty());
+         btnDown.setEnabled(!chosen.isSelectionEmpty());
+ 
+-        if (discoverCitationStyleWorker != null){
+-            discoverCitationStyleWorker.cancel(true);
+-        }
+-
+-        discoverCitationStyleWorker = new SwingWorker<List<CitationStyle>, Void>() {
+-            @Override
+-            protected List<CitationStyle> doInBackground() throws Exception {
+-                return CitationStyle.discoverCitationStyles();
+-            }
+-
+-            @Override
+-            public void done(){
+-                if (this.isCancelled()) {
+-                    return;
+-                }
+-                try {
+-                    get().stream()
+-                            .filter(style -> !previewPreferences.getPreviewCycle().contains(style.getFilepath()))
+-                            .sorted((style0, style1) -> style0.getTitle().compareTo(style1.getTitle()))
+-                            .forEach(availableModel::addElement);
+-
+-                    btnRight.setEnabled(!availableModel.isEmpty());
+-                } catch (InterruptedException | ExecutionException e) {
+-                    LOGGER.error("something went wrong while adding the discovered CitationStyles to the list ");
+-                }
+-            }
+-        };
+-        discoverCitationStyleWorker.execute();
+-
+         layout.setText(Globals.prefs.getPreviewPreferences().getPreviewStyle().replace("__NEWLINE__", "\n"));
+     }
+ 
+@@ -231,11 +195,7 @@ public class PreviewPrefsTab extends JPanel implements PrefsTab {
+         Enumeration<Object> elements = chosenModel.elements();
+         while (elements.hasMoreElements()) {
+             Object obj = elements.nextElement();
+-            if (obj instanceof CitationStyle) {
+-                styles.add(((CitationStyle) obj).getFilepath());
+-            } else if (obj instanceof String) {
+-                styles.add("Preview");
+-            }
++            styles.add("Preview");
+         }
+         PreviewPreferences previewPreferences = Globals.prefs.getPreviewPreferences()
+                 .getBuilder()
+diff --git a/src/main/java/net/sf/jabref/gui/worker/CitationStyleWorker.java b/src/main/java/net/sf/jabref/gui/worker/CitationStyleWorker.java
+deleted file mode 100644
+index 1cd1489d7..000000000
+--- a/src/main/java/net/sf/jabref/gui/worker/CitationStyleWorker.java
++++ /dev/null
+@@ -1,77 +0,0 @@
+-package net.sf.jabref.gui.worker;
+-
+-import java.util.Objects;
+-import java.util.Optional;
+-import java.util.concurrent.ExecutionException;
+-
+-import javax.swing.JEditorPane;
+-import javax.swing.SwingWorker;
+-
+-import net.sf.jabref.gui.BasePanel;
+-import net.sf.jabref.gui.PreviewPanel;
+-import net.sf.jabref.logic.citationstyle.CitationStyle;
+-import net.sf.jabref.logic.l10n.Localization;
+-import net.sf.jabref.model.entry.BibEntry;
+-
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
+-
+-
+-/**
+- * Generates a citation and updates the linked preview panel
+- */
+-public class CitationStyleWorker extends SwingWorker<String, Void> {
+-
+-    private static final Log LOGGER = LogFactory.getLog(CitationStyleWorker.class);
+-
+-    private final PreviewPanel previewPanel;
+-
+-
+-    public CitationStyleWorker(PreviewPanel previewPanel, JEditorPane previewPane) {
+-        this.previewPanel = Objects.requireNonNull(previewPanel);
+-        Objects.requireNonNull(previewPane);
+-
+-        Optional<BasePanel> basePanel = previewPanel.getBasePanel();
+-        if (basePanel.isPresent()){
+-            CitationStyle citationStyle = basePanel.get().getCitationStyleCache().getCitationStyle();
+-            previewPane.setText("<i>" + Localization.lang("Processing %0", Localization.lang("Citation Style")) +
+-                    ": " + citationStyle.getTitle() + " ..." + "</i>");
+-        }
+-        previewPane.revalidate();
+-    }
+-
+-    @Override
+-    protected String doInBackground() throws Exception {
+-        Optional<BasePanel> basePanel = previewPanel.getBasePanel();
+-        BibEntry entry = previewPanel.getEntry();
+-
+-        String fieldText = "";
+-        if ((entry != null) && basePanel.isPresent()) {
+-            fieldText = basePanel.get().getCitationStyleCache().getCitationFor(entry);
+-        }
+-        return fieldText;
+-    }
+-
+-    @Override
+-    public void done() {
+-        if (this.isCancelled()) {
+-            return;
+-        }
+-        String text;
+-        Boolean success = true;
+-        try {
+-            text = this.get();
+-        } catch (InterruptedException | ExecutionException e) {
+-            LOGGER.error("Error while generating citation style", e);
+-            text = Localization.lang("Error while generating citation style");
+-            success = false;
+-        }
+-
+-        previewPanel.setPreviewLabel(text);
+-
+-        if (success) {
+-            previewPanel.markHighlights();
+-        }
+-    }
+-
+-}
+diff --git a/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyle.java b/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyle.java
+deleted file mode 100644
+index f4988b46d..000000000
+--- a/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyle.java
++++ /dev/null
+@@ -1,178 +0,0 @@
+-package net.sf.jabref.logic.citationstyle;
+-
+-import java.io.IOException;
+-import java.io.StringReader;
+-import java.net.URISyntaxException;
+-import java.net.URL;
+-import java.nio.charset.StandardCharsets;
+-import java.nio.file.Files;
+-import java.nio.file.NoSuchFileException;
+-import java.nio.file.Paths;
+-import java.util.ArrayList;
+-import java.util.Arrays;
+-import java.util.Collections;
+-import java.util.Enumeration;
+-import java.util.List;
+-import java.util.Objects;
+-import java.util.jar.JarEntry;
+-import java.util.jar.JarFile;
+-
+-import javax.xml.parsers.DocumentBuilder;
+-import javax.xml.parsers.DocumentBuilderFactory;
+-import javax.xml.parsers.ParserConfigurationException;
+-
+-import net.sf.jabref.logic.util.FileExtensions;
+-
+-import de.undercouch.citeproc.helper.CSLUtils;
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
+-import org.w3c.dom.CharacterData;
+-import org.w3c.dom.Document;
+-import org.w3c.dom.Element;
+-import org.w3c.dom.NodeList;
+-import org.xml.sax.InputSource;
+-import org.xml.sax.SAXException;
+-
+-
+-/**
+- * Representation of a CitationStyle
+- * Stores its name, the filepath and the style itself
+- */
+-public class CitationStyle {
+-
+-    public static final String DEFAULT = "/ieee.csl";
+-    private static final Log LOGGER = LogFactory.getLog(CitationStyle.class);
+-
+-    private final String filepath;
+-    private final String title;
+-    private final String source;
+-
+-
+-    private CitationStyle(final String filename, final String title, final String source) {
+-        this.filepath = Objects.requireNonNull(filename);
+-        this.title = Objects.requireNonNull(title);
+-        this.source = Objects.requireNonNull(source);
+-    }
+-
+-    /**
+-     * Creates an CitationStyle instance out of the style string
+-     */
+-    private static CitationStyle createCitationStyleFromSource(final String source, final String filename) {
+-        try {
+-            DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
+-            InputSource is = new InputSource();
+-            is.setCharacterStream(new StringReader(source));
+-
+-            Document doc = db.parse(is);
+-            NodeList nodes = doc.getElementsByTagName("info");
+-
+-            NodeList titleNode = ((Element) nodes.item(0)).getElementsByTagName("title");
+-            String title = ((CharacterData) titleNode.item(0).getFirstChild()).getData();
+-
+-            return new CitationStyle(filename, title, source);
+-        } catch (ParserConfigurationException | SAXException | IOException e) {
+-            LOGGER.error("Error while parsing source", e);
+-        }
+-        return null;
+-    }
+-
+-    /**
+-     * Loads the CitationStyle from the given file
+-     */
+-    public static CitationStyle createCitationStyleFromFile(final String styleFile) {
+-        if (!isCitationStyleFile(styleFile)) {
+-            LOGGER.error("Can only load style files: "+ styleFile);
+-            return null;
+-        }
+-
+-        try {
+-            String text;
+-            String internalFile = (styleFile.startsWith("/") ? "" : "/") + styleFile;
+-            URL url = CitationStyle.class.getResource(internalFile);
+-            if (url != null) {
+-                text = CSLUtils.readURLToString(url, StandardCharsets.UTF_8.toString());
+-            } else {
+-                // if the url is null then the style is located outside the classpath
+-                text = new String(Files.readAllBytes(Paths.get(styleFile)), StandardCharsets.UTF_8);
+-            }
+-            return createCitationStyleFromSource(text, styleFile);
+-        } catch (NoSuchFileException e){
+-            LOGGER.error("Could not find file: "+ styleFile, e);
+-        } catch (IOException e) {
+-            LOGGER.error("Error reading source file", e);
+-        }
+-        return null;
+-    }
+-
+-    public static CitationStyle getDefault(){
+-        return createCitationStyleFromFile(DEFAULT);
+-    }
+-
+-    /**
+-     * THIS ONLY WORKS WHEN JabRef IS STARTED AS AN APPLICATION (JAR)
+-     *
+-     * Reads all available CitationStyle in the Jar
+-     */
+-    public static List<CitationStyle> discoverCitationStyles() {
+-        try {
+-            final List<CitationStyle> citationStyles = new ArrayList<>();
+-            String path = CitationStyle.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath();
+-
+-            try (JarFile file = new JarFile(path)) {
+-                Enumeration<JarEntry> entries = file.entries();
+-                while (entries.hasMoreElements()) {
+-                    String filename = entries.nextElement().getName();
+-                    if (!filename.startsWith("dependent") && filename.endsWith("csl")) {
+-                        CitationStyle citationStyle = CitationStyle.createCitationStyleFromFile(filename);
+-                        if (citationStyle != null) {
+-                            citationStyles.add(citationStyle);
+-                        }
+-                    }
+-                }
+-            }
+-            return citationStyles;
+-        } catch (IOException | URISyntaxException ex) {
+-            LOGGER.error("something went wrong while searching available CitationStyles. " +
+-                    "Are you running directly from source code?", ex);
+-        }
+-        return Collections.emptyList();
+-    }
+-
+-    /**
+-     * Checks if the given style file is a CitationStyle
+-     */
+-    public static boolean isCitationStyleFile(String styleFile){
+-        return Arrays.stream(FileExtensions.CITATION_STYLE.getExtensions()).anyMatch(styleFile::endsWith);
+-    }
+-
+-    public String getTitle() {
+-        return title;
+-    }
+-
+-    public String getSource() {
+-        return source;
+-    }
+-
+-    public String getFilepath() {
+-        return filepath;
+-    }
+-
+-    @Override
+-    public String toString() {
+-        return title;
+-    }
+-
+-    @Override
+-    public boolean equals(Object other) {
+-        if (this == other) {
+-            return true;
+-        }
+-        if (other == null || getClass() != other.getClass()) {
+-            return false;
+-        }
+-
+-        CitationStyle that = (CitationStyle) other;
+-        return source != null ? source.equals(that.source) : that.source == null;
+-    }
+-
+-}
+diff --git a/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleCache.java b/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleCache.java
+deleted file mode 100644
+index aef0b05e9..000000000
+--- a/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleCache.java
++++ /dev/null
+@@ -1,77 +0,0 @@
+-package net.sf.jabref.logic.citationstyle;
+-
+-import java.util.HashMap;
+-import java.util.Map;
+-import java.util.Objects;
+-
+-import net.sf.jabref.model.database.BibDatabaseContext;
+-import net.sf.jabref.model.database.event.EntryRemovedEvent;
+-import net.sf.jabref.model.entry.BibEntry;
+-import net.sf.jabref.model.entry.event.EntryChangedEvent;
+-
+-import com.google.common.eventbus.Subscribe;
+-
+-
+-/**
+- * Caches the generated Citations for quicker access
+- * {@link CitationStyleGenerator} generates the citaiton with JavaScript which may take some time
+- */
+-public class CitationStyleCache {
+-
+-    private CitationStyle citationStyle = CitationStyle.getDefault();
+-    private Map<BibEntry, String> citationStylesCache = new HashMap<>();
+-
+-
+-    public CitationStyleCache(BibDatabaseContext bibDatabaseContext) {
+-        this(bibDatabaseContext, CitationStyle.getDefault());
+-    }
+-
+-    public CitationStyleCache(BibDatabaseContext bibDatabaseContext, CitationStyle citationStyle) {
+-        this.setCitationStyle(citationStyle);
+-        bibDatabaseContext.getDatabase().registerListener(new BibDatabaseEntryListener());
+-    }
+-
+-    /**
+-     * returns the citation for the given BibEntry and the set CitationStyle
+-     */
+-    public String getCitationFor(BibEntry entry) {
+-        String citation = citationStylesCache.get(entry);
+-        if (citation == null) {
+-            citation = CitationStyleGenerator.generateCitation(entry, this.citationStyle);
+-            citationStylesCache.put(entry, citation);
+-        }
+-        return citation;
+-    }
+-
+-    public void setCitationStyle(CitationStyle citationStyle) {
+-        Objects.requireNonNull(citationStyle);
+-        if (!this.citationStyle.equals(citationStyle)){
+-            this.citationStyle = citationStyle;
+-            this.citationStylesCache.clear();
+-        }
+-    }
+-
+-    public CitationStyle getCitationStyle() {
+-        return citationStyle;
+-    }
+-
+-
+-    private class BibDatabaseEntryListener {
+-        /**
+-         * removes the outdated citation of the changed entry
+-         */
+-        @Subscribe
+-        public void listen(EntryChangedEvent entryChangedEvent) {
+-            citationStylesCache.remove(entryChangedEvent.getBibEntry());
+-        }
+-
+-        /**
+-         * removes the citation of the removed entry as it's not needed anymore
+-         */
+-        @Subscribe
+-        public void listen(EntryRemovedEvent entryRemovedEvent) {
+-            citationStylesCache.remove(entryRemovedEvent.getBibEntry());
+-        }
+-    }
+-
+-}
+diff --git a/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleGenerator.java b/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleGenerator.java
+deleted file mode 100644
+index fed37f29c..000000000
+--- a/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleGenerator.java
++++ /dev/null
+@@ -1,80 +0,0 @@
+-package net.sf.jabref.logic.citationstyle;
+-
+-import java.io.IOException;
+-import java.util.Map;
+-
+-import net.sf.jabref.logic.formatter.bibtexfields.UnicodeToLatexFormatter;
+-import net.sf.jabref.logic.l10n.Localization;
+-import net.sf.jabref.model.entry.BibEntry;
+-
+-import de.undercouch.citeproc.CSL;
+-import de.undercouch.citeproc.bibtex.BibTeXConverter;
+-import de.undercouch.citeproc.csl.CSLItemData;
+-import de.undercouch.citeproc.output.Bibliography;
+-import org.apache.commons.logging.Log;
+-import org.apache.commons.logging.LogFactory;
+-import org.jbibtex.BibTeXEntry;
+-import org.jbibtex.DigitStringValue;
+-import org.jbibtex.Key;
+-import org.jbibtex.TokenMgrException;
+-
+-
+-/**
+- * WARNING: the citation is generated with JavaScript which may take some time, better call it in outside the main Thread
+- */
+-public class CitationStyleGenerator {
+-
+-    private static final Log LOGGER = LogFactory.getLog(CitationStyleGenerator.class);
+-    private static final UnicodeToLatexFormatter UNICODE_TO_LATEX_FORMATTER = new UnicodeToLatexFormatter();
+-    private static final BibTeXConverter BIBTEX_CONVERTER = new BibTeXConverter();
+-
+-    /**
+-     * Generates a Citation based on the given entry and style
+-     * WARNING: the citation is generated with JavaScript which may take some time, better call it in outside the main Thread
+-     */
+-    protected static String generateCitation(BibEntry entry, CitationStyle style) {
+-        return generateCitation(entry, style.getSource(), CitationStyleOutputFormat.HTML);
+-    }
+-
+-    /**
+-     * Generates a Citation based on the given entry and style
+-     * WARNING: the citation is generated with JavaScript which may take some time, better call it in outside the main Thread
+-     */
+-    protected static String generateCitation(BibEntry entry, String style) {
+-        return generateCitation(entry, style, CitationStyleOutputFormat.HTML);
+-    }
+-
+-    /**
+-     * Generates a Citation based on the given entry, style, and output format
+-     * WARNING: the citation is generated with JavaScript which may take some time, better call it in outside the main Thread
+-     */
+-    protected static String generateCitation(BibEntry entry, String style, CitationStyleOutputFormat outputFormat) {
+-        try {
+-            String citeKey = entry.getCiteKeyOptional().orElse("");
+-            BibTeXEntry bibTeXEntry = new BibTeXEntry(new Key(entry.getType()), new Key(citeKey));
+-            for (Map.Entry<String, String> field : entry.getFieldMap().entrySet()) {
+-                String value = UNICODE_TO_LATEX_FORMATTER.format(field.getValue());
+-                bibTeXEntry.addField(new Key(field.getKey()), new DigitStringValue(value));
+-            }
+-
+-            CSLItemData cslItemData = BIBTEX_CONVERTER.toItemData(bibTeXEntry);
+-            Bibliography bibliography = CSL.makeAdhocBibliography(style, outputFormat.getFormat(), cslItemData);
+-            return bibliography.getEntries()[0];
+-
+-        } catch (IOException | ArrayIndexOutOfBoundsException e) {
+-            LOGGER.error("Could not generate BibEntry citation", e);
+-            return Localization.lang("Cannot generate preview based on selected citation style.");
+-        } catch (TokenMgrException e) {
+-            LOGGER.error("Bad character inside BibEntry", e);
+-            // sadly one cannot easily retrieve the bad char from the TokenMgrError
+-            return  new StringBuilder()
+-                    .append(Localization.lang("Cannot generate preview based on selected citation style."))
+-                    .append(outputFormat == CitationStyleOutputFormat.HTML ? "<br>" : "\n")
+-                    .append(Localization.lang("Bad character inside entry"))
+-                    .append(outputFormat == CitationStyleOutputFormat.HTML ? "<br>" : "\n")
+-                    .append(e.getLocalizedMessage())
+-                    .toString();
+-        }
+-    }
+-
+-}
+diff --git a/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleOutputFormat.java b/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleOutputFormat.java
+deleted file mode 100644
+index dc6bf3119..000000000
+--- a/src/main/java/net/sf/jabref/logic/citationstyle/CitationStyleOutputFormat.java
++++ /dev/null
+@@ -1,27 +0,0 @@
+-package net.sf.jabref.logic.citationstyle;
+-
+-
+-public enum CitationStyleOutputFormat {
+-
+-    HTML("html"),
+-    TEXT("text"),
+-    ASCII_DOC("asciidoc"),
+-    FO("fo"),
+-    RTF("rtf");
+-
+-    private final String format;
+-
+-    CitationStyleOutputFormat(String format) {
+-        this.format = format;
+-    }
+-
+-    public String getFormat() {
+-        return format;
+-    }
+-
+-    @Override
+-    public String toString() {
+-        return format;
+-    }
+-
+-}
+diff --git a/src/main/java/net/sf/jabref/logic/util/date/EasyDateFormat.java b/src/main/java/net/sf/jabref/logic/util/date/EasyDateFormat.java
+index 25885be93..3eb5a03dd 100644
+--- a/src/main/java/net/sf/jabref/logic/util/date/EasyDateFormat.java
++++ b/src/main/java/net/sf/jabref/logic/util/date/EasyDateFormat.java
+@@ -1,7 +1,9 @@
+ package net.sf.jabref.logic.util.date;
+ 
++import java.time.ZoneId;
+ import java.time.ZonedDateTime;
+ import java.time.format.DateTimeFormatter;
++import java.util.Date;
+ 
+ public class EasyDateFormat {
+ 
+@@ -36,6 +38,16 @@ public class EasyDateFormat {
+      *
+      * @return The formatted date string.
+      */
++    public String getDateAt(Date date) {
++        return getDateAt(date.toInstant().atZone(ZoneId.systemDefault()));
++    }
++
++    /**
++     * Creates a readable Date string from the parameter date. The format is set
++     * in preferences under the key "timeStampFormat".
++     *
++     * @return The formatted date string.
++     */
+     public String getDateAt(ZonedDateTime dateTime) {
+         // first use, create an instance
+         return dateTime.format(dateFormatter);
+diff --git a/src/main/java/net/sf/jabref/logic/util/strings/DiffHighlighting.java b/src/main/java/net/sf/jabref/logic/util/strings/DiffHighlighting.java
+deleted file mode 100644
+index ba6463b1f..000000000
+--- a/src/main/java/net/sf/jabref/logic/util/strings/DiffHighlighting.java
++++ /dev/null
+@@ -1,101 +0,0 @@
+-package net.sf.jabref.logic.util.strings;
+-
+-import java.util.ArrayList;
+-import java.util.Arrays;
+-import java.util.Collections;
+-import java.util.List;
+-import java.util.Objects;
+-
+-import difflib.Delta;
+-import difflib.DiffUtils;
+-
+-public class DiffHighlighting {
+-
+-    private static final String ADDITION_START = "<span class=add>";
+-    private static final String REMOVAL_START = "<span class=del>";
+-    private static final String CHANGE_START = "<span class=change>";
+-    private static final String TAG_END = "</span>";
+-
+-    public static final String HTML_START = "<html><body>";
+-    public static final String HTML_END = "</body></html>";
+-
+-
+-    public static String generateDiffHighlighting(String baseString, String modifiedString, String separator) {
+-        Objects.requireNonNull(separator);
+-        if ((baseString != null) && (modifiedString != null)) {
+-            List<String> stringList = new ArrayList<>(Arrays.asList(baseString.split(separator)));
+-            List<Delta<String>> deltaList = new ArrayList<>(
+-                    DiffUtils.diff(stringList, Arrays.asList(modifiedString.split(separator))).getDeltas());
+-            Collections.reverse(deltaList);
+-            for (Delta<String> delta : deltaList) {
+-                int startPos = delta.getOriginal().getPosition();
+-                List<String> lines = delta.getOriginal().getLines();
+-                int offset = 0;
+-                switch (delta.getType()) {
+-                case CHANGE:
+-                    for (String line : lines) {
+-                        stringList.set(startPos + offset, (offset == 0 ? DiffHighlighting.REMOVAL_START : "") + line);
+-                        offset++;
+-                    }
+-                    stringList.set((startPos + offset) - 1,
+-                            stringList.get((startPos + offset) - 1) + DiffHighlighting.TAG_END + separator + DiffHighlighting.ADDITION_START
+-                                    + String.join(separator, delta.getRevised().getLines()) + DiffHighlighting.TAG_END);
+-                    break;
+-                case DELETE:
+-                    for (String line : lines) {
+-                        stringList.set(startPos + offset, (offset == 0 ? DiffHighlighting.REMOVAL_START : "") + line);
+-                        offset++;
+-                    }
+-                    stringList.set((startPos + offset) - 1,
+-                            stringList.get((startPos + offset) - 1) + DiffHighlighting.TAG_END);
+-                    break;
+-                case INSERT:
+-                    stringList.add(delta.getOriginal().getPosition(),
+-                            DiffHighlighting.ADDITION_START + String.join(separator, delta.getRevised().getLines()) + DiffHighlighting.TAG_END);
+-                    break;
+-                default:
+-                    break;
+-                }
+-            }
+-            return String.join(separator, stringList);
+-        }
+-        return modifiedString;
+-    }
+-
+-    public static String generateSymmetricHighlighting(String baseString, String modifiedString, String separator) {
+-        if ((baseString != null) && (modifiedString != null)) {
+-            List<String> stringList = new ArrayList<>(Arrays.asList(baseString.split(separator)));
+-            List<Delta<String>> deltaList = new ArrayList<>(DiffUtils
+-                    .diff(stringList, new ArrayList<>(Arrays.asList(modifiedString.split(separator)))).getDeltas());
+-            Collections.reverse(deltaList);
+-            for (Delta<String> delta : deltaList) {
+-                int startPos = delta.getOriginal().getPosition();
+-                List<String> lines = delta.getOriginal().getLines();
+-                int offset = 0;
+-                switch (delta.getType()) {
+-                case CHANGE:
+-                    for (String line : lines) {
+-                        stringList.set(startPos + offset, (offset == 0 ? DiffHighlighting.CHANGE_START : "") + line);
+-                        offset++;
+-                    }
+-                    stringList.set((startPos + offset) - 1, stringList.get((startPos + offset) - 1) + DiffHighlighting.TAG_END);
+-                    break;
+-                case DELETE:
+-                    for (String line : lines) {
+-                        stringList.set(startPos + offset, (offset == 0 ? DiffHighlighting.ADDITION_START : "") + line);
+-                        offset++;
+-                    }
+-                    stringList.set((startPos + offset) - 1, stringList.get((startPos + offset) - 1) + DiffHighlighting.TAG_END);
+-                    break;
+-                case INSERT:
+-                    break;
+-                default:
+-                    break;
+-                }
+-            }
+-            return String.join(separator, stringList);
+-        }
+-        return modifiedString;
+-    }
+-
+-}
+diff --git a/src/main/java/net/sf/jabref/preferences/JabRefPreferences.java b/src/main/java/net/sf/jabref/preferences/JabRefPreferences.java
+index d98895592..c85dc1da5 100644
+--- a/src/main/java/net/sf/jabref/preferences/JabRefPreferences.java
++++ b/src/main/java/net/sf/jabref/preferences/JabRefPreferences.java
+@@ -42,7 +42,6 @@ import net.sf.jabref.logic.autocompleter.AutoCompletePreferences;
+ import net.sf.jabref.logic.bibtex.FieldContentParserPreferences;
+ import net.sf.jabref.logic.bibtex.LatexFieldFormatterPreferences;
+ import net.sf.jabref.logic.bibtexkeypattern.BibtexKeyPatternPreferences;
+-import net.sf.jabref.logic.citationstyle.CitationStyle;
+ import net.sf.jabref.logic.cleanup.CleanupPreferences;
+ import net.sf.jabref.logic.cleanup.CleanupPreset;
+ import net.sf.jabref.logic.cleanup.Cleanups;
+@@ -799,7 +798,7 @@ public class JabRefPreferences {
+         defaults.put(VERSION_IGNORED_UPDATE, "");
+ 
+         // preview
+-        defaults.put(CYCLE_PREVIEW, "Preview;" + CitationStyle.DEFAULT);
++        defaults.put(CYCLE_PREVIEW, "Preview");
+         defaults.put(CYCLE_PREVIEW_POS, 0);
+         defaults.put(PREVIEW_PANEL_HEIGHT, 200);
+         defaults.put(PREVIEW_ENABLED, Boolean.TRUE);
+diff --git a/src/main/java/net/sf/jabref/shared/DBMSType.java b/src/main/java/net/sf/jabref/shared/DBMSType.java
+index d27b0af63..e96f567e5 100644
+--- a/src/main/java/net/sf/jabref/shared/DBMSType.java
++++ b/src/main/java/net/sf/jabref/shared/DBMSType.java
+@@ -18,8 +18,8 @@ public enum DBMSType {
+             "jdbc:oracle:thin:@%s:%d:%s", 1521),
+     POSTGRESQL(
+             "PostgreSQL",
+-            "com.impossibl.postgres.jdbc.PGDriver",
+-            "jdbc:pgsql://%s:%d/%s", 5432);
++            "org.postgresql.Driver",
++            "jdbc:postgresql://%s:%d/%s", 5432);
+ 
+     private final String type;
+     private final String driverPath;
+diff --git a/src/main/java/net/sf/jabref/shared/PostgreSQLProcessor.java b/src/main/java/net/sf/jabref/shared/PostgreSQLProcessor.java
+index 6a302d1a0..1191eb26c 100644
+--- a/src/main/java/net/sf/jabref/shared/PostgreSQLProcessor.java
++++ b/src/main/java/net/sf/jabref/shared/PostgreSQLProcessor.java
+@@ -1,5 +1,6 @@
+ package net.sf.jabref.shared;
+ 
++import java.sql.Connection;
+ import java.sql.PreparedStatement;
+ import java.sql.ResultSet;
+ import java.sql.SQLException;
+@@ -8,22 +9,12 @@ import java.util.logging.Level;
+ import java.util.logging.Logger;
+ 
+ import net.sf.jabref.model.entry.BibEntry;
+-import net.sf.jabref.shared.listener.PostgresSQLNotificationListener;
+-
+-import com.impossibl.postgres.api.jdbc.PGConnection;
+-import com.impossibl.postgres.jdbc.PGDataSource;
+-import com.impossibl.postgres.jdbc.ThreadedHousekeeper;
+ 
+ /**
+  * Processes all incoming or outgoing bib data to PostgreSQL database and manages its structure.
+  */
+ public class PostgreSQLProcessor extends DBMSProcessor {
+ 
+-    private PGConnection pgConnection;
+-
+-    private PostgresSQLNotificationListener listener;
+-
+-
+     public PostgreSQLProcessor(DBMSConnection connection) {
+         super(connection);
+     }
+@@ -85,47 +76,4 @@ public class PostgreSQLProcessor extends DBMSProcessor {
+         return "\"" + expression + "\"";
+     }
+ 
+-
+-    @Override
+-    public void startNotificationListener(DBMSSynchronizer dbmsSynchronizer) {
+-        // Disable cleanup output of ThreadedHousekeeper
+-        Logger.getLogger(ThreadedHousekeeper.class.getName()).setLevel(Level.SEVERE);
+-
+-        this.listener = new PostgresSQLNotificationListener(dbmsSynchronizer);
+-
+-        PGDataSource dataSource = new PGDataSource();
+-        dataSource.setHost(connectionProperties.getHost());
+-        dataSource.setPort(connectionProperties.getPort());
+-        dataSource.setDatabase(connectionProperties.getDatabase());
+-        dataSource.setUser(connectionProperties.getUser());
+-        dataSource.setPassword(connectionProperties.getPassword());
+-
+-        try {
+-            pgConnection = (PGConnection) dataSource.getConnection();
+-            pgConnection.createStatement().execute("LISTEN jabrefLiveUpdate");
+-            // Do not use `new PostgresSQLNotificationListener(...)` as the object has to exist continuously!
+-            // Otherwise the listener is going to be deleted by GC.
+-            pgConnection.addNotificationListener(listener);
+-        } catch (SQLException e) {
+-            LOGGER.error("SQL Error: ", e);
+-        }
+-    }
+-
+-    @Override
+-    public void stopNotificationListener() {
+-        try {
+-            pgConnection.close();
+-        } catch (SQLException e) {
+-            LOGGER.error("SQL Error: ", e);
+-        }
+-    }
+-
+-    @Override
+-    public void notifyClients() {
+-        try {
+-            pgConnection.createStatement().execute("NOTIFY jabrefLiveUpdate, '" + PROCESSOR_ID + "';");
+-        } catch (SQLException e) {
+-            LOGGER.error("SQL Error: ", e);
+-        }
+-    }
+ }
+diff --git a/src/main/java/net/sf/jabref/shared/listener/PostgresSQLNotificationListener.java b/src/main/java/net/sf/jabref/shared/listener/PostgresSQLNotificationListener.java
+deleted file mode 100644
+index 2cae95385..000000000
+--- a/src/main/java/net/sf/jabref/shared/listener/PostgresSQLNotificationListener.java
++++ /dev/null
+@@ -1,27 +0,0 @@
+-package net.sf.jabref.shared.listener;
+-
+-import net.sf.jabref.shared.DBMSProcessor;
+-import net.sf.jabref.shared.DBMSSynchronizer;
+-
+-import com.impossibl.postgres.api.jdbc.PGNotificationListener;
+-
+-/**
+- * A listener for PostgreSQL database notifications.
+- */
+-public class PostgresSQLNotificationListener implements PGNotificationListener {
+-
+-    private final DBMSSynchronizer dbmsSynchronizer;
+-
+-
+-    public PostgresSQLNotificationListener(DBMSSynchronizer dbmsSynchronizer) {
+-        this.dbmsSynchronizer = dbmsSynchronizer;
+-    }
+-
+-    @Override
+-    public void notification(int processId, String channel, String payload) {
+-        if (!payload.equals(DBMSProcessor.PROCESSOR_ID)) {
+-            dbmsSynchronizer.pullChanges();
+-        }
+-    }
+-
+-}
+diff --git a/src/test/java/net/sf/jabref/logic/citationstyle/CitationStyleGeneratorTest.java b/src/test/java/net/sf/jabref/logic/citationstyle/CitationStyleGeneratorTest.java
+deleted file mode 100644
+index 03f580009..000000000
+--- a/src/test/java/net/sf/jabref/logic/citationstyle/CitationStyleGeneratorTest.java
++++ /dev/null
+@@ -1,46 +0,0 @@
+-package net.sf.jabref.logic.citationstyle;
+-
+-import net.sf.jabref.logic.l10n.Localization;
+-import net.sf.jabref.model.entry.BibEntry;
+-import net.sf.jabref.model.entry.FieldName;
+-
+-import org.junit.Test;
+-
+-import static org.junit.Assert.assertEquals;
+-
+-public class CitationStyleGeneratorTest {
+-
+-    @Test
+-    public void testIgnoreNewLine() {
+-        BibEntry entry = new BibEntry();
+-        entry.setField(FieldName.AUTHOR, "Last, First and\nDoe, Jane");
+-
+-        // if the default citation style changes this has to be modified
+-        String expected = "  <div class=\"csl-entry\">\n" +
+-                "    <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">F. Last and J. Doe, .</div>\n" +
+-                "  </div>\n";
+-        String citation = CitationStyleGenerator.generateCitation(entry, CitationStyle.getDefault());
+-        assertEquals(expected, citation);
+-    }
+-
+-    @Test
+-    public void testIgnoreCarriageReturnNewLine() {
+-        BibEntry entry = new BibEntry();
+-        entry.setField(FieldName.AUTHOR, "Last, First and\r\nDoe, Jane");
+-
+-        // if the default citation style changes this has to be modified
+-        String expected = "  <div class=\"csl-entry\">\n" +
+-                "    <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">F. Last and J. Doe, .</div>\n" +
+-                "  </div>\n";
+-        String citation = CitationStyleGenerator.generateCitation(entry, CitationStyle.getDefault());
+-        assertEquals(expected, citation);
+-    }
+-
+-    @Test
+-    public void testMissingCitationStyle() {
+-        String expected = Localization.lang("Cannot generate preview based on selected citation style.");
+-        String citation = CitationStyleGenerator.generateCitation(new BibEntry(), "faulty citation style");
+-        assertEquals(expected, citation);
+-    }
+-
+-}
+diff --git a/src/test/java/net/sf/jabref/logic/citationstyle/CitationStyleTest.java b/src/test/java/net/sf/jabref/logic/citationstyle/CitationStyleTest.java
+deleted file mode 100644
+index 1e673494a..000000000
+--- a/src/test/java/net/sf/jabref/logic/citationstyle/CitationStyleTest.java
++++ /dev/null
+@@ -1,30 +0,0 @@
+-package net.sf.jabref.logic.citationstyle;
+-
+-import net.sf.jabref.logic.util.TestEntry;
+-
+-import org.junit.Assert;
+-import org.junit.Test;
+-
+-
+-public class CitationStyleTest {
+-
+-    @Test
+-    public void getDefault() throws Exception {
+-        Assert.assertNotNull(CitationStyle.getDefault());
+-    }
+-
+-    @Test
+-    public void testDefaultCitation() {
+-        String citation = CitationStyleGenerator.generateCitation(TestEntry.getTestEntry(), CitationStyle.getDefault());
+-
+-        // if the default citation style changes this has to be modified
+-        String expected = "  <div class=\"csl-entry\">\n" +
+-                "    <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">" +
+-                "B. Smith, B. Jones, and J. Williams, “Title of the test entry,” " +
+-                "<i>BibTeX Journal</i>, vol. 34, no. 3, pp. 45–67, Jul. 2016.</div>\n" +
+-                "  </div>\n";
+-
+-        Assert.assertEquals(citation, expected);
+-    }
+-
+-}
+diff --git a/src/test/java/net/sf/jabref/logic/util/strings/DiffHighlightingTest.java b/src/test/java/net/sf/jabref/logic/util/strings/DiffHighlightingTest.java
+deleted file mode 100644
+index 1ba979657..000000000
+--- a/src/test/java/net/sf/jabref/logic/util/strings/DiffHighlightingTest.java
++++ /dev/null
+@@ -1,81 +0,0 @@
+-package net.sf.jabref.logic.util.strings;
+-
+-import org.junit.Test;
+-
+-import static org.junit.Assert.assertEquals;
+-import static org.junit.Assert.assertNull;
+-
+-
+-public class DiffHighlightingTest {
+-
+-    @Test
+-    public void testGenerateDiffHighlightingBothNullReturnsNull() {
+-        assertNull(DiffHighlighting.generateDiffHighlighting(null, null, ""));
+-    }
+-
+-    @Test(expected = NullPointerException.class)
+-    public void testNullSeparatorThrowsNPE() {
+-        assertNull(DiffHighlighting.generateDiffHighlighting("", "", null));
+-    }
+-
+-    @Test
+-    public void testGenerateDiffHighlightingNoDiff() {
+-        assertEquals("foo", DiffHighlighting.generateDiffHighlighting("foo", "foo", ""));
+-    }
+-
+-    @Test
+-    public void testGenerateDiffHighlightingSingleWordAddTextWordDiff() {
+-        assertEquals("<span class=del>foo</span> <span class=add>foobar</span>",
+-                DiffHighlighting.generateDiffHighlighting("foo", "foobar", " "));
+-    }
+-
+-    @Test
+-    public void testGenerateDiffHighlightingSingleWordAddTextCharacterDiff() {
+-        assertEquals("foo<span class=add>bar</span>", DiffHighlighting.generateDiffHighlighting("foo", "foobar", ""));
+-    }
+-
+-    @Test
+-    public void testGenerateDiffHighlightingSingleWordDeleteTextWordDiff() {
+-        assertEquals("<span class=del>foobar</span> <span class=add>foo</span>",
+-                DiffHighlighting.generateDiffHighlighting("foobar", "foo", " "));
+-    }
+-
+-    @Test
+-    public void testGenerateDiffHighlightingSingleWordDeleteTextCharacterDiff() {
+-        assertEquals("foo<span class=del>bar</span>", DiffHighlighting.generateDiffHighlighting("foobar", "foo", ""));
+-    }
+-
+-    @Test
+-    public void generateSymmetricHighlightingSingleWordAddTextWordDiff() {
+-        assertEquals("<span class=change>foo</span>",
+-                DiffHighlighting.generateSymmetricHighlighting("foo", "foobar", " "));
+-    }
+-
+-    @Test
+-    public void generateSymmetricHighlightingSingleWordAddTextCharacterDiff() {
+-        assertEquals("foo", DiffHighlighting.generateSymmetricHighlighting("foo", "foobar", ""));
+-    }
+-
+-    @Test
+-    public void generateSymmetricHighlightingSingleWordDeleteTextWordDiff() {
+-        assertEquals("<span class=change>foobar</span>",
+-                DiffHighlighting.generateSymmetricHighlighting("foobar", "foo", " "));
+-    }
+-
+-    @Test
+-    public void generateSymmetricHighlightingSingleWordDeleteTextCharacterDiff() {
+-        assertEquals("foo<span class=add>bar</span>", DiffHighlighting.generateSymmetricHighlighting("foobar", "foo", ""));
+-    }
+-
+-    @Test
+-    public void generateSymmetricHighlightingMultipleWordsDeleteTextCharacterDiff() {
+-        assertEquals("foo<span class=add>bar</span> and <span class=add>some</span>thing",
+-                DiffHighlighting.generateSymmetricHighlighting("foobar and something", "foo and thing", ""));
+-    }
+-
+-    @Test
+-    public void generateSymmetricHighlightingMultipleWordsDeleteTextWordDiff() {
+-        assertEquals("foo <span class=add>bar</span> and <span class=add>some</span> thing",
+-                DiffHighlighting.generateSymmetricHighlighting("foo bar and some thing", "foo and thing", " "));
+-    }
+-}
+diff --git a/src/test/java/net/sf/jabref/shared/DBMSTypeTest.java b/src/test/java/net/sf/jabref/shared/DBMSTypeTest.java
+index 0ec8936fb..bfe9c0c1e 100644
+--- a/src/test/java/net/sf/jabref/shared/DBMSTypeTest.java
++++ b/src/test/java/net/sf/jabref/shared/DBMSTypeTest.java
+@@ -20,7 +20,7 @@ public class DBMSTypeTest {
+     public void testGetDriverClassPath() {
+         Assert.assertEquals("com.mysql.jdbc.Driver", DBMSType.MYSQL.getDriverClassPath());
+         Assert.assertEquals("oracle.jdbc.driver.OracleDriver", DBMSType.ORACLE.getDriverClassPath());
+-        Assert.assertEquals("com.impossibl.postgres.jdbc.PGDriver", DBMSType.POSTGRESQL.getDriverClassPath());
++        Assert.assertEquals("org.postgresql.Driver", DBMSType.POSTGRESQL.getDriverClassPath());
+     }
+ 
+     @Test
+@@ -35,7 +35,7 @@ public class DBMSTypeTest {
+     public void testGetUrl() {
+         Assert.assertEquals("jdbc:mysql://localhost:3306/xe", DBMSType.MYSQL.getUrl("localhost", 3306, "xe"));
+         Assert.assertEquals("jdbc:oracle:thin:@localhost:1521:xe", DBMSType.ORACLE.getUrl("localhost", 1521, "xe"));
+-        Assert.assertEquals("jdbc:pgsql://localhost:5432/xe", DBMSType.POSTGRESQL.getUrl("localhost", 5432, "xe"));
++        Assert.assertEquals("jdbc:postgresql://localhost:5432/xe", DBMSType.POSTGRESQL.getUrl("localhost", 5432, "xe"));
+     }
+ 
+     @Test
diff --git a/debian/patches/series b/debian/patches/series
index 88f64bf..7728069 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
+001_koppor_debian_3.8.patch
 010_gradle_build.patch
 020_disable_automatic_upgrade_check.patch
 030_xjc.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jabref.git



More information about the pkg-java-commits mailing list