/* Copyright (C) 2003-2011 JabRef contributors. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package net.sf.jabref.imports; import java.io.InputStream; import java.io.BufferedReader; import java.io.IOException; import java.util.List; import java.util.ArrayList; import net.sf.jabref.BibtexEntry; import net.sf.jabref.BibtexEntryType; import net.sf.jabref.OutputPrinter; import net.sf.jabref.Util; import net.sf.jabref.AuthorList; /** * Imports a Biblioscape Tag File. The format is described on * http://www.biblioscape.com/manual_bsp/Biblioscape_Tag_File.htm Several * Biblioscape field types are ignored. Others are only included in the BibTeX * field "comment". */ public class JstorImporter extends ImportFormat { /** * Return the name of this import format. */ public String getFormatName() { return "JStor (tab delimited)"; } /* * (non-Javadoc) * @see net.sf.jabref.imports.ImportFormat#getCLIId() */ public String getCLIId() { return "jstor"; } /** * Check whether the source is in the correct format for this importer. */ public boolean isRecognizedFormat(InputStream in) throws IOException { return true; } /** * Parse the entries in the source, and return a List of BibtexEntry * objects. */ public List<BibtexEntry> importEntries(InputStream stream, OutputPrinter status) throws IOException { ArrayList<BibtexEntry> bibitems = new ArrayList<BibtexEntry>(); String s = ""; BufferedReader in = new BufferedReader(ImportFormatReader.getReaderDefaultEncoding(stream)); while ((s != null) && !s.startsWith("Item Type")) s = in.readLine(); mainloop: while ((s = in.readLine()) != null){ if (s.equals("")) continue; if (s.startsWith("-----------------------------")) break mainloop; String[] fields = s.split("\t"); BibtexEntry be = new BibtexEntry(Util.createNeutralId()); try{ if (fields[0].equals("FLA")) be.setType(BibtexEntryType .getType("article")); ImportFormatReader.setIfNecessary(be, "title", fields[2]); ImportFormatReader.setIfNecessary(be, "author", AuthorList.fixAuthor_lastNameFirst(fields[4].replaceAll("; ", " and "))); ImportFormatReader.setIfNecessary(be, "journal", fields[7]); ImportFormatReader.setIfNecessary(be, "volume", fields[9]); ImportFormatReader.setIfNecessary(be, "number", fields[10]); String[] datefield = fields[12].split(" "); ImportFormatReader.setIfNecessary(be, "year", datefield[datefield.length - 1]); if (datefield.length > 1) { if (datefield[0].endsWith(",")) datefield[0] = datefield[0].substring(0, datefield[0].length()-1); ImportFormatReader.setIfNecessary(be, "month", datefield[0]); } //for (int i=0; i<fields.length; i++) // Util.pr(i+": "+fields[i]); ImportFormatReader.setIfNecessary(be, "pages", fields[13].replaceAll("-", "--")); ImportFormatReader.setIfNecessary(be, "url", fields[14]); ImportFormatReader.setIfNecessary(be, "issn", fields[15]); ImportFormatReader.setIfNecessary(be, "abstract", fields[16]); ImportFormatReader.setIfNecessary(be, "keywords", fields[17]); ImportFormatReader.setIfNecessary(be, "copyright", fields[21]); }catch (ArrayIndexOutOfBoundsException ex){ } bibitems.add(be); } return bibitems; } }