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