JAL-3253-applet JAL-3397
[jalview.git] / src / jalview / analysis / CrossRef.java
index 00bb63a..ed87f05 100644 (file)
@@ -31,8 +31,7 @@ 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;
@@ -402,7 +401,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 +416,8 @@ public class CrossRef
     }
     try
     {
-      retrieved = sftch.getSequences(sourceRefs, !fromDna);
+      retrieved = SequenceFetcher.getInstance()
+              .getSequences(sourceRefs, !fromDna);
     } catch (Exception e)
     {
       System.err.println(
@@ -483,7 +482,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,10 +637,22 @@ 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.
+                    // But SequenceFeature changes were reverted...
                     @Override
                     public boolean equals(Object o)
                     {
-                      return super.equals(o, true);
+                      return o instanceof SequenceFeature
+                              && equalsWithParent((SequenceFeature) o);
+                    }
+
+                    @Override
+                    public boolean equalsWithParent(SequenceFeature sf)
+                    {
+                      return sf != null && equals(sf, true);
                     }
                   };
                   matched.addSequenceFeature(newFeature);