JAL-2089 patch broken merge to master for Release 2.10.0b1
[jalview.git] / src / jalview / datamodel / DBRefSource.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.datamodel;
22
23 import java.lang.reflect.Field;
24 import java.util.ArrayList;
25 import java.util.List;
26
27 /**
28  * Defines internal constants for unambiguous annotation of DbRefEntry source
29  * strings and describing the data retrieved from external database sources (see
30  * jalview.ws.DbSourcProxy) <br/>
31  * TODO: replace with ontology to allow recognition of particular attributes
32  * (e.g. protein coding, alignment (ortholog db, paralog db, domain db),
33  * genomic, transcriptomic, 3D structure providing (PDB, MODBASE, etc) ..).
34  * 
35  * @author JimP
36  * 
37  */
38 public class DBRefSource
39 {
40   /**
41    * UNIPROT Accession Number
42    */
43   public static final String UNIPROT = "UNIPROT";
44
45   /**
46    * UNIPROT Entry Name
47    */
48   public static final String UP_NAME = "UNIPROT_NAME".toUpperCase();
49
50   /**
51    * Uniprot Knowledgebase/TrEMBL as served from EMBL protein products.
52    */
53   public static final String UNIPROTKB = "UniProtKB/TrEMBL".toUpperCase();
54
55   public static final String EMBLCDSProduct = "EMBLCDSProtein"
56           .toUpperCase();
57
58   /**
59    * PDB Entry Code
60    */
61   public static final String PDB = "PDB";
62
63   /**
64    * EMBL ID
65    */
66   public static final String EMBL = "EMBL";
67
68   /**
69    * EMBLCDS ID
70    */
71   public static final String EMBLCDS = "EMBLCDS";
72
73   /**
74    * PFAM ID
75    */
76   public static final String PFAM = "PFAM";
77
78   /**
79    * RFAM ID
80    */
81   public static final String RFAM = "RFAM";
82
83   /**
84    * GeneDB ID
85    */
86   public static final String GENEDB = "GeneDB".toUpperCase();
87
88   /**
89    * Ensembl
90    */
91   public static final String ENSEMBL = "ENSEMBL";
92
93   public static final String ENSEMBLGENOMES = "ENSEMBLGENOMES";
94
95   /**
96    * List of databases whose sequences might have coding regions annotated
97    */
98   public static final String[] DNACODINGDBS = { EMBL, EMBLCDS, GENEDB,
99       ENSEMBL };
100
101   public static final String[] CODINGDBS = { EMBLCDS, GENEDB, ENSEMBL };
102
103   public static final String[] PROTEINDBS = { UNIPROT, UNIPROTKB,
104       EMBLCDSProduct, ENSEMBL }; // Ensembl ENSP* entries are protein
105
106   public static String[] allSources()
107   {
108     List<String> src = new ArrayList<String>();
109     for (Field f : DBRefSource.class.getFields())
110     {
111       if (String.class.equals(f.getType()))
112       {
113         try
114         {
115           src.add((String) f.get(null));
116         } catch (Exception x)
117         {
118           x.printStackTrace();
119         }
120       }
121     }
122     return src.toArray(new String[0]);
123   }
124 }