JAL-1691 avoid NPE when original split frame has been closed before the alignment...
[jalview.git] / src / jalview / io / AlignFile.java
index b2f8b2b..3b46760 100755 (executable)
@@ -20,7 +20,6 @@
  */
 package jalview.io;
 
-import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Sequence;
@@ -188,7 +187,7 @@ public abstract class AlignFile extends FileParse
 
     for (int i = 0; i < seqs.size(); i++)
     {
-      s[i] = (SequenceI) seqs.elementAt(i);
+      s[i] = seqs.elementAt(i);
     }
 
     return s;
@@ -200,7 +199,7 @@ public abstract class AlignFile extends FileParse
    * 
    * @param al
    */
-  public void addAnnotations(Alignment al)
+  public void addAnnotations(AlignmentI al)
   {
     addProperties(al);
     for (int i = 0; i < annotations.size(); i++)
@@ -212,7 +211,7 @@ public abstract class AlignFile extends FileParse
        * Rna.GetBasePairsFromAlignmentAnnotation(annotations.elementAt(i));
        * Rna.HelixMap(pairArray);
        */
-      AlignmentAnnotation an = (AlignmentAnnotation) annotations
+      AlignmentAnnotation an = annotations
               .elementAt(i);
       an.validateRangeAndDisplay();
       al.addAnnotation(an);
@@ -220,6 +219,11 @@ public abstract class AlignFile extends FileParse
 
   }
 
+  /**
+   * register sequence groups on the alignment for **output**
+   * 
+   * @param al
+   */
   public void addSeqGroups(AlignmentI al)
   {
     this.seqGroups = al.getGroups();
@@ -233,7 +237,7 @@ public abstract class AlignFile extends FileParse
    * @note implicitly called by addAnnotations()
    * @param al
    */
-  public void addProperties(Alignment al)
+  public void addProperties(AlignmentI al)
   {
     if (properties != null && properties.size() > 0)
     {
@@ -287,8 +291,8 @@ public abstract class AlignFile extends FileParse
    */
   protected void initData()
   {
-    seqs = new Vector();
-    annotations = new Vector();
+    seqs = new Vector<SequenceI>();
+    annotations = new Vector<AlignmentAnnotation>();
     seqGroups = new ArrayList<SequenceGroup>();
     parseCalled=false;
   }
@@ -301,7 +305,7 @@ public abstract class AlignFile extends FileParse
    */
   protected void setSeqs(SequenceI[] s)
   {
-    seqs = new Vector();
+    seqs = new Vector<SequenceI>();
 
     for (int i = 0; i < s.length; i++)
     {
@@ -361,13 +365,13 @@ public abstract class AlignFile extends FileParse
   /**
    * vector of String[] treeName, newickString pairs
    */
-  Vector newickStrings = null;
+  Vector<String[]> newickStrings = null;
 
   protected void addNewickTree(String treeName, String newickString)
   {
     if (newickStrings == null)
     {
-      newickStrings = new Vector();
+      newickStrings = new Vector<String[]>();
     }
     newickStrings.addElement(new String[]
     { treeName, newickString });
@@ -375,11 +379,16 @@ public abstract class AlignFile extends FileParse
 
   protected int getTreeCount()
   {
-    if (newickStrings == null)
+    return newickStrings == null ? 0 : newickStrings.size();
+  }
+
+  public void addGroups(AlignmentI al)
+  {
+
+    for (SequenceGroup sg : getSeqGroups())
     {
-      return 0;
+      al.addGroup(sg);
     }
-    return newickStrings.size();
   }
 
 }