31d5c7c5db28f78bfecf4fcf3a35aafc5cbe3644
[jalview.git] / src / jalview / fts / api / FTSRestClientI.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
22 package jalview.fts.api;
23
24 import jalview.fts.api.FTSDataColumnI.FTSDataColumnGroupI;
25 import jalview.fts.core.FTSDataColumnPreferences.PreferenceSource;
26 import jalview.fts.core.FTSRestRequest;
27 import jalview.fts.core.FTSRestResponse;
28
29 import java.util.Collection;
30
31 /**
32  * Methods for FTS Rest client.
33  * 
34  * @author tcnofoegbu
35  */
36 public interface FTSRestClientI
37 {
38
39   /**
40    * Execute a given FTS request, process the response and return it as an
41    * FTSRestResponse object
42    * 
43    * @param ftsRestRequest
44    *          the FTS request to execute
45    * @return FTSRestResponse - the response after executing an FTS request
46    * @throws Exception
47    */
48   public FTSRestResponse executeRequest(FTSRestRequest ftsRequest)
49           throws Exception;
50
51   /**
52    * Return the resource file path for the data columns configuration file
53    * 
54    * @return
55    */
56   public String getColumnDataConfigFileName();
57
58   /**
59    * Fetch FTSDataColumnGroupI by the group's Id
60    * 
61    * @param groupId
62    * @return FTSDataColumnGroupI
63    * @throws Exception
64    */
65   public FTSDataColumnGroupI getDataColumnGroupById(String groupId)
66           throws Exception;
67
68   /**
69    * Fetch FTSDataColumnI by name or code
70    * 
71    * @param nameOrCode
72    * @return FTSDataColumnI
73    * @throws Exception
74    */
75   public FTSDataColumnI getDataColumnByNameOrCode(String nameOrCode)
76           throws Exception;
77
78   /**
79    * Convert collection of FTSDataColumnI objects to a comma delimited string of
80    * the 'code' values
81    * 
82    * @param wantedFields
83    *          the collection of FTSDataColumnI to process
84    * @return the generated comma delimited string from the supplied
85    *         FTSDataColumnI collection
86    */
87   public String getDataColumnsFieldsAsCommaDelimitedString(
88           Collection<FTSDataColumnI> wantedFields);
89
90   /**
91    * Fetch index of the primary key column for the dynamic table
92    * TODO: consider removing 'hasRefSeq' - never used in code
93    * @param wantedFields
94    *          the available table columns
95    * @param hasRefSeq
96    *          true if the data columns has an additional column for reference
97    *          sequence
98    * @return index of the primary key column
99    * @throws Exception
100    */
101   public int getPrimaryKeyColumIndex(
102           Collection<FTSDataColumnI> wantedFields, boolean hasRefSeq)
103           throws Exception;
104
105   /**
106    * Fetch the primary key data column object
107    * 
108    * @return the FTSDataColumnI object for the primary key column
109    */
110   public FTSDataColumnI getPrimaryKeyColumn();
111
112   /**
113    * Returns list of FTSDataColumnI objects to be displayed by default
114    * 
115    * @return list of columns to display by default
116    */
117   public Collection<FTSDataColumnI> getAllDefaultDisplayedFTSDataColumns();
118
119   /**
120    * Return list of FTSDataColumnI objects that can be used to perform a search
121    * query
122    * 
123    * @return list of searchable FTSDataColumnI object
124    */
125   public Collection<FTSDataColumnI> getSearchableDataColumns();
126
127   /**
128    * Return list of all available FTSDataColumnI object
129    * 
130    * @return list of all FTSColumnI objcet
131    */
132   public Collection<FTSDataColumnI> getAllFTSDataColumns();
133
134   /**
135    * Return the default response page limit
136    * 
137    * @return the default response page size
138    */
139   public int getDefaultResponsePageSize();
140
141   public String[] getPreferencesColumnsFor(PreferenceSource source);
142 }