001 package market.swing; 002 003 import java.io.Serializable; 004 import java.util.Comparator; 005 006 import market.UCustomer; 007 import market.statistics.Statistics; 008 009 /** 010 * Compares {@link market.UCustomer UCustomers} by special criteria. 011 */ 012 public class CmpCustomersNumbers implements Comparator<Object>, Serializable { 013 014 /** 015 * ID for serialization. 016 */ 017 private static final long serialVersionUID = 3439845809286224151L; 018 019 public static final int DISCOUNT = 0; 020 public static final int SALES_VOLUME = 1; 021 022 private int option; 023 024 /** 025 * @param option <ul><li>0: Users are compared by their discount</li> 026 * <li>1: Users are compared by their volume of sales</li></ul> 027 */ 028 public CmpCustomersNumbers(int option) { 029 this.option = option; 030 } 031 032 /** 033 * The actual comparison. 034 * @param o1 the first customer. 035 * @param o2 the second customer. 036 * @return an int representing the result of the comparison. 037 */ 038 public int compare(Object o1, Object o2) { 039 UCustomer u1 = (UCustomer) o1; 040 UCustomer u2 = (UCustomer) o2; 041 if (option == 0) { 042 return new Double(u1.getDiscount()).intValue() - new Double(u2.getDiscount()).intValue(); 043 } 044 if (option == 1) { 045 int i1 = Statistics.getAllowableCustomerRevenue(u1); 046 int i2 = Statistics.getAllowableCustomerRevenue(u2); 047 return i1 - i2; 048 } 049 return 0; 050 } 051 }