JAL-1503 update version in GPL header
[jalview.git] / src / jalview / ws / rest / params / SeqGroupIndexVector.java
index 4b21229..87a1d9a 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -14,6 +14,7 @@
  * 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.ws.rest.params;
 
@@ -27,14 +28,11 @@ import jalview.ws.rest.AlignmentProcessor;
 import jalview.ws.rest.InputType;
 import jalview.ws.rest.NoValidInputDataException;
 import jalview.ws.rest.RestJob;
-import jalview.ws.rest.RestServiceDescription;
-import jalview.ws.rest.InputType.molType;
 
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Vector;
 
 import org.apache.http.entity.mime.content.ContentBody;
 import org.apache.http.entity.mime.content.StringBody;
@@ -91,7 +89,7 @@ public class SeqGroupIndexVector extends InputType implements
     // assume that alignment is properly ordered so groups form consecutive
     // blocks
     ArrayList<int[]> gl = new ArrayList<int[]>();
-    int p = 0;
+    int p = 0,lowest=al.getHeight(), highest=0;
     List<SequenceGroup> sgs;
     synchronized (sgs = al.getGroups())
     {
@@ -108,6 +106,14 @@ public class SeqGroupIndexVector extends InputType implements
         for (SequenceI sq : sg.getSequencesInOrder(al))
         {
           p = al.findIndex(sq);
+          if (lowest>p)
+          {
+            lowest=p;
+          }
+          if (highest<p)
+          {
+            highest=p;
+          }
           if (se == null)
           {
             se = new int[]
@@ -131,40 +137,14 @@ public class SeqGroupIndexVector extends InputType implements
     // remaining group ? - these might be at the start or the end
     if (gl.size() > 0)
     {
-      int[] tail = gl.get(0);
-      if (tail[0] > 0)
+      if (lowest-1>minsize)
       {
-        if (1 + tail[0] > minsize)
-        {
-          gl.add(0, new int[]
-          { 0, tail[0] - 1 });
-        }
-        else
-        {
-          // lets be intelligent here - if the remaining sequences aren't enough
-          // to make a final group, then don't make one.
-          // throw new
-          // NoValidInputDataException("Group from remaining ungrouped sequences in input contains less than "+minsize+" sequences.");
-        }
+        gl.add(0, new int[]
+          { 0, lowest-2});
       }
-      else
+      if ((al.getHeight()-1-highest)>minsize)
       {
-        tail = gl.get(gl.size() - 1);
-        if (1 + tail[1] < al.getHeight())
-        {
-          if (al.getHeight() - (1 + tail[1]) > minsize)
-          {
-            gl.add(new int[]
-            { tail[1] + 1, al.getHeight() - 1 });
-          }
-          else
-          {
-            // lets be intelligent here - if the remaining sequences aren't
-            // enough to make a final group, then don't make one.
-            // throw new
-            // NoValidInputDataException("Group from remaining ungrouped sequences in input contains less than "+minsize+" sequences.");
-          }
-        }
+        gl.add(new int[] { highest+1, al.getHeight()-1});
       }
     }
     else