47d108219da87faafeaa324d95675396dc127336
[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  * BH 2018 SwingJS note: If additional final static Strings are added to this
29  * file, they should be added to public static final String[] allTypes.
30  * 
31  * Defines internal constants for unambiguous annotation of DbRefEntry source
32  * strings and describing the data retrieved from external database sources (see
33  * jalview.ws.DbSourcProxy) <br/>
34  * TODO: replace with ontology to allow recognition of particular attributes
35  * (e.g. protein coding, alignment (ortholog db, paralog db, domain db),
36  * genomic, transcriptomic, 3D structure providing (PDB, MODBASE, etc) ..).
37  * 
38  * 
39  * 
40  * @author JimP
41  * 
42  */
43 public class DBRefSource
44 {
45   
46   
47   
48   /**
49    * UNIPROT Accession Number
50    */
51   public static final String UNIPROT = "UNIPROT";
52
53   /**
54    * UNIPROT Entry Name
55    */
56   public static final String UP_NAME = "UNIPROT_NAME".toUpperCase();
57
58   /**
59    * Uniprot Knowledgebase/TrEMBL as served from EMBL protein products.
60    */
61   public static final String UNIPROTKB = "UniProtKB/TrEMBL".toUpperCase();
62
63   public static final String EMBLCDSProduct = "EMBLCDSProtein".toUpperCase();
64
65   
66   /**
67    * PDB Entry Code
68    */
69   public static final String PDB = "PDB";
70
71   /**
72    * EMBL ID
73    */
74   public static final String EMBL = "EMBL";
75
76   /**
77    * EMBLCDS ID
78    */
79   public static final String EMBLCDS = "EMBLCDS";
80
81   
82   /**
83    * PFAM ID
84    */
85   public static final String PFAM = "PFAM";
86
87   /**
88    * RFAM ID
89    */
90   public static final String RFAM = "RFAM";
91
92   /**
93    * GeneDB ID
94    */
95   public static final String GENEDB = "GeneDB".toUpperCase();
96
97   
98   /**
99    * Ensembl
100    */
101   public static final String ENSEMBL = "ENSEMBL";
102
103   public static final String ENSEMBLGENOMES = "ENSEMBLGENOMES";
104
105   
106    /**
107    * List of databases whose sequences might have coding regions annotated
108    */
109   public static final String[] DNACODINGDBS = { EMBL, EMBLCDS, GENEDB,
110       ENSEMBL, ENSEMBLGENOMES };
111
112   public static final String[] CODINGDBS = { EMBLCDS, GENEDB, ENSEMBL };
113
114   public static final String[] PROTEINDBS = { UNIPROT, UNIPROTKB,
115       EMBLCDSProduct, ENSEMBL }; // Ensembl ENSP* entries are protein
116
117   
118   public static final String[] allTypes = new String[] {
119       UNIPROT, UP_NAME, UNIPROTKB, 
120       EMBLCDSProduct, PDB, EMBL, 
121       EMBLCDS, PFAM, RFAM, 
122       GENEDB, ENSEMBL, ENSEMBLGENOMES 
123       };
124
125
126   public static String[] allSourcesFromReflection;
127
128   public static String[] allSources()
129
130   {
131     /**
132      * @j2sNative
133      * 
134      *            return C$.allTypes;
135      * 
136      */
137
138     {
139       if (allSourcesFromReflection == null)
140       {
141         List<String> src = new ArrayList<>();
142         for (Field f : DBRefSource.class.getFields())
143         {
144           if (String.class.equals(f.getType()))
145           {
146             try
147             {
148               src.add((String) f.get(null));
149             } catch (Exception x)
150             {
151               x.printStackTrace();
152             }
153           }
154         }
155         allSourcesFromReflection = src.toArray(new String[0]);
156       }
157       return allSourcesFromReflection;
158     }
159   }
160   
161   
162 }