fix for unicode char labels causing arrayOutOfBoundsException bug spotted by cameron...
authorjprocter <Jim Procter>
Thu, 1 May 2008 09:22:43 +0000 (09:22 +0000)
committerjprocter <Jim Procter>
Thu, 1 May 2008 09:22:43 +0000 (09:22 +0000)
src/jalview/datamodel/AlignmentAnnotation.java

index f68786b..40d2b7e 100755 (executable)
@@ -118,10 +118,9 @@ public class AlignmentAnnotation
   /**
    * Creates a new AlignmentAnnotation object.
    *
-   * @param label DOCUMENT ME!
-   * @param description DOCUMENT ME!
-   * @param annotations DOCUMENT ME!about:blank
-Loading...
+   * @param label short label shown under sequence labels
+   * @param description text displayed on mouseover
+   * @param annotations set of positional annotation elements
    */
   public AlignmentAnnotation(String label, String description,
                              Annotation[] annotations)
@@ -138,6 +137,7 @@ Loading...
   void areLabelsSecondaryStructure()
   {
     boolean nonSSLabel = false;
+    char firstChar=0;
     for (int i = 0; i < annotations.length; i++)
     {
       if (annotations[i] == null)
@@ -154,28 +154,32 @@ Loading...
       {
         continue;
       }
-      
-      if (annotations[i].displayCharacter.length() == 1
-              // Uncomment to only catch case where displayCharacter==secondary Structure 
+      if (annotations[i].displayCharacter.length() == 1)
+      {      
+        firstChar = annotations[i].displayCharacter.charAt(0);
+        // check to see if it looks like a sequence or is secondary structure labelling.
+        if (
+                // Uncomment to only catch case where displayCharacter==secondary Structure 
               // to correctly redisplay SS annotation imported from Stockholm, exported to JalviewXML and read back in again.
           // && annotations[i].displayCharacter.charAt(0)==annotations[i].secondaryStructure
-          && !annotations[i].displayCharacter.equals("H")
-          && !annotations[i].displayCharacter.equals("E")
-          && !annotations[i].displayCharacter.equals("-")
-          && !annotations[i].displayCharacter.equals("."))
+          firstChar!='H'
+          && firstChar!='E'
+          && firstChar!='-'
+          && firstChar!='-' && firstChar<jalview.schemes.ResidueProperties.aaIndex.length)
         {
           if (jalview.schemes.ResidueProperties.aaIndex
-                  [annotations[i].displayCharacter.charAt(0)] < 23)
+                  [firstChar] < 23)
           {
             nonSSLabel = true;
           }
         }
+      }
 
-        if (annotations[i].displayCharacter.length() > 0)
-        {
-          hasText = true;
-        }
+      if (annotations[i].displayCharacter.length() > 0)
+      {
+        hasText = true;
       }
+    }
 
     if (nonSSLabel)
     {