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, Serializable {
013
014 public static final int DISCOUNT = 0;
015 public static final int SALES_VOLUME = 1;
016
017 private int option;
018
019 /**
020 * @param option <ul><li>0: Users are compared by their discount</li>
021 * <li>1: Users are compared by their volume of sales</li></ul>
022 */
023 public CmpCustomersNumbers(int option) {
024 this.option = option;
025 }
026
027 /**
028 * The actual comparison.
029 * @param o1 the first customer.
030 * @param o2 the second customer.
031 * @return an int representing the result of the comparison.
032 */
033 public int compare(Object o1, Object o2) {
034 UCustomer u1 = (UCustomer)o1;
035 UCustomer u2 = (UCustomer)o2;
036 if (option == 0) {
037 return new Double(u1.getDiscount()).intValue() - new Double(u2.getDiscount()).intValue();
038 }
039 if (option == 1) {
040 int i1 = Statistics.getAllowableCustomerRevenue(u1);
041 int i2 = Statistics.getAllowableCustomerRevenue(u2);
042 return i1 - i2;
043 }
044 return 0;
045 }
046 }