001package com.hfg.bio.seq.format.genbank;
002
003import com.hfg.exception.ProgrammingException;
004import com.hfg.util.StringUtil;
005
006import java.util.Collection;
007import java.util.HashMap;
008import java.util.Map;
009
010
011public class GenBankSubkeyword
012{
013   private String mName;
014
015   private static Map<String, GenBankSubkeyword> sUniqueMap = new HashMap<String, GenBankSubkeyword>();
016
017
018   public static final GenBankSubkeyword ORGANISM  = new GenBankSubkeyword("ORGANISM");
019   public static final GenBankSubkeyword AUTHORS  = new GenBankSubkeyword("AUTHORS");
020   public static final GenBankSubkeyword CONSRTM  = new GenBankSubkeyword("CONSRTM");
021   public static final GenBankSubkeyword TITLE  = new GenBankSubkeyword("TITLE");
022   public static final GenBankSubkeyword JOURNAL  = new GenBankSubkeyword("JOURNAL");
023   public static final GenBankSubkeyword MEDLINE  = new GenBankSubkeyword("MEDLINE");  // Obsoleted in Apr 2005
024   public static final GenBankSubkeyword PUBMED  = new GenBankSubkeyword("PUBMED");
025   public static final GenBankSubkeyword REMARK  = new GenBankSubkeyword("REMARK");
026
027   //###########################################################################
028   // CONSTRUCTORS
029   //###########################################################################
030
031   //---------------------------------------------------------------------------
032   protected GenBankSubkeyword(String inName)
033   {
034      if (sUniqueMap.containsKey(inName))
035      {
036         throw new ProgrammingException("A GenBank subkeyword already exists with name " + StringUtil.singleQuote(inName) + "!");
037      }
038
039      mName = inName;
040      sUniqueMap.put(inName, this);
041   }
042
043
044   //###########################################################################
045   // PUBLIC METHODS
046   //###########################################################################
047
048   //---------------------------------------------------------------------------
049   @Override
050   public String toString()
051   {
052      return name();
053   }
054
055   //---------------------------------------------------------------------------
056   public String name()
057   {
058      return mName;
059   }
060
061   //---------------------------------------------------------------------------
062   public static GenBankSubkeyword valueOf(String inName)
063   {
064      return sUniqueMap.get(inName);
065   }
066
067   //---------------------------------------------------------------------------
068   public static Collection<GenBankSubkeyword> values()
069   {
070      return sUniqueMap.values();
071   }
072
073}