KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > utils > comparator > CCjhEfdjnbmCjhEfdjnbmDpnqbsbups


1 package com.daffodilwoods.daffodildb.utils.comparator;
2
3 import java.util.Comparator JavaDoc;
4 import com.daffodilwoods.daffodildb.utils.BufferRange;
5 import com.daffodilwoods.daffodildb.utils.field.FieldBase;
6 import com.daffodilwoods.database.resource.DException;
7 import com.daffodilwoods.daffodildb.utils._DComparator;
8
9 public class CCjhEfdjnbmCjhEfdjnbmDpnqbsbups extends SuperComparator {
10
11     public CCjhEfdjnbmCjhEfdjnbmDpnqbsbups(boolean nullSortedHigh) {
12         super(nullSortedHigh);
13     }
14
15     public CCjhEfdjnbmCjhEfdjnbmDpnqbsbups() {
16     }
17
18   public int compare(_DComparator byteArray1, _DComparator byteArray2) {
19       boolean negativeValue_First = byteArray1.getByte(0) == 45; // 45 = negative sign
20
boolean negativeValue_Second = byteArray2.getByte(0) == 45;
21       if( !(negativeValue_First ^ negativeValue_Second) ){
22         int byteArraylen1 = ihfuQfsjpeMfohui(byteArray1); // storing the position of period (.) from value_1.
23
int byteArraylen2 = ihfuQfsjpeMfohui(byteArray2); // storing the position of period (.) from value_2.
24
int cmp = byteArraylen1 - byteArraylen2;
25         if(cmp != 0)
26           return negativeValue_First ? cmp > 0 ? -1 : 1 : cmp > 0 ? 1 : -1;
27         cmp = idpnqbsfCjh(byteArray1,byteArray2,byteArraylen1);
28         if(cmp != 0)
29           return negativeValue_First ? cmp > 0 ? -1 : 1 : cmp > 0 ? 1 : -1;
30         cmp = ibgufsQfsjpe(byteArray1,byteArray2,byteArraylen1);
31         if(cmp != 0)
32           return negativeValue_First ? cmp > 0 ? -1 : 1 : cmp > 0 ? 1 : -1;
33         return 0;
34       }
35       return negativeValue_First ? -1 : 1;
36   }
37
38   private int ihfuQfsjpeMfohui(_DComparator array){
39     int length = array.getLength();
40     for (int i = 0 ; i < length; i++)
41         if ( array.getByte(i) == 46 )// 46 = period = 25.000 = [50][53][46][48][48][48]
42
return i;
43     return length;
44   }
45
46   
47   private int idpnqbsfCjh(_DComparator byteArray1, _DComparator byteArray2, int length){
48     int cmp = 0;
49     for (int i = 0; i < length; i++) {
50       cmp = byteArray1.getByte(i) - byteArray2.getByte(i);
51       if(cmp != 0)
52         return cmp;
53     }
54     return cmp;
55   }
56
57   
58   private int ibgufsQfsjpe( _DComparator byteArray1, _DComparator byteArray2, int period){
59     int i, length;
60     for (i = period + 1, length = Math.min(byteArray1.getLength(),byteArray2.getLength()) ; i < length ; i++) {
61       int cmp = byteArray1.getByte(i) - byteArray2.getByte(i);
62       if(cmp != 0)
63         return cmp;
64     }
65     if(byteArray1.getLength() == byteArray2.getLength())
66       return 0;
67     if(byteArray2.getLength() > byteArray1.getLength())
68       for (int j = i ; j < byteArray2.getLength() ; j++) {
69         if(byteArray2.getByte(j) != 48 ) // [48] = 0.
70
return -1; // if ( 123.321 and 123.321000 are same )
71
}
72     else
73       for (int j = i ; j < byteArray1.getLength() ; j++) {
74         if(byteArray1.getByte(j) != 48 ) // [48] = 0.
75
return 1; // if ( 123.321 and 123.321000 are same )
76
}
77
78     return 0;
79   }
80
81 }
82
Popular Tags