JAL-3567 unit tests for linked feature tooltips
[jalview.git] / src / jalview / datamodel / MappedFeatures.java
index 520ff92..87609c6 100644 (file)
@@ -29,21 +29,16 @@ public class MappedFeatures
   /*
    * the sequence the mapped features are on
    */
-  private final SequenceI linkedSeq;
+  private final SequenceI featureSequence;
 
   /*
    * the mapping between sequences;
-   * NB this could be in either sense
+   * NB this could be in either sense (from or to featureSequence)
    */
   private final Mapping mapping;
 
   /*
-   * if true, mapping is from the linked sequence, else to the linked sequence
-   */
-  private boolean mappingIsFromLinkedSequence;
-
-  /*
-   * features on linkedSeq that overlap the mapped positions
+   * features on featureSequence that overlap the mapped positions
    */
   public final List<SequenceFeature> features;
 
@@ -70,22 +65,23 @@ public class MappedFeatures
    * Constructor
    * 
    * @param theMapping
-   * @param from
-   *                      the sequence mapped from (e.g. CDS)
+   *          sequence mapping (which may be either to, or from, the sequence
+   *          holding the linked features)
+   * @param featureSeq
+   *          the sequence hosting the virtual features
    * @param pos
-   *                      the residue position in the sequence mapped to
+   *          the residue position in the sequence mapped to
    * @param res
-   *                      the residue character at position pos
+   *          the residue character at position pos
    * @param theFeatures
-   *                      list of mapped features found in the 'from' sequence at
-   *                      the mapped position(s)
+   *          list of mapped features found in the 'featureSeq' sequence at the
+   *          mapped position(s)
    */
-  public MappedFeatures(Mapping theMapping, SequenceI from, int pos,
+  public MappedFeatures(Mapping theMapping, SequenceI featureSeq, int pos,
           char res, List<SequenceFeature> theFeatures)
   {
     mapping = theMapping;
-    linkedSeq = from;
-    mappingIsFromLinkedSequence = mapping.to != linkedSeq;
+    featureSequence = featureSeq;
     toPosition = pos;
     toResidue = res;
     features = theFeatures;
@@ -101,13 +97,13 @@ public class MappedFeatures
     {
       codonPos = codonPositions;
       baseCodon = new char[3];
-      int cdsStart = linkedSeq.getStart();
+      int cdsStart = featureSequence.getStart();
       baseCodon[0] = Character
-              .toUpperCase(linkedSeq.getCharAt(codonPos[0] - cdsStart));
+              .toUpperCase(featureSequence.getCharAt(codonPos[0] - cdsStart));
       baseCodon[1] = Character
-              .toUpperCase(linkedSeq.getCharAt(codonPos[1] - cdsStart));
+              .toUpperCase(featureSequence.getCharAt(codonPos[1] - cdsStart));
       baseCodon[2] = Character
-              .toUpperCase(linkedSeq.getCharAt(codonPos[2] - cdsStart));
+              .toUpperCase(featureSequence.getCharAt(codonPos[2] - cdsStart));
     }
     else
     {
@@ -255,7 +251,7 @@ public class MappedFeatures
    */
   public String getLinkedSequenceName()
   {
-    return linkedSeq == null ? null : linkedSeq.getName();
+    return featureSequence == null ? null : featureSequence.getName();
   }
 
   /**
@@ -278,16 +274,22 @@ public class MappedFeatures
   public int[] getMappedPositions(int begin, int end)
   {
     MapList map = mapping.getMap();
-    return mappingIsFromLinkedSequence ? map.locateInTo(begin, end)
-            : map.locateInFrom(begin, end);
+    return mapping.to == featureSequence ? map.locateInFrom(begin, end)
+            : map.locateInTo(begin, end);
   }
 
+  /**
+   * Answers true if the linked features are on coding sequence, false if on
+   * peptide
+   * 
+   * @return
+   */
   public boolean isFromCds()
   {
     if (mapping.getMap().getFromRatio() == 3)
     {
-      return mappingIsFromLinkedSequence;
+      return mapping.to != featureSequence;
     }
-    return !mappingIsFromLinkedSequence;
+    return mapping.to == featureSequence;
   }
 }