Merge branch 'releases/Release_2_11_1_Branch' into bug/JAL-3509hideResnum
[jalview.git] / src / jalview / io / FeaturesFile.java
index 9a4dc0e..92473ec 100755 (executable)
  */
 package jalview.io;
 
+import java.awt.Color;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.TreeMap;
+
 import jalview.analysis.AlignmentUtils;
 import jalview.analysis.SequenceIdMatcher;
 import jalview.api.AlignViewportI;
@@ -44,18 +56,6 @@ import jalview.util.MapList;
 import jalview.util.ParseHtmlBodyAndLinks;
 import jalview.util.StringUtils;
 
-import java.awt.Color;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.TreeMap;
-
 /**
  * Parses and writes features files, which may be in Jalview, GFF2 or GFF3
  * format. These are tab-delimited formats but with differences in the use of
@@ -74,11 +74,7 @@ import java.util.TreeMap;
  */
 public class FeaturesFile extends AlignFile implements FeaturesSourceI
 {
-  /*
-   * map-valued attributes are prefixed with this for output to GFF3;
-   * the prefix is removed if found on reading
-   */
-  public static final String MAP_ATTRIBUTE_PREFIX = "jvmap_";
+  private static final String EQUALS = "=";
 
   private static final String TAB_REGEX = "\\t";
 
@@ -92,8 +88,6 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI
 
   private static final String ID_NOT_SPECIFIED = "ID_NOT_SPECIFIED";
 
-  private static final String NOTE = "Note";
-
   protected static final String GFF_VERSION = "##gff-version";
 
   private AlignmentI lastmatchedAl = null;
@@ -742,7 +736,6 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI
 
       if (mf != null)
       {
-        MapList mapping = mf.mapping.getMap();
         for (SequenceFeature sf : mf.features)
         {
           /*
@@ -758,9 +751,7 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI
             found.add(sf);
             int begin = sf.getBegin();
             int end = sf.getEnd();
-            int[] range = mf.mapping.getTo() == seq.getDatasetSequence()
-                    ? mapping.locateInTo(begin, end)
-                    : mapping.locateInFrom(begin, end);
+            int[] range = mf.getMappedPositions(begin, end);
             SequenceFeature sf2 = new SequenceFeature(sf, range[0],
                     range[1], group, sf.getScore());
             complementary.add(sf2);
@@ -1192,7 +1183,7 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI
       {
         String formatted = StringUtils.urlEncode(value.toString(),
                 GffHelperI.GFF_ENCODABLE);
-        sb.append(key).append("=").append(formatted);
+        sb.append(key).append(EQUALS).append(formatted);
       }
     }
   }
@@ -1201,7 +1192,7 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI
    * Formats the map entries as
    * 
    * <pre>
-   * jvmap_key={key1=value1,key2=value2,...}
+   * key=key1=value1,key2=value2,...
    * </pre>
    * 
    * and appends this to the string buffer
@@ -1222,7 +1213,7 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI
      * AbstractMap.toString would be a shortcut here, but more reliable
      * to code the required format in case toString changes in future
      */
-    sb.append(MAP_ATTRIBUTE_PREFIX).append(key).append("={");
+    sb.append(key).append(EQUALS);
     boolean first = true;
     for (Entry<?, ?> entry : map.entrySet())
     {
@@ -1231,12 +1222,11 @@ public class FeaturesFile extends AlignFile implements FeaturesSourceI
         sb.append(",");
       }
       first = false;
-      sb.append(entry.getKey().toString()).append("=");
+      sb.append(entry.getKey().toString()).append(EQUALS);
       String formatted = StringUtils.urlEncode(entry.getValue().toString(),
               GffHelperI.GFF_ENCODABLE);
       sb.append(formatted);
     }
-    sb.append("}");
   }
 
   /**