X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Futil%2FMapList.java;h=9f28ee19f5cdf8fb6c262e13087c9ef7af2741ee;hb=10dd3a771da0085ead2318b7385211c7b675d7f4;hp=7f1abc4907bc52760c5dfb51a4da0f4297a85576;hpb=e03b4b6d85409cfe15ce0f2b3ba2d4d59a834c91;p=jalview.git diff --git a/src/jalview/util/MapList.java b/src/jalview/util/MapList.java index 7f1abc4..9f28ee1 100644 --- a/src/jalview/util/MapList.java +++ b/src/jalview/util/MapList.java @@ -327,6 +327,13 @@ public class MapList fromHighest = Integer.MIN_VALUE; for (int[] range : fromRange) { + if (range.length != 2) + { + // throw new IllegalArgumentException(range); + System.err.println( + "Invalid format for fromRange " + Arrays.toString(range) + + " may cause errors"); + } fromLowest = Math.min(fromLowest, Math.min(range[0], range[1])); fromHighest = Math.max(fromHighest, Math.max(range[0], range[1])); } @@ -335,6 +342,13 @@ public class MapList toHighest = Integer.MIN_VALUE; for (int[] range : toRange) { + if (range.length != 2) + { + // throw new IllegalArgumentException(range); + System.err.println("Invalid format for toRange " + + Arrays.toString(range) + + " may cause errors"); + } toLowest = Math.min(toLowest, Math.min(range[0], range[1])); toHighest = Math.max(toHighest, Math.max(range[0], range[1])); } @@ -1203,11 +1217,20 @@ public class MapList for (int[] range : getToRanges()) { int[] transferred = map.locateInTo(range[0], range[1]); - if (transferred == null) + if (transferred == null || transferred.length % 2 != 0) { return null; } - toRanges.add(transferred); + + /* + * convert [start1, end1, start2, end2, ...] + * to [[start1, end1], [start2, end2], ...] + */ + for (int i = 0; i < transferred.length;) + { + toRanges.add(new int[] { transferred[i], transferred[i + 1] }); + i += 2; + } } return new MapList(getFromRanges(), toRanges, outFromRatio, outToRatio);