Merge branch 'Release_2_7_Branch_hotfix_JAL-962' into develop
[jalview.git] / src / jalview / ws / seqfetcher / DbSourceProxy.java
1 /*\r
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)\r
3  * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle\r
4  * \r
5  * This file is part of Jalview.\r
6  * \r
7  * Jalview is free software: you can redistribute it and/or\r
8  * modify it under the terms of the GNU General Public License \r
9  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
10  * \r
11  * Jalview is distributed in the hope that it will be useful, but \r
12  * WITHOUT ANY WARRANTY; without even the implied warranty \r
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
14  * PURPOSE.  See the GNU General Public License for more details.\r
15  * \r
16  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\r
17  */\r
18 package jalview.ws.seqfetcher;\r
19 \r
20 import jalview.datamodel.AlignmentI;\r
21 \r
22 import java.util.Hashtable;\r
23 \r
24 import com.stevesoft.pat.Regex;\r
25 \r
26 /**\r
27  * generic Reference Retrieval interface for a particular database\r
28  * source/version as cited in DBRefEntry. TODO: add/define property to describe\r
29  * max number of queries that this source can cope with at once. TODO:\r
30  * add/define mechanism for retrieval of Trees and distance matrices from a\r
31  * database (unify with io)\r
32  * \r
33  * @author JimP\r
34  * \r
35  */\r
36 public interface DbSourceProxy\r
37 {\r
38   /**\r
39    * \r
40    * @return source string constant used for this DB source\r
41    */\r
42   public String getDbSource();\r
43 \r
44   /**\r
45    * Short meaningful name for this data source for display in menus or\r
46    * selection boxes.\r
47    * \r
48    * @return String\r
49    */\r
50   public String getDbName();\r
51 \r
52   /**\r
53    * \r
54    * @return version string for this database.\r
55    */\r
56   public String getDbVersion();\r
57 \r
58   /**\r
59    * Separator between individual accession queries for a database that allows\r
60    * multiple IDs to be fetched in a single query. Null implies that only a\r
61    * single ID can be fetched at a time.\r
62    * \r
63    * @return string for separating concatenated queries (as individually\r
64    *         validated by the accession validator)\r
65    */\r
66   public String getAccessionSeparator();\r
67 \r
68   /**\r
69    * Regular expression for checking form of query string understood by this\r
70    * source.\r
71    * \r
72    * @return null or a validation regex\r
73    */\r
74   public Regex getAccessionValidator();\r
75 \r
76   /**\r
77    * DbSource properties hash - define the capabilities of this source Property\r
78    * hash methods defined in DbSourceProxyImpl. See constants in\r
79    * jalview.datamodel.DBRefSource for definition of properties.\r
80    * \r
81    * @return\r
82    */\r
83   public Hashtable getDbSourceProperties();\r
84 \r
85   /**\r
86    * \r
87    * @return a test/example query that can be used to validate retrieval and\r
88    *         parsing mechanisms\r
89    */\r
90   public String getTestQuery();\r
91 \r
92   /**\r
93    * optionally implemented\r
94    * \r
95    * @param accession\r
96    * @return\r
97    */\r
98   public boolean isValidReference(String accession);\r
99 \r
100   /**\r
101    * make one or more queries to the database and attempt to parse the response\r
102    * into an alignment\r
103    * \r
104    * @param queries\r
105    * @return null if queries were successful but result was not parsable\r
106    * @throws Exception\r
107    *           TODO\r
108    */\r
109   public AlignmentI getSequenceRecords(String queries) throws Exception;\r
110 \r
111   /**\r
112    * \r
113    * @return true if a query is currently being made\r
114    */\r
115   public boolean queryInProgress();\r
116 \r
117   /**\r
118    * get the raw reponse from the last set of queries\r
119    * \r
120    * @return one or more string buffers for each individual query\r
121    */\r
122   public StringBuffer getRawRecords();\r
123 \r
124   \r
125   /**\r
126    * Find out more info about the source.\r
127    * @param dbsourceproperty - one of the database reference source properties in jalview.datamodel.DBRefSource\r
128    * @return true if the source has this property\r
129    */\r
130   public boolean isA(Object dbsourceproperty);\r
131 }\r