JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / java / util / Arrays.js
1 // BH adjusted to have only one sort method.\r
2 // BH -- added Java 6  copyOfRange\r
3 \r
4 Clazz.load(["java.util.AbstractList","$.RandomAccess"],"java.util.Arrays",["java.lang.ArrayIndexOutOfBoundsException","$.IllegalArgumentException","$.NullPointerException"],function(){\r
5 c$=Clazz.declareType(java.util,"Arrays");\r
6 \r
7 c$.copyOfRange = Clazz.defineMethod (c$, "copyOfRange", \r
8 function (original, from, to) {\r
9 to = Math.min(original.length, to);\r
10 var newLength = to - from;\r
11 if (newLength < 0) throw  new IllegalArgumentException (from + " > " + to);\r
12 if (original.slice)\r
13   return original.slice(from, to);\r
14   // MSIE and Chrome do not have Int32Array.slice()\r
15 var c = Clazz.newIntArray(newLength, 0);\r
16 for (var i = 0; i < newLength; i++)\r
17   c[i] = original[from++];\r
18 return c;  \r
19 }, "~A,~N,~N");\r
20 \r
21 c$.sort=Clazz.overrideMethod(c$,"sort",\r
22 function(a,c,d,e){\r
23   switch (arguments.length) {\r
24   case 1:\r
25     var aux=a.sort(function(o1,o2){\r
26       if(typeof o1=="string"||o1 instanceof Comparable){\r
27         return o1.compareTo(o2);\r
28       }\r
29       return o1-o2;\r
30       });\r
31     for(var i=0;i<a.length;i++){\r
32       a[i]=aux[i];\r
33     }\r
34     return;\r
35   case 2:\r
36     var aux=a.sort(function(o1,o2){\r
37       if(c!=null){\r
38         return c.compare(o1,o2);\r
39       }else if(typeof o1=="string"||o1 instanceof Comparable){\r
40         return o1.compareTo(o2);\r
41       }\r
42       return o1-o2;\r
43       });\r
44     for(var i=0;i<a.length;i++){\r
45       a[i]=aux[i];\r
46     }\r
47     return;\r
48   case 3:\r
49     var fromIndex = c;\r
50     var toIndex = d;\r
51     this.rangeCheck(a.length,fromIndex,toIndex);\r
52     var aux=new Array();\r
53     for(var i=fromIndex;i<toIndex;i++){\r
54       aux[i-fromIndex]=a[i];\r
55     }\r
56     aux=aux.sort(function(o1,o2){\r
57       if(typeof o1=="string"||o1 instanceof Comparable){\r
58         return o1.compareTo(o2);\r
59       }\r
60       return o1-o2;\r
61       });\r
62     for(var i=fromIndex;i<toIndex;i++){\r
63       a[i]=aux[i-fromIndex];\r
64     }\r
65     return;\r
66   case 4:  \r
67     var fromIndex = c;\r
68     var toIndex = d;\r
69     c = e;\r
70     this.rangeCheck(a.length,fromIndex,toIndex);\r
71     var aux=new Array();\r
72     for(var i=fromIndex;i<toIndex;i++){\r
73       aux[i-fromIndex]=a[i];\r
74     }\r
75     aux=aux.sort(function(o1,o2){\r
76       if(c!=null){\r
77         return c.compare(o1,o2);\r
78       }else if(typeof o1=="string"||o1 instanceof Comparable){\r
79         return o1.compareTo(o2);\r
80       }\r
81       return o1-o2;\r
82       });\r
83     for(var i=fromIndex;i<toIndex;i++){\r
84       a[i]=aux[i-fromIndex];\r
85     }\r
86   }\r
87 });\r
88 \r
89 c$.rangeCheck=Clazz.defineMethod(c$,"rangeCheck",\r
90 ($fz=function(arrayLen,fromIndex,toIndex){\r
91 if(fromIndex>toIndex)throw new IllegalArgumentException("fromIndex("+fromIndex+") > toIndex("+toIndex+")");\r
92 if(fromIndex<0)throw new ArrayIndexOutOfBoundsException(fromIndex);\r
93 if(toIndex>arrayLen)throw new ArrayIndexOutOfBoundsException(toIndex);\r
94 },$fz.isPrivate=true,$fz),"~N,~N,~N");\r
95 c$.binarySearch=Clazz.defineMethod(c$,"binarySearch",\r
96 function(a,key){\r
97 var low=0;\r
98 var high=a.length-1;\r
99 while(low<=high){\r
100 var mid=(low+high)>>1;\r
101 var midVal=a[mid];\r
102 if(midVal<key)low=mid+1;\r
103 else if(midVal>key)high=mid-1;\r
104 else return mid;\r
105 }\r
106 return-(low+1);\r
107 },"~A,~N");\r
108 c$.binarySearch=Clazz.defineMethod(c$,"binarySearch",\r
109 function(a,key){\r
110 var low=0;\r
111 var high=a.length-1;\r
112 while(low<=high){\r
113 var mid=(low+high)>>1;\r
114 var midVal=a[mid];\r
115 var cmp=(midVal).compareTo(key);\r
116 if(cmp<0)low=mid+1;\r
117 else if(cmp>0)high=mid-1;\r
118 else return mid;\r
119 }\r
120 return-(low+1);\r
121 },"~A,~O");\r
122 c$.binarySearch=Clazz.defineMethod(c$,"binarySearch",\r
123 function(a,key,c){\r
124 if(c==null)return java.util.Arrays.binarySearch(a,key);\r
125 var low=0;\r
126 var high=a.length-1;\r
127 while(low<=high){\r
128 var mid=(low+high)>>1;\r
129 var midVal=a[mid];\r
130 var cmp=c.compare(midVal,key);\r
131 if(cmp<0)low=mid+1;\r
132 else if(cmp>0)high=mid-1;\r
133 else return mid;\r
134 }\r
135 return-(low+1);\r
136 },"~A,~O,java.util.Comparator");\r
137 c$.equals=Clazz.defineMethod(c$,"equals",\r
138 function(a,a2){\r
139 if(a===a2)return true;\r
140 if(a==null||a2==null)return false;\r
141 var length=a.length;\r
142 if(a2.length!=length)return false;\r
143 for(var i=0;i<length;i++){\r
144 var o1=a[i];\r
145 var o2=a2[i];\r
146 {\r
147 if(!(o1==null?o2==null:(o1.equals==null?o1==o2:o1.equals(o2))))return false;\r
148 }}\r
149 return true;\r
150 },"~A,~A");\r
151 \r
152 c$.fill=Clazz.overrideMethod(c$,"fill",\r
153 function(a,fromIndex,toIndex,val){\r
154 if (arguments.length == 2) {\r
155                 val = fromIndex;\r
156                 fromIndex = 0;\r
157                 toIndex = a.length;\r
158         }       \r
159         java.util.Arrays.rangeCheck(a.length,fromIndex,toIndex);\r
160         for(var i=fromIndex;i<toIndex;i++)a[i]=val;\r
161 });\r
162 \r
163 c$.asList=Clazz.defineMethod(c$,"asList",\r
164 function(a){\r
165 return new java.util.Arrays.ArrayList(arguments.length == 1 && Clazz.getClassName(a) == "Array" ? a : arguments); // BH must be T...\r
166 },"~A");\r
167 Clazz.pu$h(self.c$);\r
168 c$=Clazz.decorateAsClass(function(){\r
169 this.a=null;\r
170 Clazz.instantialize(this,arguments);\r
171 },java.util.Arrays,"ArrayList",java.util.AbstractList,[java.util.RandomAccess,java.io.Serializable]);\r
172 Clazz.makeConstructor(c$,\r
173 function(a){\r
174 Clazz.superConstructor(this,java.util.Arrays.ArrayList,[]);\r
175 if(a==null)throw new NullPointerException();\r
176 this.a=a;\r
177 },"~A");\r
178 Clazz.overrideMethod(c$,"size",\r
179 function(){\r
180 return this.a.length;\r
181 });\r
182 Clazz.defineMethod(c$,"toArray",\r
183 function(){\r
184 return this.a.clone();\r
185 });\r
186 Clazz.overrideMethod(c$,"get",\r
187 function(a){\r
188 return this.a[a];\r
189 },"~N");\r
190 Clazz.overrideMethod(c$,"set",\r
191 function(a,b){\r
192 var c=this.a[a];\r
193 this.a[a]=b;\r
194 return c;\r
195 },"~N,~O");\r
196 Clazz.overrideMethod(c$,"indexOf",\r
197 function(a){\r
198 if(a==null){\r
199 for(var b=0;b<this.a.length;b++)if(this.a[b]==null)return b;\r
200 \r
201 }else{\r
202 for(var b=0;b<this.a.length;b++)if(a.equals(this.a[b]))return b;\r
203 \r
204 }return-1;\r
205 },"~O");\r
206 Clazz.overrideMethod(c$,"contains",\r
207 function(a){\r
208 return this.indexOf(a)!=-1;\r
209 },"~O");\r
210 c$=Clazz.p0p();\r
211 Clazz.defineStatics(c$,\r
212 "INSERTIONSORT_THRESHOLD",7);\r
213 });\r