/* 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.label; import java.util.StringTokenizer; import net.sf.jabref.BibtexEntry; public class InproceedingsLabelRule extends DefaultLabelRule { // this is the rule used handle articles // we try (first author)/(year)/(first unique booktitle word) public String applyRule(BibtexEntry oldEntry){ String newLabel = "" ; StringTokenizer authorTokens = null ; // use the author token try{ authorTokens= new StringTokenizer(oldEntry.getField("author"),",") ; newLabel += authorTokens.nextToken().toLowerCase().replaceAll(" ","").replaceAll("\\.","") ; }catch(Throwable t){ System.out.println("error getting author: "+t) ; } // use the year token try{ if( oldEntry.getField("year")!= null){ newLabel += String.valueOf( oldEntry.getField("year")) ; } }catch(Throwable t){ System.out.println("error getting year: "+t) ; } // use the booktitle name // return the first token 4 wrds or longer, that's not a keyword try{ if(oldEntry.getField("booktitle") != null) { authorTokens = new StringTokenizer( (oldEntry.getField("booktitle")).replaceAll(","," ").replaceAll("/"," ")) ; String tempString = authorTokens.nextToken() ; tempString = tempString.replaceAll(",","") ; boolean done = false ; while(tempString!=null && !done ){ tempString = tempString.replaceAll(",","").trim() ; if(tempString.trim().length() > 3 && !KeyWord.getKeyWord().isKeyWord(tempString)) { done = true ; } else{ if(authorTokens.hasMoreTokens()){ tempString = authorTokens.nextToken() ; }else{ done = true ; } } } if(tempString!=null && (tempString.indexOf("null")<0) ){ newLabel += String.valueOf( tempString.toLowerCase()) ; } } } catch(Throwable t){ System.err.println(t) ; } // oldEntry.setField(Globals.KEY_FIELD,newLabel) ; return newLabel; } }