JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / src / jalview / util / ShiftList.java
index 37b2c2d..860a700 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -20,7 +20,8 @@
  */
 package jalview.util;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * ShiftList Simple way of mapping a linear series to a new linear range with
@@ -29,11 +30,11 @@ import java.util.*;
  */
 public class ShiftList
 {
-  public Vector shifts;
+  private List<int[]> shifts;
 
   public ShiftList()
   {
-    shifts = new Vector();
+    shifts = new ArrayList<int[]>();
   }
 
   /**
@@ -46,21 +47,22 @@ public class ShiftList
    */
   public void addShift(int pos, int shift)
   {
-    int sidx = 0;
-    int[] rshift = null;
-    while (sidx < shifts.size()
-            && (rshift = (int[]) shifts.elementAt(sidx))[0] < pos)
-    {
-      sidx++;
-    }
-    if (sidx == shifts.size())
+    synchronized (shifts)
     {
-      shifts.insertElementAt(new int[]
-      { pos, shift }, sidx);
-    }
-    else
-    {
-      rshift[1] += shift;
+      int sidx = 0;
+      int[] rshift = null;
+      while (sidx < shifts.size() && (rshift = shifts.get(sidx))[0] < pos)
+      {
+        sidx++;
+      }
+      if (sidx == shifts.size())
+      {
+        shifts.add(sidx, new int[] { pos, shift });
+      }
+      else
+      {
+        rshift[1] += shift;
+      }
     }
   }
 
@@ -81,7 +83,7 @@ public class ShiftList
     int sidx = 0;
     int rshift[];
     while (sidx < shifts.size()
-            && (rshift = ((int[]) shifts.elementAt(sidx++)))[0] <= pos)
+            && (rshift = (shifts.get(sidx++)))[0] <= pos)
     {
       shifted += rshift[1];
     }
@@ -91,9 +93,9 @@ public class ShiftList
   /**
    * clear all shifts
    */
-  public void clear()
+  public synchronized void clear()
   {
-    shifts.removeAllElements();
+    shifts.clear();
   }
 
   /**
@@ -104,15 +106,16 @@ public class ShiftList
   public ShiftList getInverse()
   {
     ShiftList inverse = new ShiftList();
-    if (shifts != null)
+    synchronized (shifts)
     {
-      for (int i = 0, j = shifts.size(); i < j; i++)
+      if (shifts != null)
       {
-        int[] sh = (int[]) shifts.elementAt(i);
-        if (sh != null)
+        for (int[] sh : shifts)
         {
-          inverse.shifts.addElement(new int[]
-          { sh[0], -sh[1] });
+          if (sh != null)
+          {
+            inverse.shifts.add(new int[] { sh[0], -sh[1] });
+          }
         }
       }
     }
@@ -120,8 +123,8 @@ public class ShiftList
   }
 
   /**
-   * parse a 1d map of position 1<i<n to L<pos[i]<N such as that returned from
-   * SequenceI.gapMap()
+   * parse a 1d map of position 1&lt;i&lt;n to L&lt;pos[i]&lt;N such as that
+   * returned from SequenceI.gapMap()
    * 
    * @param gapMap
    * @return shifts from map index to mapped position
@@ -143,4 +146,9 @@ public class ShiftList
     }
     return shiftList;
   }
+
+  public List<int[]> getShifts()
+  {
+    return shifts;
+  }
 }