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 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 first,Object second) { 27 int com = first == null ? second == null ? 0 : -1 28 : second == null ? 1 : 2; 29 if( com != 2 ) 30 return com; 31 Object [] object1 = (Object [])first; 32 Object [] object2 = (Object [])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 (ex.getMessage()); 43 } 44 } 45 public int compare(Object first,Object second) { 46 Object [] object1 = (Object [])first; 47 Object [] object2 = (Object [])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 (ex.getMessage()); 58 } 59 77 } 78 79 private int compareObjects(int index,Object first,Object 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 { 84 orderType = (boolean[])objectInput.readObject(); 85 } 86 87 public void writeExternal(ObjectOutput objectOutput) throws IOException { 88 objectOutput.writeObject(orderType); 89 } 90 91 public String toString() { 92 return ""+comparators.length; 93 } 94 } 95 | Popular Tags |