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 14 15 16 public class ComparisionPredicateJoinComparator extends SuperComparator { 17 18 19 20 private SuperComparator[] comparators; 21 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}, { IntegerPool.Integer2,IntegerPool.Integer1,IntegerPool.Integer1 ,IntegerPool.Integer0, IntegerPool.Integer_2}, { IntegerPool.Integer2,IntegerPool.Integer0,IntegerPool.Integer_1,IntegerPool.Integer_1,IntegerPool.Integer_2}, { IntegerPool.Integer2,IntegerPool.Integer1,IntegerPool.Integer0 ,IntegerPool.Integer0 ,IntegerPool.Integer_2}, { IntegerPool.Integer2,IntegerPool.Integer0,IntegerPool.Integer0 ,IntegerPool.Integer_1,IntegerPool.Integer_2}, { IntegerPool.Integer2,IntegerPool.Integer0,IntegerPool.Integer_1,IntegerPool.Integer0 ,IntegerPool.Integer_2} }; 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 o1, Object o2) throws DException{ 57 Object [] leftFieldBases = (Object [])o1; 58 Object [] rightFieldBases = (Object [])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 toString() { 69 String 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 |