JAL-727
[jalview.git] / src / jalview / io / FeaturesFile.java
index ccf7b30..64bb539 100755 (executable)
@@ -1,5 +1,5 @@
 /*\r
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)\r
  * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle\r
  * \r
  * This file is part of Jalview.\r
@@ -165,24 +165,27 @@ public class FeaturesFile extends AlignFile
               // fifth is either 'above','below', or 'none'.\r
               // sixth is a float value and only required when fifth is either\r
               // 'above' or 'below'.\r
-              StringTokenizer gcol = new StringTokenizer(colscheme, "|", true);\r
+              StringTokenizer gcol = new StringTokenizer(colscheme, "|",\r
+                      true);\r
               // set defaults\r
               int threshtype = AnnotationColourGradient.NO_THRESHOLD;\r
               float min = Float.MIN_VALUE, max = Float.MAX_VALUE, threshval = Float.NaN;\r
               boolean labelCol = false;\r
               // Parse spec line\r
               String mincol = gcol.nextToken();\r
-              if (mincol=="|")\r
+              if (mincol == "|")\r
               {\r
                 System.err\r
-                .println("Expected either 'label' or a colour specification in the line: "+line );\r
+                        .println("Expected either 'label' or a colour specification in the line: "\r
+                                + line);\r
                 continue;\r
               }\r
               String maxcol = null;\r
               if (mincol.toLowerCase().indexOf("label") == 0)\r
               {\r
                 labelCol = true;\r
-                mincol = (gcol.hasMoreTokens() ? gcol.nextToken() : null); // skip '|'\r
+                mincol = (gcol.hasMoreTokens() ? gcol.nextToken() : null); // skip\r
+                                                                           // '|'\r
                 mincol = (gcol.hasMoreTokens() ? gcol.nextToken() : null);\r
               }\r
               String abso = null, minval, maxval;\r
@@ -191,16 +194,20 @@ public class FeaturesFile extends AlignFile
                 // at least four more tokens\r
                 if (mincol.equals("|"))\r
                 {\r
-                  mincol="";\r
-                } else {\r
+                  mincol = "";\r
+                }\r
+                else\r
+                {\r
                   gcol.nextToken(); // skip next '|'\r
                 }\r
                 // continue parsing rest of line\r
                 maxcol = gcol.nextToken();\r
                 if (maxcol.equals("|"))\r
                 {\r
-                  maxcol="";\r
-                } else {\r
+                  maxcol = "";\r
+                }\r
+                else\r
+                {\r
                   gcol.nextToken(); // skip next '|'\r
                 }\r
                 abso = gcol.nextToken();\r
@@ -216,7 +223,8 @@ public class FeaturesFile extends AlignFile
                   gcol.nextToken(); // skip next '|'\r
                 }\r
                 maxval = gcol.nextToken();\r
-                if (gcol.hasMoreTokens()) {\r
+                if (gcol.hasMoreTokens())\r
+                {\r
                   gcol.nextToken(); // skip next '|'\r
                 }\r
                 try\r
@@ -599,7 +607,7 @@ public class FeaturesFile extends AlignFile
       }\r
       else if (tag != null && tag.equalsIgnoreCase("br"))\r
       {\r
-        sb.append("\n");\r
+        sb.append(newline);\r
       }\r
       else if (token.startsWith("lt;"))\r
       {\r
@@ -718,7 +726,10 @@ public class FeaturesFile extends AlignFile
           color = Format.getHexString(new java.awt.Color(Integer\r
                   .parseInt(visible.get(type).toString())));\r
         }\r
-        out.append(type + "\t" + color + "\n");\r
+        out.append(type);\r
+        out.append("\t");\r
+        out.append(color);\r
+        out.append(newline);\r
       }\r
     }\r
     // Work out which groups are both present and visible\r
@@ -757,7 +768,10 @@ public class FeaturesFile extends AlignFile
       if (groups.size() > 0 && groupIndex < groups.size())\r
       {\r
         group = groups.elementAt(groupIndex).toString();\r
-        out.append("\nSTARTGROUP\t" + group + "\n");\r
+        out.append(newline);\r
+        out.append("STARTGROUP\t");\r
+        out.append(group);\r
+        out.append(newline);\r
       }\r
       else\r
       {\r
@@ -830,22 +844,28 @@ public class FeaturesFile extends AlignFile
 \r
               out.append("\t");\r
             }\r
-            out.append(seqs[i].getName()\r
-                    + "\t-1\t"\r
-                    + next[j].begin\r
-                    + "\t"\r
-                    + next[j].end\r
-                    + "\t"\r
-                    + next[j].type\r
-                    + ((next[j].score != Float.NaN) ? "\t" + next[j].score\r
-                            + "\n" : "\n"));\r
+            out.append(seqs[i].getName());\r
+            out.append("\t-1\t");\r
+            out.append(next[j].begin);\r
+            out.append("\t");\r
+            out.append(next[j].end);\r
+            out.append("\t");\r
+            out.append(next[j].type);\r
+            if (next[j].score != Float.NaN)\r
+            {\r
+              out.append("\t");\r
+              out.append(next[j].score);\r
+            }\r
+            out.append(newline);\r
           }\r
         }\r
       }\r
 \r
       if (group != null)\r
       {\r
-        out.append("ENDGROUP\t" + group + "\n");\r
+        out.append("ENDGROUP\t");\r
+        out.append(group);\r
+        out.append(newline);\r
         groupIndex++;\r
       }\r
       else\r
@@ -904,13 +924,24 @@ public class FeaturesFile extends AlignFile
             source = next[j].getDescription();\r
           }\r
 \r
-          out.append(seqs[i].getName() + "\t" + source + "\t"\r
-                  + next[j].type + "\t" + next[j].begin + "\t"\r
-                  + next[j].end + "\t" + next[j].score + "\t");\r
+          out.append(seqs[i].getName());\r
+          out.append("\t");\r
+          out.append(source);\r
+          out.append("\t");\r
+          out.append(next[j].type);\r
+          out.append( "\t");\r
+          out.append(  next[j].begin );\r
+          out.append("\t");\r
+          out.append(\r
+                  next[j].end);\r
+          out.append( "\t");\r
+          out.append( next[j].score);\r
+          out.append( "\t");\r
 \r
           if (next[j].getValue("STRAND") != null)\r
           {\r
-            out.append(next[j].getValue("STRAND") + "\t");\r
+            out.append(next[j].getValue("STRAND"));\r
+            out.append( "\t");\r
           }\r
           else\r
           {\r
@@ -925,13 +956,14 @@ public class FeaturesFile extends AlignFile
           {\r
             out.append(".");\r
           }\r
+          // TODO: verify/check GFF - should there be a /t here before attribute output ?\r
 \r
           if (next[j].getValue("ATTRIBUTES") != null)\r
           {\r
             out.append(next[j].getValue("ATTRIBUTES"));\r
           }\r
 \r
-          out.append("\n");\r
+          out.append(newline);\r
 \r
         }\r
       }\r