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