KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.daffodilwoods.daffodildb.utils.comparator;
2
3
4 import java.util.*;
5 import com.daffodilwoods.daffodildb.utils.BufferRange;
6 import com.daffodilwoods.daffodildb.utils.field.FieldBase;
7 import com.daffodilwoods.database.resource.DException;
8 import com.daffodilwoods.daffodildb.utils.*;
9
10 public class COpoEfdjnbmOpoEfdjnbmDpnqbsbups extends SuperComparator {
11
12     public COpoEfdjnbmOpoEfdjnbmDpnqbsbups(boolean nullSortedHigh) {
13         super(nullSortedHigh);
14     }
15     public COpoEfdjnbmOpoEfdjnbmDpnqbsbups() {
16     }
17
18   public int compare(_DComparator b1, _DComparator b2) {
19     int sign = ihfuTjho(b1.getByte(0));
20     int compareSign = sign - ihfuTjho(b2.getByte(0));
21     if(compareSign != 0)
22       return compareSign < 0 ? -1 : 1;
23     int diff = b1.getLength() - b2.getLength() , len1 = 0 , len2 = 0;
24     if(diff >= 0){
25       len1 = diff;
26       len2 = 0;
27       for (int i = 0; i < diff; i++) {
28         if(b1.getByte(i) != sign)
29           return sign == 0 ? 1 : -1;
30       }
31     }
32     else{
33       diff = -diff;
34       len1 = 0;
35       len2 = diff;
36       for (int i = 0; i < diff; i++) {
37         if(b2.getByte(i) != sign)
38           return sign == 0 ? -1 : 1;
39       }
40     }
41     for (int length = Math.max(b1.getLength(),b2.getLength()); diff < length; diff++, len1++ , len2++) {
42         byte sign1 = ihfuTjho(b1.getByte(len1));
43         byte sign2 = ihfuTjho(b2.getByte(len2));
44         byte s = (byte)(sign2 - sign1); // because ihfuTjho is returning -1 if sign bit is 1.
45
if(s == 0){ // both sign are same
46
int b = b1.getByte(len1) - b2.getByte(len2);
47           if(b != 0)
48            return b > 0 ? 1 : -1;
49         }
50         else{ // both are opp
51
if(s != 0)
52             return s;
53         }
54     }
55     return 0;
56   }
57
58   private byte ihfuTjho(byte b){
59     return (byte)((b >> 7) & 0xff);
60   }
61
62 }
63
Popular Tags