JAL-3675 release notes for JAL-3750 JAL-3751
[jalview.git] / src / jalview / datamodel / RangeElementsIterator.java
index ca6c4f7..9ca6b2a 100644 (file)
@@ -1,3 +1,23 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ 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.datamodel;
 
 import java.util.Iterator;
@@ -23,29 +43,27 @@ public class RangeElementsIterator implements Iterator<Integer>
 
   private int[] nextRange = null;
 
-  RangeElementsIterator(int from, int to, Iterator<int[]> it)
+  RangeElementsIterator(Iterator<int[]> it)
   {
-    last = to;
-    current = from;
-    next = from;
     rangeIterator = it;
     if (rangeIterator.hasNext())
     {
       nextRange = rangeIterator.next();
+      next = nextRange[0];
+      last = nextRange[1];
     }
-    checkNextRange();
   }
 
   @Override
   public boolean hasNext()
   {
-    return next <= last;
+    return rangeIterator.hasNext() || next <= last;
   }
 
   @Override
   public Integer next()
   {
-    if (next > last)
+    if (!hasNext())
     {
       throw new NoSuchElementException();
     }
@@ -66,12 +84,13 @@ public class RangeElementsIterator implements Iterator<Integer>
    */
   private void checkNextRange()
   {
-    if (nextRange != null && next >= nextRange[0])
+    if (nextRange != null && next > nextRange[1])
     {
-      next = nextRange[1] + 1;
       if (rangeIterator.hasNext())
       {
         nextRange = rangeIterator.next();
+        next = nextRange[0];
+        last = nextRange[1];
       }
       else
       {