KickJava   Java API By Example, From Geeks To Geeks.

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


1 package com.daffodilwoods.daffodildb.utils.comparator;
2
3 import com.daffodilwoods.daffodildb.utils.field.FieldBase;
4 import com.daffodilwoods.database.utility.IntegerPool;
5 import com.daffodilwoods.database.resource.DException;
6 /**
7  * <p>Title: </p>
8  * <p>Description: </p>
9  * <p>Copyright: Copyright (c) 2004</p>
10  * <p>Company: Daffodil S/w Ltd.</p>
11  * @author Sandeep Kadiyan
12  * @version 1.0
13  */

14
15
16 public class ComparisionPredicateJoinComparator extends SuperComparator {
17
18 /** Stores the comparators for each pair */
19
20 private SuperComparator[] comparators;
21 /**
22       Represents the operator
23       EQUALTO = 1;
24       GREATERTHAN = 2;
25       LESSTHAN = 3;
26       GREATERTHANEQUALTO = 4;
27       LESSTHANEQUALTO = 5;
28       NOTEQUALTO = 6;
29
30    */

31
32  private int Operator;
33
34  public static FieldBase[][] booleanResult =
35              new FieldBase[][]
36          {
37          { IntegerPool.Integer2,IntegerPool.Integer1,IntegerPool.Integer0 ,IntegerPool.Integer_1,IntegerPool.Integer_2},//==
38
{ IntegerPool.Integer2,IntegerPool.Integer1,IntegerPool.Integer1 ,IntegerPool.Integer0, IntegerPool.Integer_2},//>
39
{ IntegerPool.Integer2,IntegerPool.Integer0,IntegerPool.Integer_1,IntegerPool.Integer_1,IntegerPool.Integer_2},//<
40
{ IntegerPool.Integer2,IntegerPool.Integer1,IntegerPool.Integer0 ,IntegerPool.Integer0 ,IntegerPool.Integer_2},//>=
41
{ IntegerPool.Integer2,IntegerPool.Integer0,IntegerPool.Integer0 ,IntegerPool.Integer_1,IntegerPool.Integer_2},//<=
42
{ IntegerPool.Integer2,IntegerPool.Integer0,IntegerPool.Integer_1,IntegerPool.Integer0 ,IntegerPool.Integer_2} //!=
43
};
44
45
46   public ComparisionPredicateJoinComparator(SuperComparator[] comparators0, int Operator0) {
47     comparators=comparators0;
48     Operator=Operator0;
49
50   }
51  public ComparisionPredicateJoinComparator(SuperComparator[] comparators0, int Operator0,boolean nullSortedigh) {
52    super(nullSortedigh);
53    comparators=comparators0;
54    Operator=Operator0;
55 }
56  public int compare(Object JavaDoc o1, Object JavaDoc o2) throws DException{
57    Object JavaDoc[] leftFieldBases = (Object JavaDoc[])o1;
58    Object JavaDoc[] rightFieldBases = (Object JavaDoc[])o2;
59    int cmp=0;
60    for (int i = 0, length = leftFieldBases.length, j = 0, k = 0, lengthK = comparators.length, length1 = rightFieldBases.length; i < length && j < length1 && k < lengthK; i++, j++, k++) {
61      cmp = comparators[k].compare(leftFieldBases[i], rightFieldBases[j]);
62      if (booleanResult[Operator - 1][cmp + 2].hashCode()!= 0)
63        return cmp;
64     }
65     return cmp;
66   }
67
68   public String JavaDoc toString() {
69     String JavaDoc str = "ComparisionPredicateJoinComparator : [Length of Comparators is " + comparators.length + " ]";
70     for (int i = 0; i < comparators.length; i++) {
71       str += " [ " + comparators[i] + "]";
72     }
73     return str;
74   }
75
76
77
78 }
79
Popular Tags