JAL-1355
[jalview.git] / src / jalview / datamodel / Alignment.java
index c48bb7f..5e75725 100755 (executable)
@@ -1,22 +1,27 @@
 /*
- * 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
- *
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * 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
+ * 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/>.
+ * 
+ * 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.datamodel;
 
+import jalview.util.MessageManager;
+
 import java.util.*;
 
 /**
@@ -109,7 +114,7 @@ public class Alignment implements AlignmentI
    */
   public static AlignmentI createAlignment(CigarArray compactAlignment)
   {
-    throw new Error("Alignment(CigarArray) not yet implemented");
+    throw new Error(MessageManager.getString("error.alignment_cigararray_not_implemented"));
     // this(compactAlignment.refCigars);
   }
 
@@ -370,7 +375,7 @@ public class Alignment implements AlignmentI
             return;
           }
         }
-
+        sg.setContext(this);
         groups.add(sg);
       }
     }
@@ -445,6 +450,10 @@ public class Alignment implements AlignmentI
       {
         removeAnnotationForGroup(null);
       }
+      for (SequenceGroup sg : groups)
+      {
+        sg.setContext(null);
+      }
       groups.clear();
     }
   }
@@ -459,6 +468,7 @@ public class Alignment implements AlignmentI
       {
         removeAnnotationForGroup(g);
         groups.remove(g);
+        g.setContext(null);
       }
     }
   }
@@ -1385,13 +1395,17 @@ public class Alignment implements AlignmentI
           SequenceGroup groupRef)
   {
     assert (name != null);
-    for (AlignmentAnnotation annot : getAlignmentAnnotation())
+    if (annotations != null)
     {
-      if (annot.autoCalculated == autoCalc && (name.equals(annot.label))
-              && (calcId == null || annot.getCalcId().equals(calcId))
-              && annot.sequenceRef == seqRef && annot.groupRef == groupRef)
+      for (AlignmentAnnotation annot : getAlignmentAnnotation())
       {
-        return annot;
+        if (annot.autoCalculated == autoCalc && (name.equals(annot.label))
+                && (calcId == null || annot.getCalcId().equals(calcId))
+                && annot.sequenceRef == seqRef
+                && annot.groupRef == groupRef)
+        {
+          return annot;
+        }
       }
     }
     AlignmentAnnotation annot = new AlignmentAnnotation(name, name,
@@ -1476,4 +1490,37 @@ public class Alignment implements AlignmentI
     }
   }
 
+  @Override
+  public void validateAnnotation(AlignmentAnnotation alignmentAnnotation)
+  {
+    alignmentAnnotation.validateRangeAndDisplay();
+    if (isNucleotide() && alignmentAnnotation.isValidStruc())
+    {
+      hasRNAStructure = true;
+    }
+  }
+
+  @Override
+  public int getEndRes()
+  {
+    return getWidth() - 1;
+  }
+
+  @Override
+  public int getStartRes()
+  {
+    return 0;
+  }
+
+  /*
+   * In the case of AlignmentI - returns the dataset for the alignment, if set
+   * (non-Javadoc)
+   * 
+   * @see jalview.datamodel.AnnotatedCollectionI#getContext()
+   */
+  @Override
+  public AnnotatedCollectionI getContext()
+  {
+    return dataset;
+  }
 }