JAL-1620 version bump and release notes
[jalview.git] / src / jalview / io / packed / ParsePackedSet.java
index 58892ed..ef221ba 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.io.packed;
 
 import jalview.datamodel.AlignmentI;
@@ -8,7 +28,9 @@ import jalview.io.IdentifyFile;
 import jalview.io.packed.DataProvider.JvDataType;
 
 import java.io.BufferedReader;
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Hashtable;
 import java.util.List;
 
 public class ParsePackedSet
@@ -75,6 +97,7 @@ public class ParsePackedSet
               // deuniquify and construct/merge additional dataset entries if
               // necessary.
               context.addAlignment(al);
+              context.updateSetModified(true);
               rslt.add(al);
               deuniquify = true;
             }
@@ -100,8 +123,15 @@ public class ParsePackedSet
           {
             br = new BufferedReader(src.getReader());
           }
-          new jalview.io.AnnotationFile().parseAnnotationFrom(
-                  context.getLastAlignment(), br);
+          if (new jalview.io.AnnotationFile().parseAnnotationFrom(
+                  context.getLastAlignment(), br))
+          {
+            context.updateSetModified(true);
+          }
+          else
+          {
+            errmsg = "Annotation file contained no data.";
+          }
 
         } catch (Exception e)
         {
@@ -122,11 +152,17 @@ public class ParsePackedSet
       }
       if (dta.getType().equals(JvDataType.FEATURES))
       {
+        // check the context has a place to store feature rendering definitions,
+        // if not, create one.
+        if (context.featureColours == null)
+        {
+          context.featureColours = new Hashtable();
+        }
         try
         {
           jalview.io.FeaturesFile ff = new jalview.io.FeaturesFile(src);
-          ff.parse(context.getLastAlignment(), context.featureColours,
-                  false);
+          context.updateSetModified(ff.parse(context.getLastAlignment(),
+                  context.featureColours, false, context.relaxedIdMatching));
         } catch (Exception e)
         {
           errmsg = ("Failed to parse the Features file associated with the alignment.");
@@ -149,6 +185,7 @@ public class ParsePackedSet
 
             context.addTreeFromFile(nf);
             rslt.add(nf);
+            context.updateSetModified(true);
           }
         } catch (Exception e)
         {
@@ -157,7 +194,24 @@ public class ParsePackedSet
         }
 
       }
-
+      if (exerror != null)
+      {
+        if (errmsg != null && errmsg.length() > 0)
+        {
+          throw new IOException(errmsg, exerror);
+        }
+        else
+        {
+          throw new IOException(errmsg, exerror);
+        }
+      }
+      else
+      {
+        if (errmsg != null && errmsg.length() > 0)
+        {
+          throw new IOException(errmsg);
+        }
+      }
     }
     if (deuniquify)
     {
@@ -243,5 +297,13 @@ public class ParsePackedSet
       // import with deuniquify info, and compare results to input.
 
     }
+    else
+    {
+      if (context.getLastAlignmentSet().isModified())
+      {
+        System.err
+                .println("Initial alignment set was modified and any associated views should be updated.");
+      }
+    }
   }
 }