fileFormat enum wip changes
[jalview.git] / src / jalview / io / StockholmFile.java
index c4d3e5c..cb4c786 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -91,9 +91,10 @@ public class StockholmFile extends AlignFile
     this.al = al;
   }
 
-  public StockholmFile(String inFile, String type) throws IOException
+  public StockholmFile(String inFile, DataSourceType sourceType)
+          throws IOException
   {
-    super(inFile, type);
+    super(inFile, sourceType);
   }
 
   public StockholmFile(FileParse source) throws IOException
@@ -101,6 +102,7 @@ public class StockholmFile extends AlignFile
     super(source);
   }
 
+  @Override
   public void initData()
   {
     super.initData();
@@ -178,6 +180,7 @@ public class StockholmFile extends AlignFile
    * @throws IOException
    *           If there is an error with the input file
    */
+  @Override
   public void parse() throws IOException
   {
     StringBuffer treeString = new StringBuffer();
@@ -420,8 +423,8 @@ public class StockholmFile extends AlignFile
         {
           // logger.error("Could not parse sequence line: " + line);
           throw new IOException(MessageManager.formatMessage(
-                  "exception.couldnt_parse_sequence_line", new String[]
-                  { line }));
+                  "exception.couldnt_parse_sequence_line",
+                  new String[] { line }));
         }
         String ns = seqs.get(x.stringMatched(1));
         if (ns == null)
@@ -533,9 +536,9 @@ public class StockholmFile extends AlignFile
           }
           else
           {
-            throw new IOException(MessageManager.formatMessage(
-                    "exception.error_parsing_line", new String[]
-                    { line }));
+            // throw new IOException(MessageManager.formatMessage(
+            // "exception.error_parsing_line", new String[] { line }));
+            System.err.println(">> missing annotation: " + line);
           }
         }
         else if (annType.equals("GC"))
@@ -665,8 +668,8 @@ public class StockholmFile extends AlignFile
         else
         {
           throw new IOException(MessageManager.formatMessage(
-                  "exception.unknown_annotation_detected", new String[]
-                  { annType, annContent }));
+                  "exception.unknown_annotation_detected", new String[] {
+                      annType, annContent }));
         }
       }
     }
@@ -779,9 +782,8 @@ public class StockholmFile extends AlignFile
     {
       for (DBRefEntry d : dbrs)
       {
-        jalview.util.MapList mp = new jalview.util.MapList(new int[]
-        { seqO.getStart(), seqO.getEnd() }, new int[]
-        { st, en }, 1, 1);
+        jalview.util.MapList mp = new jalview.util.MapList(new int[] {
+            seqO.getStart(), seqO.getEnd() }, new int[] { st, en }, 1, 1);
         jalview.datamodel.Mapping mping = new Mapping(mp);
         d.setMap(mping);
       }
@@ -826,7 +828,7 @@ public class StockholmFile extends AlignFile
       // be written out
       if (ss)
       {
-        //if (" .-_".indexOf(pos) == -1)
+        // if (" .-_".indexOf(pos) == -1)
         {
           if (detectbrackets.search(pos))
           {
@@ -848,7 +850,7 @@ public class StockholmFile extends AlignFile
             ann.displayCharacter = " " + ann.displayCharacter;
           }
         }
-        
+
       }
 
       els[i] = ann;
@@ -882,8 +884,12 @@ public class StockholmFile extends AlignFile
     return annot;
   }
 
-  public String print(SequenceI[] s)
+  @Override
+  public String print(SequenceI[] s, boolean jvsuffix)
   {
+    // out.append("# STOCKHOLM 1.0");
+    // out.append(newline);
+
     // find max length of id
     int max = 0;
     int maxid = 0;
@@ -891,7 +897,7 @@ public class StockholmFile extends AlignFile
     Hashtable dataRef = null;
     while ((in < s.length) && (s[in] != null))
     {
-      String tmp = printId(s[in]);
+      String tmp = printId(s[in], jvsuffix);
       if (s[in].getSequence().length > max)
       {
         max = s[in].getSequence().length;
@@ -901,18 +907,18 @@ public class StockholmFile extends AlignFile
       {
         maxid = tmp.length();
       }
-      if (s[in].getDBRef() != null)
+      if (s[in].getDBRefs() != null)
       {
-        for (int idb = 0; idb < s[in].getDBRef().length; idb++)
+        for (int idb = 0; idb < s[in].getDBRefs().length; idb++)
         {
           if (dataRef == null)
           {
             dataRef = new Hashtable();
           }
 
-          String datAs1 = s[in].getDBRef()[idb].getSource().toString()
+          String datAs1 = s[in].getDBRefs()[idb].getSource().toString()
                   + " ; "
-                  + s[in].getDBRef()[idb].getAccessionId().toString();
+                  + s[in].getDBRefs()[idb].getAccessionId().toString();
           dataRef.put(tmp, datAs1);
         }
       }
@@ -988,7 +994,7 @@ public class StockholmFile extends AlignFile
 
             // out.append("#=GR ");
             out.append(new Format("%-" + maxid + "s").form("#=GR "
-                    + printId(s[i]) + " " + key + " "));
+                    + printId(s[i], jvsuffix) + " " + key + " "));
             ann = alAnot[j].annotations;
             boolean isrna = alAnot[j].isValidStruc();
             String seq = "";
@@ -1002,7 +1008,8 @@ public class StockholmFile extends AlignFile
         }
       }
 
-      out.append(new Format("%-" + maxid + "s").form(printId(s[i]) + " "));
+      out.append(new Format("%-" + maxid + "s")
+              .form(printId(s[i], jvsuffix) + " "));
       out.append(s[i].getSequenceAsString());
       out.append(newline);
       i++;
@@ -1055,6 +1062,8 @@ public class StockholmFile extends AlignFile
         out.append(newline);
       }
     }
+    // out.append("//");
+    // out.append(newline);
     return out.toString();
   }
 
@@ -1068,21 +1077,19 @@ public class StockholmFile extends AlignFile
    * @param ann
    * @param sequenceI
    */
-  private char outputCharacter(String key, int k,
-          boolean isrna, Annotation[] ann, SequenceI sequenceI)
+  private char outputCharacter(String key, int k, boolean isrna,
+          Annotation[] ann, SequenceI sequenceI)
   {
     char seq = ' ';
     Annotation annot = ann[k];
     String ch = (annot == null) ? ((sequenceI == null) ? "-" : Character
-            .toString(sequenceI.getCharAt(k)))
-            : annot.displayCharacter;
+            .toString(sequenceI.getCharAt(k))) : annot.displayCharacter;
     if (key != null && key.equals("SS"))
     {
       if (annot == null)
       {
         // sensible gap character if one is available or make one up
-        return sequenceI == null ? '-' : sequenceI
-                .getCharAt(k);
+        return sequenceI == null ? '-' : sequenceI.getCharAt(k);
       }
       else
       {
@@ -1109,18 +1116,6 @@ public class StockholmFile extends AlignFile
     return seq;
   }
 
-  public String print()
-  {
-    out = new StringBuffer();
-    out.append("# STOCKHOLM 1.0");
-    out.append(newline);
-    print(getSeqsAsArray());
-
-    out.append("//");
-    out.append(newline);
-    return out.toString();
-  }
-
   private static Hashtable typeIds = null;
   static
   {