1 14 package org.compiere.util; 15 16 import java.io.Serializable ; 17 import java.math.BigDecimal ; 18 import java.sql.Timestamp ; 19 import java.util.Comparator ; 20 21 27 public final class MSort implements Comparator , Serializable 28 { 29 34 public MSort (int new_index, Object new_data) 35 { 36 index = new_index; 37 data = new_data; 38 } 40 41 public int index; 42 43 public Object data; 44 45 46 private int m_multiplier = 1; 48 52 public void setSortAsc (boolean ascending) 53 { 54 if (ascending) 55 m_multiplier = 1; 56 else 57 m_multiplier = -1; 58 } 60 61 62 68 public int compare(Object o1, Object o2) 69 { 70 Object cmp1 = null; 72 if (o1 instanceof MSort) 73 cmp1 = ((MSort)o1).data; 74 if (cmp1 instanceof NamePair) 75 cmp1 = ((NamePair)cmp1).getName(); 76 77 Object cmp2 = o2; 78 if (o2 instanceof MSort) 79 cmp2 = ((MSort)o2).data; 80 if (cmp2 instanceof NamePair) 81 cmp2 = ((NamePair)cmp2).getName(); 82 83 if (cmp1 == null) 85 cmp1 = new String (""); 86 if (cmp2 == null) 87 cmp2 = new String (""); 88 89 92 93 if (cmp1 instanceof Timestamp ) 95 { 96 Timestamp t = (Timestamp )cmp1; 97 return t.compareTo(cmp2) * m_multiplier; 98 } 99 else if (cmp1 instanceof BigDecimal ) 101 { 102 BigDecimal d = (BigDecimal )cmp1; 103 return d.compareTo(cmp2) * m_multiplier; 104 } 105 else if (cmp1 instanceof Integer ) 107 { 108 Integer d = (Integer )cmp1; 109 return d.compareTo(cmp2) * m_multiplier; 110 } 111 else if (cmp1 instanceof String ) 113 { 114 String s = (String )cmp1; 115 return s.compareTo(cmp2.toString()) * m_multiplier; 116 } 117 118 String s = cmp1.toString(); 120 return s.compareTo(cmp2.toString()) * m_multiplier; 121 } 123 128 public boolean equals (Object obj) 129 { 130 if (obj instanceof MSort) 131 { 132 MSort ms = (MSort)obj; 133 if (data == ms.data) 134 return true; 135 } 136 return false; 137 } 139 143 public String toString() 144 { 145 StringBuffer sb = new StringBuffer ("MSort["); 146 sb.append("Index=").append(index).append(",Data=").append(data); 147 sb.append("]"); 148 return sb.toString(); 149 } 151 152 } | Popular Tags |