update author list in license for (JAL-826)
[jalview.git] / src / jalview / io / packed / ParsePackedSet.java
index 20b2061..b611d5e 100644 (file)
@@ -1,3 +1,20 @@
+/*******************************************************************************
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ *
+ * 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/>.
+ *******************************************************************************/
 package jalview.io.packed;
 
 import jalview.datamodel.AlignmentI;
@@ -8,6 +25,7 @@ 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;
@@ -76,6 +94,7 @@ public class ParsePackedSet
               // deuniquify and construct/merge additional dataset entries if
               // necessary.
               context.addAlignment(al);
+              context.updateSetModified(true);
               rslt.add(al);
               deuniquify = true;
             }
@@ -101,8 +120,13 @@ 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)
         {
@@ -123,16 +147,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)
+        // 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.");
@@ -155,6 +180,7 @@ public class ParsePackedSet
 
             context.addTreeFromFile(nf);
             rslt.add(nf);
+            context.updateSetModified(true);
           }
         } catch (Exception e)
         {
@@ -163,7 +189,20 @@ 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)
     {
@@ -248,6 +287,11 @@ public class ParsePackedSet
       // to buffers.
       // 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.");
+      }
     }
   }
 }