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