JAL-3959 add key retrieval urls that support CORS needed by JalviewJS
[jalview.git] / src / jalview / ws / dbsources / Rfam.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.ws.dbsources;
22
23 import jalview.bin.Cache;
24 import jalview.datamodel.DBRefSource;
25 import jalview.util.Platform;
26
27 import com.stevesoft.pat.Regex;
28
29 /**
30  * Contains methods for fetching sequences from Rfam database
31  * 
32  * @author Lauren Michelle Lui
33  */
34 abstract public class Rfam extends Xfam
35 {
36   static final String RFAM_BASEURL_KEY = "RFAM_BASEURL";
37
38   private static final String DEFAULT_RFAM_BASEURL = "https://rfam.xfam.org";
39
40   static {
41     Platform.addJ2SDirectDatabaseCall(DEFAULT_RFAM_BASEURL);
42   }
43   /*
44    * append to URLs to retrieve as a gzipped file
45    */
46   protected static final String GZIPPED = "?gzip=1&download=1";
47
48   @Override
49   protected String getURLPrefix()
50   {
51     return Cache.getDefault(RFAM_BASEURL_KEY, DEFAULT_RFAM_BASEURL);
52   }
53
54   public Rfam()
55   {
56     super();
57   }
58
59   /*
60    * (non-Javadoc)
61    * 
62    * @see jalview.ws.DbSourceProxy#getAccessionSeparator() Left here for
63    * consistency with Pfam class
64    */
65   @Override
66   public String getAccessionSeparator()
67   {
68     return null;
69   }
70
71   /*
72    * (non-Javadoc)
73    * 
74    * @see jalview.ws.DbSourceProxy#getAccessionValidator() * Left here for
75    */
76   @Override
77   public Regex getAccessionValidator()
78   {
79     return null;
80   }
81
82   /*
83    * (non-Javadoc)
84    * 
85    * Left here for consistency with Pfam class
86    * 
87    * @see jalview.ws.DbSourceProxy#getDbSource() public String getDbSource() { *
88    * this doesn't work - DbSource is key for the hash of DbSourceProxy instances
89    * - 1:many mapping for DbSource to proxy will be lost. * suggest : RFAM is an
90    * 'alignment' source - means proxy is higher level than a sequence source.
91    * return jalview.datamodel.DBRefSource.RFAM; }
92    */
93
94   /*
95    * (non-Javadoc)
96    * 
97    * @see jalview.ws.DbSourceProxy#getDbVersion()
98    */
99   @Override
100   public String getDbVersion()
101   {
102     return null;
103   }
104
105   /*
106    * (non-Javadoc)
107    * 
108    * @see jalview.ws.DbSourceProxy#isValidReference(java.lang.String)
109    */
110   @Override
111   public boolean isValidReference(String accession)
112   {
113     return accession.indexOf("RF") == 0;
114   }
115
116   /*
117    * (non-Javadoc)
118    * 
119    * @see jalview.ws.dbsources.Xfam#getXfamSource()
120    */
121   @Override
122   public String getXfamSource()
123   {
124     return DBRefSource.RFAM;
125   }
126
127 }