1 21 22 package org.opensubsystems.patterns.ordereddata.util; 23 24 import java.util.Comparator ; 25 26 import org.opensubsystems.core.util.GlobalConstants; 27 import org.opensubsystems.patterns.ordereddata.data.OrderedData; 28 29 37 public class OrderedDataComparator implements Comparator 38 { 39 42 private static final String IMPL_LOCK = "IMPL_LOCK"; 43 44 46 49 private static OrderedDataComparator s_defaultInstance = null; 50 51 53 58 public static OrderedDataComparator getInstance( 59 ) 60 { 61 if (s_defaultInstance == null) 62 { 63 synchronized (IMPL_LOCK) 66 { 67 if (s_defaultInstance == null) 68 { 69 setInstance(new OrderedDataComparator()); 70 } 71 } 72 } 73 74 return s_defaultInstance; 75 } 76 77 83 public static void setInstance( 84 OrderedDataComparator defaultInstance 85 ) 86 { 87 if (GlobalConstants.ERROR_CHECKING) 88 { 89 assert defaultInstance != null 90 : "Default factory instance cannot be null"; 91 } 92 93 synchronized (IMPL_LOCK) 94 { 95 s_defaultInstance = defaultInstance; 96 } 97 } 98 99 102 public int compare( 103 Object o1, 104 Object o2 105 ) 106 { 107 int iReturn = 0; 108 if (o1 instanceof OrderedData && o2 instanceof OrderedData) 109 { 110 if (((OrderedData) o1).getOrderNumber() 111 != ((OrderedData) o2).getOrderNumber()) 112 { 113 iReturn = (((OrderedData) o1).getOrderNumber() 114 < ((OrderedData) o2).getOrderNumber()) ? -1 : 1; 115 } 116 } 117 return iReturn; 118 } 119 } 120 | Popular Tags |