KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > daffodilwoods > daffodildb > client > RSBKeyComparator


1 package com.daffodilwoods.daffodildb.client;
2
3 import com.daffodilwoods.daffodildb.server.sql99.dql.resultsetmetadata.*;
4
5 import com.daffodilwoods.daffodildb.server.sql99.dql.resultsetmetadata._RowReader;
6
7 import com.daffodilwoods.daffodildb.server.sql99.dql.resultsetmetadata.SelectKeyColumnInformation;
8
9 import com.daffodilwoods.daffodildb.server.sql99.dql.resultsetmetadata.AllColumnRowReader;
10
11 import com.daffodilwoods.database.sqlinitiator.*;
12 import com.daffodilwoods.database.resource.*;
13 import com.daffodilwoods.database.general.*;
14
15 import com.daffodilwoods.daffodildb.server.sql99.utils.*;
16
17 import java.util.Comparator JavaDoc;
18 import com.daffodilwoods.database.utility.*;
19 import com.daffodilwoods.daffodildb.server.sql99.dql.queryexpression.*;
20 import com.daffodilwoods.daffodildb.utils.comparator.SuperComparator;
21 public class RSBKeyComparator implements Comparator JavaDoc{
22
23   SuperComparator comparator;
24   _RowReader rowReader;
25
26   public RSBKeyComparator(SuperComparator comparator0,_RowReader rowReader0) {
27     comparator = comparator0;
28     rowReader = rowReader0;
29   }
30
31   public int compare(Object JavaDoc first, Object JavaDoc second) {
32       if(first == null || second == null){
33           return 0;
34       }
35      Object JavaDoc key1 = ((RecordSetBuffer.RBTreeLocationId)first).rowKey;
36      Object JavaDoc key2 = ((RecordSetBuffer.RBTreeLocationId)second).rowKey;
37     try {
38         return comparator.compare(key1,key2);
39     }
40     catch (ClassCastException JavaDoc ex) {
41       throw ex;
42     }
43     catch(DException de){
44     }
45     throw new UnsupportedOperationException JavaDoc("Method not supported");
46   }
47
48   public Object JavaDoc getOrderValues(Object JavaDoc values) throws DException {
49       return ((_AllColumnRowReader)rowReader).getKey(values);
50
51   }
52
53   SuperComparator getComparator() throws DException{
54      return comparator;
55   }
56
57   public int compare1(Object JavaDoc object1,Object JavaDoc object2){
58      try {
59         if(object1 == null || object2 == null)
60              return 0;
61          Object JavaDoc[] first = (Object JavaDoc[])object1;
62          Object JavaDoc[] second = (Object JavaDoc[])object2;
63          int length = first.length;
64          int state = 0;
65          boolean flag = false;
66          for (int i = 0; i < length; i++) {
67            if(first[i] != null && second[i] == null) {
68              if(state == 0)
69                state = 1;
70              continue;
71            }
72            if(first[i] == null && second[i] != null){
73              if(state == 0)
74                state = -1;
75              continue;
76            }
77            if(first[i] == null && second[i] == null)
78                continue;
79             /* Done as part of code review using findbug tool */
80             int cmp = compareResult(second[i],first[i]);
81
82            if(cmp != 0)
83              return state == -1 || state == 1 ? state : cmp;
84            else
85              flag = true;
86          }
87          return flag ? 0 : state;
88      }
89      catch (ClassCastException JavaDoc ex) {
90         throw ex;
91      }
92   }
93
94   private int compareResult(Object JavaDoc first, Object JavaDoc second) {
95       try{
96           IgnoreValue i2 = (IgnoreValue)second;
97           return 0;
98           }catch(ClassCastException JavaDoc cce1){ }
99           if (first instanceof String JavaDoc)
100               return String.CASE_INSENSITIVE_ORDER.compare(first,second);
101           if (first instanceof Boolean JavaDoc){
102               boolean f1 = ((Boolean JavaDoc)first).booleanValue();
103               boolean f2 = ((Boolean JavaDoc)second).booleanValue();
104               return f1 ^ f2 ? f1 ? 1 : -1 : 0;
105           }
106           return ((Comparable JavaDoc)first).compareTo(second);
107   }
108
109 }
110
Popular Tags