| 1 package com.daffodilwoods.daffodildb.server.sql99.dql.iterator.table; 2 3 import com.daffodilwoods.daffodildb.utils.comparator.*; 4 import com.daffodilwoods.daffodildb.utils.field.*; 5 import com.daffodilwoods.database.resource.*; 6 7 17 18 public class DistinctComparator extends SuperComparator { 19 20 24 private SuperComparator[] comparators; 25 26 public DistinctComparator(SuperComparator[] comparators0) { 27 comparators = comparators0; 28 } 29 30 41 public int compare(Object o1, Object o2) throws DException { 42 Object [] leftFieldBases = (Object []) o1; 43 Object [] rightFieldBases = (Object []) o2; 44 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++) { 45 FieldBase fb1 = (FieldBase) leftFieldBases[i]; 46 FieldBase fb2 = (FieldBase) rightFieldBases[j]; 47 int cmp = fb1.getNull() ? fb2.getNull() ? 0 : nullSortedHigh ? 2 : -2 48 : fb2.getNull() ? nullSortedHigh ? -2 : 2 : comparators[k].compare(fb1, rightFieldBases[j]); 49 if (cmp != 0) { 50 return cmp; 51 } 52 } 53 return 0; 54 } 55 56 } 57 | Popular Tags |