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.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) 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;
}
}