4 <basefont size="4" color="#2F4958" face="arial">
6 <H1>Externe Importfilter</H1>
8 <p>JabRef bietet Ihnen die Möglichkeit, ganz ähnlich den Standard-Importern, eigene Importer
9 zu definieren und zu benutzen. Man definiert einen Importer durch eine oder mehrere Java
10 <i>Klassen</i>, die Dateinhalte aus einem sogenannten <i>Input stream</i> lesen
11 und daraus BibTex-Einträge erzeugen. Sie können vorkompilierte Importer einbinden, die Sie vielleicht
12 von SourceForge erhalten haben (siehe "Ihre Arbeit anderen zur Verfügung stellen"). Sie können auch
13 mit Grundkenntnissen der Java-Programmierung eigene Importer für für Sie wichtige Referenzquellen
14 erstellen oder neue, verbesserte Versionen existierender Importer einbinden, ohne JabRef neu zu
17 <p>Externe Importfilter haben Vorrang vor Standard-Importern. So können Sie mit Ihren Importern
18 die existierenden in der automatischen Formaterkennung und an der Kommandozeile in JabRef überschreiben.
19 Externe Importfilter selbst sind dann nach Namen sortiert.</p>
21 <H2>Einen externen Importfilter hinzufügen</H2>
23 <p>Stellen Sie sicher, dass Sie den Importer in kompilierter Form haben (eine oder mehrere
24 <code>.class</code> Dateien) und dass die Klassendateien
25 in einer Verzeichnisstruktur entsprechend ihrer Package-Struktur liegen.
26 Um einen neuen externen Importfilter hinzuzufügen, öffnen Sie den Dialog
27 <b>Optionen -> Verwalte externe Importfilter</b>, und klicken Sie auf
28 <b>Aus Klassenpfad hinzufügen</b>. Ein Dateiauswahl-Fenster erscheint,
29 mit dem Sie den Klassenpfad des Importers wählen, dass heißt den obersten Ordner,
30 in dem die Package-Struktur Ihres Importers beginnt. In einem zweiten Dateiauswahl-Fenster
31 wählen Sie die <i>.class</i>-Datei Ihres Importers, die von <code>ImportFormat</code> abgeleitet
32 ist. Wenn Sie <b>Klasse auswählen</b> klicken, erscheint Ihr neuer Importer
33 in der Liste der externen Importfilter. Alle externen Importfilter erscheinen in den
34 JabRef-Submenüs <b>Datei -> Importieren -> Externe Importfilter</b> und
35 <b>Datei -> Importieren und Anhängen -> Externe Importfilter</b>.</p>
37 <p>Bitte beachten Sie: wenn Sie die Klassen in ein anderes Verzeichnis verschieben,
38 müssen Sie den Importer entfernen und neu hinzufügen. Wenn Sie einen Importfilter
39 mit einem bereits vorhandenen Namen registrieren, ersetzt JabRef den vorhandenen
40 externen Importfilter. Auch wenn es in manchen Fällen möglich ist, einen schon registrierten
41 Importer zu aktualisieren ohne JabRef neu zu starten (nämlich dann,
42 wenn der Importer nicht im Klassenpfad von JabRef ist), empfehlen wir, grundsätzlich
43 JabRef neu zu starten, wenn Sie ein Update eines externen Importers durchgeführt haben.
44 Sie können auch Importer aus ZIP- oder JAR-Archiven registrieren, wählen Sie einfach
45 <b>Aus Archiv-Datei hinzufügen</b>, dann das ZIP- oder JAR-Archiv und dann den Eintrag
46 (Klassendatei), der den neuen Importer darstellt.</p>
48 <H2>Einen Importfilter entwickeln</H2>
50 Bitte schauen Sie auf unseren Download-Seiten nach Beispielen und nützliche Dateien zur
51 Entwicklung Ihres Importfilters.
53 <H3>Ein einfaches Beispiel</H3>
55 <p>Angenommen, wir wollen Dateien der folgenden Form importieren:
57 1936;John Maynard Keynes;The General Theory of Employment, Interest and Money
58 2003;Boldrin & Levine;Case Against Intellectual Monopoly
59 2004;ROBERT HUNT AND JAMES BESSEN;The Software Patent Experiment
62 <p>Erzeugen Sie in einem Text-Editor eine von <code>ImportFormat</code> abgeleitete Klasse,
63 die die Methoden <code>getFormatName()</code>, <code>isRecognizedFormat()</code>
64 und <code>importEntries()</code> implementiert. Hier ein Beispiel:
68 import net.sf.jabref.*;
69 import net.sf.jabref.imports.ImportFormat;
70 import net.sf.jabref.imports.ImportFormatReader;
72 public class SimpleCsvImporter extends ImportFormat {
74 public String getFormatName() {
75 return "Simple CSV Importer";
78 public boolean isRecognizedFormat(InputStream stream) throws IOException {
79 return true; // this is discouraged except for demonstration purposes
82 public List importEntries(InputStream stream) throws IOException {
83 ArrayList bibitems = new ArrayList();
84 BufferedReader in = new BufferedReader(ImportFormatReader.getReaderDefaultEncoding(stream));
86 String line = in.readLine();
87 while (line != null) {
88 if (!"".equals(line.trim())) {
89 String[] fields = line.split(";");
90 BibtexEntry be = new BibtexEntry(Util.createNeutralId());
91 be.setType(BibtexEntryType.getType("techreport"));
92 be.setField("year", fields[0]);
93 be.setField("author", fields[1]);
94 be.setField("title", fields[2]);
104 <p>Beachten Sie, dass die Beispielklasse im Default-Package liegt. Angenommen, Sie haben
105 sie unter <code>/meinpfad/SimpleCsvImporter.java</code> gespeichert. Nehmen wir weiter an,
106 die Datei <i>JabRef-2.0.jar</i> ist im gleichen Verzeichnis wie
107 <code>SimpleCsvImporter.java</code> und Java ist in Ihrem Kommandopfad.
108 Kompilieren Sie die Klasse mit JSDK 1.4 zum Beispiel mit folgendem Kommandozeilen-Aufruf:
110 javac -classpath JabRef-2.0.jar SimpleCsvImporter.java
112 Nun sollte dort auch eine Datei <code>/mypath/SimpleCsvImporter.class</code> liegen.</p>
114 <p>Öffnen Sie in JabRef <b>Optionen -> Verwaltung externer Importfilter</b> und klicken Sie
115 auf <b>Aus Klassenpfad hinzufügen</b>. Navigieren Sie nach <code>/meinpfad</code> und
116 klicken Sie <b>Klassenpfad auswählen</b>. Wählen Sie dann <code>SimpleCsvImporter.class</code>
117 und klicken Sie <b>Klasse auswählen</b>. Ihr Importfilter sollte nun in der Liste der
118 externen Importfilter unter dem Namen "Simple CSV Importer" erscheinen, und,
119 sobald Sie <b>Schließen</b> gewählt haben, auch in den Untermenüs <b>Datei -> Importieren ->
120 Externe Importfilter</b> und <b>Datei -> Importieren und Anhängen -> Externe Importfilter</b>
121 des JabRef-Hauptfensters.</p>
123 <H2>Ihre Arbeit anderen zur Verfügung stellen</H2>
125 Mit externen Importfiltern ist es recht einfach, Importfilter zwischen Nutzern auszutauschen und
126 gemeinsam zu nutzen. Wenn Sie einen Importer für ein Format schreiben, das JabRef noch nicht unterstützt,
127 oder einen Importer verbessern, bitten wir Sie, Ihre Ergebnisse auf unserer SourceForge.net
128 Seite zu veröffentlichen. Wir bieten gerne eine Sammlung eingereichter Importfilter an oder
129 fügen sie unserer Auswahl an Standard-Importfiltern hinzu.