1 package jalview.ws.uimodel;
3 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
5 import java.util.Collection;
7 import java.util.Objects;
9 import javax.swing.DefaultListModel;
10 import javax.swing.table.DefaultTableModel;
12 import org.json.simple.JSONObject;
14 public class PDBSearchResponse
16 private int itemsFound;
18 private String responseTime;
20 private Collection<PDBResponseSummary> searchSummary;
22 public int getItemsFound()
27 public void setItemsFound(int itemFound)
29 this.itemsFound = itemFound;
32 public String getResponseTime()
37 public void setResponseTime(String responseTime)
39 this.responseTime = responseTime;
42 public Collection<PDBResponseSummary> getSearchSummary()
47 public void setSearchSummary(Collection<PDBResponseSummary> searchSummary)
49 this.searchSummary = searchSummary;
52 public static DefaultListModel<PDBResponseSummary> getListModel(
53 Collection<PDBResponseSummary> summariesList)
55 DefaultListModel<PDBResponseSummary> defaultListModel = new DefaultListModel<PDBResponseSummary>();
56 for (PDBResponseSummary summaryList : summariesList)
58 defaultListModel.addElement(summaryList);
60 return defaultListModel;
63 public static DefaultTableModel getTableModel(PDBSearchRequest request,
64 Collection<PDBResponseSummary> summariesList)
66 DefaultTableModel model = new DefaultTableModel();
68 if (request.getAssociatedSequence() != null)
70 model.addColumn("Sequence");
72 for (PDBDocField field : request.getWantedFields())
74 model.addColumn(field.getName());
77 for (PDBResponseSummary res : summariesList)
79 model.addRow(res.getSummaryColums());
86 public class PDBResponseSummary
90 private String summaryRow;
92 private String[] summaryColums;
94 private String associatedSequence;
96 private int width = 480;
98 public PDBResponseSummary(JSONObject doc,
99 List<PDBDocField> diplayFields, String associatedSeq)
101 StringBuilder summaryBuilder = new StringBuilder();
104 summaryColums = new String[(associatedSeq != null) ? diplayFields
105 .size() + 1 : diplayFields.size()];
106 if (associatedSeq != null)
108 this.associatedSequence = (associatedSeq.length() > 18) ? associatedSeq
109 .substring(0, 18) : associatedSeq;
110 summaryColums[0] = associatedSequence;
114 for (PDBDocField field : diplayFields)
116 if (field.equals(PDBDocField.MOLECULE_TYPE)
117 && doc.get(PDBDocField.MOLECULE_TYPE.getCode()) != null)
119 String moleculeType = doc
120 .get(PDBDocField.MOLECULE_TYPE.getCode()).toString();
121 if (moleculeType.equalsIgnoreCase("protein"))
123 summaryBuilder.append("<img src=\""
124 + getClass().getResource("/images/protein.png")
125 .toString() + "\">");
127 if (moleculeType.equalsIgnoreCase("dna"))
129 summaryBuilder.append("<img src=\""
130 + getClass().getResource("/images/dna.png").toString()
133 if (moleculeType.equalsIgnoreCase("rna"))
135 summaryBuilder.append("<img src=\""
136 + getClass().getResource("/images/dna.png").toString()
139 if (moleculeType.equalsIgnoreCase("sugar"))
141 summaryBuilder.append("<img src=\""
142 + getClass().getResource("/images/sugar.png")
143 .toString() + "\">");
145 summaryColums[colCounter++] = moleculeType;
147 else if (field.equals(PDBDocField.PDB_ID)
148 && doc.get(PDBDocField.PDB_ID.getCode()) != null)
150 this.pdbId = doc.get(PDBDocField.PDB_ID.getCode()).toString();
151 summaryBuilder.append(this.pdbId).append(" | ");
152 summaryColums[colCounter++] = this.pdbId;
154 else if (doc.get(field.getCode()) != null)
156 summaryBuilder.append(field.getName()).append(": ")
157 .append(doc.get(field.getCode())).append(" | ");
158 summaryColums[colCounter++] = doc.get(field.getCode()).toString();
161 int endIndex = summaryBuilder.lastIndexOf(" | ");
162 String fSummary = summaryBuilder.toString().substring(0, endIndex);
163 this.summaryRow = fSummary.trim();
164 summaryBuilder = null;
167 public String getPdbId()
172 public void setPdbId(String pdbId)
177 public String getSummaryRow()
182 public void setSummaryRow(String summary)
184 this.summaryRow = summary;
187 public String[] getSummaryColums()
189 return summaryColums;
192 public void setSummaryColums(String[] summaryColums)
194 this.summaryColums = summaryColums;
197 public String toString()
199 StringBuilder html = new StringBuilder();
200 html.append("<html><div style=\"width:" + width
201 + "; word-wrap: break-word; border-bottom-style: dotted;\"> ");
202 html.append(summaryRow);
203 html.append("</div></html>");
204 return html.toString();
208 public int hashCode()
210 return Objects.hash(this.pdbId, this.summaryRow);
214 public boolean equals(Object other)
216 if (!(other instanceof PDBResponseSummary))
221 PDBResponseSummary that = (PDBResponseSummary) other;
223 // Custom equality check here.
224 return this.pdbId.equals(that.pdbId)
225 && this.summaryRow.equals(that.summaryRow);