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