/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
- * Copyright (C) 2014 The Jalview Authors
+ * 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.
+ * 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/>.
+ * 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.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
*/
public class ShiftList
{
- public Vector shifts;
+ private List<int[]> shifts;
public ShiftList()
{
- shifts = new Vector();
+ shifts = new ArrayList<int[]>();
}
/**
*/
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;
+ }
}
}
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];
}
/**
* clear all shifts
*/
- public void clear()
+ public synchronized void clear()
{
- shifts.removeAllElements();
+ shifts.clear();
}
/**
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] });
+ }
}
}
}
}
/**
- * 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<i<n to L<pos[i]<N such as that
+ * returned from SequenceI.gapMap()
*
* @param gapMap
* @return shifts from map index to mapped position
}
return shiftList;
}
+
+ public List<int[]> getShifts()
+ {
+ return shifts;
+ }
}