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}