JAL-1720 JAL-2002 improvement for 'uniprot coverage' filter using facet pivot query
[jalview.git] / src / jalview / ws / uimodel / PDBRestRequest.java
index 168811f..7bfc226 100644 (file)
 
 package jalview.ws.uimodel;
 
-
+import jalview.bin.Cache;
+import jalview.datamodel.SequenceI;
 import jalview.ws.dbsources.PDBRestClient.PDBDocField;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Collection;
 
 /**
  * Represents the PDB request to be consumed by the PDBRestClient
@@ -41,15 +41,24 @@ public class PDBRestRequest
 
   private String fieldToSortBy;
 
-  private String associatedSequence;
+  private SequenceI associatedSequence;
 
   private boolean allowEmptySequence;
 
+  private boolean allowUnpublishedEntries = Cache.getDefault(
+          "ALLOW_UNPUBLISHED_PDB_QUERYING", false);
+
+  private boolean facet;
+
+  private String facetPivot;
+
+  private int facetPivotMinCount;
+
   private int responseSize;
 
   private boolean isSortAscending;
 
-  private List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
+  private Collection<PDBDocField> wantedFields;
 
   public String getFieldToSearchBy()
   {
@@ -91,12 +100,12 @@ public class PDBRestRequest
     this.responseSize = responseSize;
   }
 
-  public List<PDBDocField> getWantedFields()
+  public Collection<PDBDocField> getWantedFields()
   {
     return wantedFields;
   }
 
-  public void setWantedFields(List<PDBDocField> wantedFields)
+  public void setWantedFields(Collection<PDBDocField> wantedFields)
   {
     this.wantedFields = wantedFields;
   }
@@ -117,14 +126,68 @@ public class PDBRestRequest
     return isSortAscending;
   }
 
-  public String getAssociatedSequence()
+  public SequenceI getAssociatedSequence()
   {
     return associatedSequence;
   }
 
-  public void setAssociatedSequence(String associatedSequence)
+  public void setAssociatedSequence(SequenceI associatedSequence)
   {
     this.associatedSequence = associatedSequence;
   }
 
+  public String getQuery()
+  {
+    return fieldToSearchBy + searchTerm
+            + (isAllowEmptySeq() ? "" : " AND molecule_sequence:['' TO *]")
+            + (isAllowUnpublishedEntries() ? "" : " AND status:REL");
+  }
+
+  @Override
+  public String toString()
+  {
+    return "Query : " + getQuery() + " sort field: " + fieldToSortBy
+            + " isAsc: " + isAscending() + " Associated Seq : "
+            + associatedSequence;
+  }
+
+  public boolean isAllowUnpublishedEntries()
+  {
+    return allowUnpublishedEntries;
+  }
+
+  public void setAllowUnpublishedEntries(boolean allowUnpublishedEntries)
+  {
+    this.allowUnpublishedEntries = allowUnpublishedEntries;
+  }
+
+  public boolean isFacet()
+  {
+    return facet;
+  }
+
+  public void setFacet(boolean facet)
+  {
+    this.facet = facet;
+  }
+
+  public String getFacetPivot()
+  {
+    return facetPivot;
+  }
+
+  public void setFacetPivot(String facetPivot)
+  {
+    this.facetPivot = facetPivot;
+  }
+
+  public int getFacetPivotMinCount()
+  {
+    return facetPivotMinCount;
+  }
+
+  public void setFacetPivotMinCount(int facetPivotMinCount)
+  {
+    this.facetPivotMinCount = facetPivotMinCount;
+  }
 }