JAL-3438 spotless for 2.11.2.0
[jalview.git] / src / jalview / fts / core / FTSRestResponse.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.core;
23
24 import jalview.datamodel.SequenceI;
25 import jalview.fts.api.FTSData;
26 import jalview.fts.api.FTSDataColumnI;
27
28 import java.util.Collection;
29 import java.util.Map;
30
31 import javax.swing.JTable;
32 import javax.swing.table.DefaultTableModel;
33
34 /**
35  * Represents the response model generated by the FTSRestClient upon successful
36  * execution of a given FTS request
37  * 
38  * @author tcnofoegbu
39  *
40  */
41 public class FTSRestResponse
42 {
43   private int numberOfItemsFound;
44
45   private String responseTime;
46
47   private Collection<FTSData> searchSummary;
48
49   public int getNumberOfItemsFound()
50   {
51     return numberOfItemsFound;
52   }
53
54   public void setNumberOfItemsFound(int itemFound)
55   {
56     this.numberOfItemsFound = itemFound;
57   }
58
59   public String getResponseTime()
60   {
61     return responseTime;
62   }
63
64   public void setResponseTime(String responseTime)
65   {
66     this.responseTime = responseTime;
67   }
68
69   public Collection<FTSData> getSearchSummary()
70   {
71     return searchSummary;
72   }
73
74   public void setSearchSummary(Collection<FTSData> searchSummary)
75   {
76     this.searchSummary = searchSummary;
77   }
78
79   /**
80    * Convenience method to obtain a Table model for a given summary List based
81    * on the request parameters
82    * 
83    * @param request
84    *          the FTSRestRequest object which holds useful information for
85    *          creating a table model
86    * @param summariesList
87    *          the summary list which contains the data for populating the
88    *          table's rows
89    * @return the table model which was dynamically generated
90    */
91   public static DefaultTableModel getTableModel(FTSRestRequest request,
92           Collection<FTSData> summariesList)
93   {
94     final FTSDataColumnI[] cols = request.getWantedFields()
95             .toArray(new FTSDataColumnI[0]);
96     final int colOffset = request.getAssociatedSequence() == null ? 0 : 1;
97     DefaultTableModel tableModel = new DefaultTableModel()
98     {
99       @Override
100       public boolean isCellEditable(int row, int column)
101       {
102         return false;
103       }
104
105       @Override
106       public Class<?> getColumnClass(int columnIndex)
107       {
108         if (colOffset == 1 && columnIndex == 0)
109         {
110           return SequenceI.class;
111         }
112         return cols[columnIndex - colOffset].getDataType()
113                 .getDataTypeClass();
114       }
115
116     };
117     if (request.getAssociatedSequence() != null)
118     {
119       tableModel.addColumn("Ref Sequence"); // Create sequence column header if
120       // exists in the request
121     }
122     for (FTSDataColumnI field : request.getWantedFields())
123     {
124       tableModel.addColumn(field.getName()); // Create sequence column header if
125                                              // exists in the request
126     }
127
128     for (FTSData res : summariesList)
129     {
130       tableModel.addRow(res.getSummaryData()); // Populate table rows with
131                                                // summary list
132     }
133
134     return tableModel;
135   }
136
137   public static void configureTableColumn(JTable tbl_summary,
138           Collection<FTSDataColumnI> wantedFields,
139           Map<String, Integer> columnPrefs)
140   {
141     for (FTSDataColumnI wantedField : wantedFields)
142     {
143       try
144       {
145         tbl_summary.getColumn(wantedField.getName())
146                 .setMinWidth(wantedField.getMinWidth());
147         tbl_summary.getColumn(wantedField.getName())
148                 .setMaxWidth(wantedField.getMaxWidth());
149         int prefedWidth = columnPrefs.get(wantedField.getName()) == null
150                 ? wantedField.getPreferredWidth()
151                 : columnPrefs.get(wantedField.getName());
152         tbl_summary.getColumn(wantedField.getName())
153                 .setPreferredWidth(prefedWidth);
154       } catch (Exception e)
155       {
156         e.printStackTrace();
157       }
158       if (wantedField.getDataType().getDataTypeClass() == Double.class)
159       {
160         DecimalFormatTableCellRenderer dfr = new DecimalFormatTableCellRenderer(
161                 wantedField.getDataType().isFormtted(),
162                 wantedField.getDataType().getSignificantFigures());
163         tbl_summary.getColumn(wantedField.getName()).setCellRenderer(dfr);
164       }
165       else if (wantedField.getDataType()
166               .getDataTypeClass() == Integer.class)
167       {
168         DecimalFormatTableCellRenderer dfr = new DecimalFormatTableCellRenderer(
169                 wantedField.getDataType().isFormtted(),
170                 wantedField.getDataType().getSignificantFigures());
171         tbl_summary.getColumn(wantedField.getName()).setCellRenderer(dfr);
172       }
173     }
174   }
175
176 }