JAL-1645 source formatting and organise imports
[jalview.git] / src / jalview / analysis / AlignmentAnnotationUtils.java
index ef8e670..a8e61e9 100644 (file)
@@ -1,7 +1,6 @@
 package jalview.analysis;
 
 import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
 import jalview.renderer.AnnotationRenderer;
 
@@ -64,6 +63,14 @@ public class AlignmentAnnotationUtils
 
     for (AlignmentAnnotation aa : annotations)
     {
+      /*
+       * Ignore non-positional annotations, can't render these against an
+       * alignment
+       */
+      if (aa.annotations == null)
+      {
+        continue;
+      }
       if (forSequences != null
               && (aa.sequenceRef != null && forSequences
                       .contains(aa.sequenceRef)))
@@ -130,21 +137,28 @@ public class AlignmentAnnotationUtils
       }
     }
     /*
-     * finally add the 'composite group labels' to the appropriate lists,
-     * depending on whether the group is identified as visible or hidden
+     * Finally add the 'composite group labels' to the appropriate lists,
+     * depending on whether the group is identified as visible or hidden. Don't
+     * add the same label more than once (there may be many graph groups that
+     * generate it).
      */
     for (String calcId : groupLabels.keySet())
     {
       for (int group : groupLabels.get(calcId).keySet())
       {
         final List<String> groupLabel = groupLabels.get(calcId).get(group);
+        // don't want to duplicate 'same types in different order'
+        Collections.sort(groupLabel);
         if (visibleGraphGroups.get(group))
         {
           if (!shownTypes.containsKey(calcId))
           {
             shownTypes.put(calcId, new ArrayList<List<String>>());
           }
-          shownTypes.get(calcId).add(groupLabel);
+          if (!shownTypes.get(calcId).contains(groupLabel))
+          {
+            shownTypes.get(calcId).add(groupLabel);
+          }
         }
         else
         {
@@ -152,7 +166,10 @@ public class AlignmentAnnotationUtils
           {
             hiddenTypes.put(calcId, new ArrayList<List<String>>());
           }
-          hiddenTypes.get(calcId).add(groupLabel);
+          if (!hiddenTypes.get(calcId).contains(groupLabel))
+          {
+            hiddenTypes.get(calcId).add(groupLabel);
+          }
         }
       }
     }