2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
3 * Copyright (C) 2014 The Jalview Authors
5 * This file is part of Jalview.
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.
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.
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.
22 package jalview.ws.uimodel;
24 import jalview.datamodel.SequenceI;
25 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
27 import java.util.Collection;
28 import java.util.Objects;
30 import javax.swing.table.DefaultTableModel;
32 import org.json.simple.JSONObject;
35 * Represents the response model produced by the PDBRestClient upon successful
36 * execution of a given request
41 public class PDBRestResponse
43 private int numberOfItemsFound;
45 private String responseTime;
47 private Collection<PDBResponseSummary> searchSummary;
49 public int getNumberOfItemsFound()
51 return numberOfItemsFound;
54 public void setNumberOfItemsFound(int itemFound)
56 this.numberOfItemsFound = itemFound;
59 public String getResponseTime()
64 public void setResponseTime(String responseTime)
66 this.responseTime = responseTime;
69 public Collection<PDBResponseSummary> getSearchSummary()
74 public void setSearchSummary(Collection<PDBResponseSummary> searchSummary)
76 this.searchSummary = searchSummary;
81 * Convenience method to obtain a Table model for a given summary List based
82 * on the request parameters
85 * the PDBRestRequest object which holds useful information for
86 * creating a table model
87 * @param summariesList
88 * the summary list which contains the data for populating the
90 * @return the table model which was dynamically generated
92 public static DefaultTableModel getTableModel(PDBRestRequest request,
93 Collection<PDBResponseSummary> summariesList)
95 DefaultTableModel tableModel = new DefaultTableModel()
98 public boolean isCellEditable(int row, int column)
103 if (request.getAssociatedSequence() != null)
105 tableModel.addColumn("Ref Sequence"); // Create sequence column header if
106 // exists in the request
108 for (PDBDocField field : request.getWantedFields())
110 tableModel.addColumn(field.getName()); // Create sequence column header if
111 // exists in the request
114 for (PDBResponseSummary res : summariesList)
116 tableModel.addRow(res.getSummaryData()); // Populate table rows with
124 * Model for a unique response summary
127 public class PDBResponseSummary
129 private String pdbId;
131 private Object[] summaryRowData;
133 private SequenceI associatedSequence;
135 public PDBResponseSummary(JSONObject pdbJsonDoc, PDBRestRequest request)
137 Collection<PDBDocField> diplayFields = request.getWantedFields();
138 SequenceI associatedSeq = request.getAssociatedSequence();
140 summaryRowData = new Object[(associatedSeq != null) ? diplayFields
141 .size() + 1 : diplayFields.size()];
142 if (associatedSeq != null)
144 this.associatedSequence = associatedSeq;
145 summaryRowData[0] = associatedSequence;
149 for (PDBDocField field : diplayFields)
151 String fieldData = (pdbJsonDoc.get(field.getCode()) == null) ? ""
153 .get(field.getCode()).toString();
154 if (field.equals(PDBDocField.PDB_ID))
156 this.pdbId = fieldData;
157 summaryRowData[colCounter++] = this.pdbId;
161 summaryRowData[colCounter++] = fieldData;
166 public String getPdbId()
171 public void setPdbId(String pdbId)
176 public Object[] getSummaryData()
178 return summaryRowData;
181 public void setSummaryData(String[] summaryData)
183 this.summaryRowData = summaryData;
187 * Returns a string representation of this object;
190 public String toString()
192 StringBuilder summaryFieldValues = new StringBuilder();
193 for (Object summaryField : summaryRowData)
195 summaryFieldValues.append(summaryField.toString()).append("\t");
197 return summaryFieldValues.toString();
201 * Returns hash code value for this object
204 public int hashCode()
206 return Objects.hash(this.pdbId, this.toString());
210 * Indicates whether some object is equal to this one
213 public boolean equals(Object that)
215 if (!(that instanceof PDBResponseSummary))
219 PDBResponseSummary another = (PDBResponseSummary) that;
220 return this.toString().equals(another.toString());