JAL-1667 refactoring to support JAL-1668
[jalview.git] / src / jalview / ws / uimodel / PDBSearchResponse.java
index 9f44102..9a6e1c6 100644 (file)
@@ -1,16 +1,22 @@
 package jalview.ws.uimodel;
 
+import jalview.ws.dbsources.PDBRestClient.PDBDocField;
+
 import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
 
 import javax.swing.DefaultListModel;
 
+import org.json.simple.JSONObject;
+
 public class PDBSearchResponse
 {
   private int itemsFound;
 
   private String responseTime;
 
-  private Collection<PDBSummaryListModel> searchSummary;
+  private Collection<PDBResponseSummary> searchSummary;
 
   public int getItemsFound()
   {
@@ -32,25 +38,124 @@ public class PDBSearchResponse
     this.responseTime = responseTime;
   }
 
-  public Collection<PDBSummaryListModel> getSearchSummary()
+  public Collection<PDBResponseSummary> getSearchSummary()
   {
     return searchSummary;
   }
 
-  public void setSearchSummary(Collection<PDBSummaryListModel> searchSummary)
+  public void setSearchSummary(Collection<PDBResponseSummary> searchSummary)
   {
     this.searchSummary = searchSummary;
   }
 
-  public static DefaultListModel<PDBSummaryListModel> getListModel(
-          Collection<PDBSummaryListModel> summariesList)
+  public static DefaultListModel<PDBResponseSummary> getListModel(
+          Collection<PDBResponseSummary> summariesList)
   {
-    DefaultListModel<PDBSummaryListModel> defaultListModel = new DefaultListModel<PDBSummaryListModel>();
-    for (PDBSummaryListModel summaryList : summariesList)
+    DefaultListModel<PDBResponseSummary> defaultListModel = new DefaultListModel<PDBResponseSummary>();
+    for (PDBResponseSummary summaryList : summariesList)
     {
       defaultListModel.addElement(summaryList);
     }
     return defaultListModel;
   }
+
+  public class PDBResponseSummary
+  {
+    private String pdbId;
+
+    private String summary;
+
+    private int width = 480;
+
+    public PDBResponseSummary(JSONObject doc, List<PDBDocField> diplayFields)
+    {
+      StringBuilder summaryBuilder = new StringBuilder();
+
+      for (PDBDocField field : diplayFields)
+      {
+        if (field.equals(PDBDocField.MOLECULE_TYPE)
+                && doc.get(PDBDocField.MOLECULE_TYPE.getCode()) != null)
+        {
+          String moleculeType = doc
+                  .get(PDBDocField.MOLECULE_TYPE.getCode()).toString();
+          if (moleculeType.equalsIgnoreCase("protein"))
+          {
+            summaryBuilder.append("<img src=\""
+                    + getClass().getResource("/images/protein.png")
+                            .toString() + "\">");
+          }
+          if (moleculeType.equalsIgnoreCase("dna"))
+          {
+            summaryBuilder.append("<img src=\""
+                    + getClass().getResource("/images/dna.png").toString()
+                    + "\">");
+          }
+          if (moleculeType.equalsIgnoreCase("rna"))
+          {
+            summaryBuilder.append("<img src=\""
+                    + getClass().getResource("/images/dna.png").toString()
+                    + "\">");
+          }
+          if (moleculeType.equalsIgnoreCase("sugar"))
+          {
+            summaryBuilder.append("<img src=\""
+                    + getClass().getResource("/images/sugar.png")
+                            .toString() + "\">");
+          }
+        }
+        else if (field.equals(PDBDocField.PDB_ID)
+                && doc.get(PDBDocField.PDB_ID.getCode()) != null)
+        {
+          this.pdbId = doc.get(PDBDocField.PDB_ID.getCode()).toString();
+        }
+        else if (doc.get(field.getCode()) != null)
+        {
+          summaryBuilder.append(field.getName()).append(": ")
+                  .append(doc.get(field.getCode())).append(" | ");
+        }
+      }
+      int endIndex = summaryBuilder.lastIndexOf(" | ");
+      String fSummary = summaryBuilder.toString().substring(0, endIndex);
+      this.summary = fSummary.trim();
+      summaryBuilder = null;
+    }
+
+    public String getPdbId()
+    {
+      return pdbId;
+    }
+
+    public void setPdbId(String pdbId)
+    {
+      this.pdbId = pdbId;
+    }
+
+    public String getSummary()
+    {
+      return summary;
+    }
+
+    public void setSummary(String summary)
+    {
+      this.summary = summary;
+    }
+
+    public String toString()
+    {
+      StringBuilder html = new StringBuilder();
+      html.append("<html><div style=\"width:" + width
+              + "; word-wrap: break-word; border-bottom-style: dotted;\"> ");
+      html.append(summary);
+      html.append("</div></html>");
+      return html.toString();
+    }
+
+    @Override
+    public int hashCode()
+    {
+      return Objects.hash(this.pdbId, this.summary);
+    }
+  }
+
 }