JAL-3210 Improvements to eclipse detection. New src tree and SwingJS updated from...
[jalview.git] / src / jalview / analysis / CrossRef.java
index 00bb63a..dbad53e 100644 (file)
@@ -31,13 +31,14 @@ import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceI;
 import jalview.util.DBRefUtils;
 import jalview.util.MapList;
-import jalview.ws.SequenceFetcherFactory;
-import jalview.ws.seqfetcher.ASequenceFetcher;
+import jalview.ws.SequenceFetcher;
 
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import intervalstore.api.IntervalI;
+
 /**
  * Functions for cross-referencing sequence databases.
  * 
@@ -402,7 +403,6 @@ public class CrossRef
   private void retrieveCrossRef(List<DBRefEntry> sourceRefs, SequenceI seq,
           List<DBRefEntry> xrfs, boolean fromDna, AlignedCodonFrame cf)
   {
-    ASequenceFetcher sftch = SequenceFetcherFactory.getSequenceFetcher();
     SequenceI[] retrieved = null;
     SequenceI dss = seq.getDatasetSequence() == null ? seq
             : seq.getDatasetSequence();
@@ -418,7 +418,8 @@ public class CrossRef
     }
     try
     {
-      retrieved = sftch.getSequences(sourceRefs, !fromDna);
+      retrieved = SequenceFetcher.getInstance()
+              .getSequences(sourceRefs, !fromDna);
     } catch (Exception e)
     {
       System.err.println(
@@ -483,7 +484,7 @@ public class CrossRef
   private void removeAlreadyRetrievedSeqs(List<DBRefEntry> sourceRefs,
           boolean fromDna)
   {
-    List<DBRefEntry> dbrSourceSet = new ArrayList<DBRefEntry>(sourceRefs);
+    List<DBRefEntry> dbrSourceSet = new ArrayList<>(sourceRefs);
     List<SequenceI> dsSeqs = dataset.getSequences();
     for (int ids = 0, nds = dsSeqs.size(); ids < nds; ids++)
     {
@@ -638,12 +639,23 @@ public class CrossRef
                    */
                   SequenceFeature newFeature = new SequenceFeature(feat)
                   {
+                    // BH 2019.08.15 We must override equalsInterval, not
+                    // equals, because that is part of the IntervalI interface,
+                    // and IntervalStore may need that for proper, faster
+                    // processing.
+                    // @Override
+                    // public boolean equals(Object o)
+                    // {
+                    // return super.equals(o, true);
+                    // }
+                    //
                     @Override
-                    public boolean equals(Object o)
+                    public boolean equalsInterval(IntervalI sf)
                     {
-                      return super.equals(o, true);
+                      return equals((SequenceFeature) sf, true);
                     }
                   };
+
                   matched.addSequenceFeature(newFeature);
                 }
               }