JAL-2110 equals and hashcode should check fromSeq
authorJim Procter <jprocter@issues.jalview.org>
Thu, 16 Jun 2016 12:47:05 +0000 (13:47 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Thu, 16 Jun 2016 12:47:05 +0000 (13:47 +0100)
src/jalview/datamodel/AlignedCodonFrame.java

index 473a534..a4b99bf 100644 (file)
@@ -60,14 +60,15 @@ public class AlignedCodonFrame
     }
 
     /**
-     * Returns a hashCode derived from the hashcodes of the mappings
+     * Returns a hashCode derived from the hashcodes of the mappings and fromSeq
      * 
      * @see SequenceToSequenceMapping#hashCode()
      */
     @Override
     public int hashCode()
     {
-      return mapping.hashCode();
+      return (fromSeq == null ? 0 : fromSeq.hashCode() * 31)
+              + mapping.hashCode();
     }
 
     /**
@@ -88,7 +89,12 @@ public class AlignedCodonFrame
       {
         return that.mapping == null;
       }
-      return this.mapping.equals(that.mapping);
+      // TODO: can simplify by asserting fromSeq is a dataset sequence
+      return (this.fromSeq == that.fromSeq || (this.fromSeq != null
+              && that.fromSeq != null
+              && this.fromSeq.getDatasetSequence() != null && this.fromSeq
+              .getDatasetSequence() == that.fromSeq
+              .getDatasetSequence())) && this.mapping.equals(that.mapping);
     }
 
     public SequenceI getFromSeq()