KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > server > datasystem > indexsystem > ByteComparator


1 package com.daffodilwoods.daffodildb.server.datasystem.indexsystem;
2
3 import com.daffodilwoods.database.resource.*;
4 import com.daffodilwoods.daffodildb.server.datasystem.utility.*;
5 import java.io.*;
6 import com.daffodilwoods.daffodildb.utils.*;
7 import com.daffodilwoods.daffodildb.utils.comparator.SuperComparator;
8
9 public class ByteComparator extends SuperComparator implements /*Comparator,*/Externalizable{
10
11    boolean[] orderType;
12    SuperComparator[] comparators;
13
14    public ByteComparator() throws DException {
15    }
16
17    public ByteComparator(boolean[] orderType){
18       this.orderType = orderType;
19    }
20
21    public ByteComparator(boolean[] orderType,SuperComparator[] comparators0){
22       this.orderType = orderType;
23     comparators = comparators0;
24    }
25
26    public int compareOld(Object JavaDoc first,Object JavaDoc second) {
27       int com = first == null ? second == null ? 0 : -1
28                         : second == null ? 1 : 2;
29       if( com != 2 )
30         return com;
31       Object JavaDoc[] object1 = (Object JavaDoc[])first;
32       Object JavaDoc[] object2 = (Object JavaDoc[])second;
33 try{
34       com=0;
35       for (int i = 0,j=0;com==0 && i < object1.length && j < object2.length; i++,j++) {
36           com = ((_DComparator)object1[i]).getNull() && ((_DComparator)object2[j]).getNull() ? 0 :
37                    comparators[i].compare(object1[i],object2[j]);
38           com = orderType[i] ? com : -com;
39       }
40       return com;
41 }catch(DException ex){
42    throw new RuntimeException JavaDoc(ex.getMessage());
43 }
44    }
45    public int compare(Object JavaDoc first,Object JavaDoc second) {
46       Object JavaDoc[] object1 = (Object JavaDoc[])first;
47       Object JavaDoc[] object2 = (Object JavaDoc[])second;
48 try{
49      int com=0;
50       for (int i = 0,j=0;com==0 && i < object1.length && j < object2.length; i++,j++) {
51           com = ((_DComparator)object1[i]).getNull() ? ((_DComparator)object2[j]).getNull() ? 0 : 1
52                    : ((_DComparator)object2[j]).getNull() ? -1 : comparators[i].compare((_DComparator)object1[i],(_DComparator)object2[j]);
53           com = orderType[i] ? com : -com;
54       }
55       return com;
56 }catch(DException ex){
57    throw new RuntimeException JavaDoc(ex.getMessage());
58 }
59 /*
60       int length1 = object1.length;
61       int length2 = object2.length;
62       int length = length1 < length2 ? length1 : length2;
63       int compare = 0;
64       for( int i = 0; i < length ; i++){
65          Object o1 = object1[i];
66          Object o2 = object2[i];
67          try{
68             compare = compareObjects(i,o1,o2);
69         }catch(Exception de){
70             throw new RuntimeException(" yyyyyyyyyyyyyyyyyyyy");
71          }
72          if(compare != 0 )
73             return orderType[i] ? compare : -compare;
74       }
75       return 0;
76 */

77    }
78
79   private int compareObjects(int index,Object JavaDoc first,Object JavaDoc second)throws DException{
80         return ((_DComparator)first).getNull() && ((_DComparator)second).getNull() ? 0 : comparators[index].compare(first,second);
81    }
82
83     public void readExternal(ObjectInput objectInput) throws IOException, ClassNotFoundException JavaDoc {
84         orderType = (boolean[])objectInput.readObject();
85     }
86
87     public void writeExternal(ObjectOutput objectOutput) throws IOException {
88         objectOutput.writeObject(orderType);
89     }
90
91     public String JavaDoc toString() {
92         return ""+comparators.length;
93     }
94 }
95
Popular Tags