001 package market; 002 003 import market.statistics.Statistics; 004 import data.ooimpl.CountingStockImpl; 005 006 /** 007 * This class implements the customers of the market. 008 */ 009 public class UCustomer extends UPerson { 010 011 private String company; 012 private CountingStockImpl csi_shoppingBasket; 013 014 /** 015 * Creates a new UCustomer. 016 * @param userName the customer's ID. 017 */ 018 public UCustomer(String userName){ 019 super(userName); 020 csi_shoppingBasket = new CountingStockImpl(userName, SMarket.getArticleCatalog()); 021 } 022 023 /** 024 * Sets the customer's company. 025 * @param company the company to be set. 026 */ 027 public void setCompany(String company) { 028 this.company = company; 029 } 030 031 /** 032 * Gets the customer's company. 033 * @return the company. 034 */ 035 public String getCompany() { 036 return company; 037 } 038 039 /** 040 * Gets the customer's shopping basket. 041 * @return the shopping basket. 042 */ 043 public CountingStockImpl getShoppingBasket() { 044 return csi_shoppingBasket; 045 } 046 047 /** 048 * Computes and returns the customer's current discount.<br> 049 * The discount is a value in the range from 0 to 1. 050 * @return the discount. 051 * @see Options 052 */ 053 public double getDiscount() { 054 int allowable = Statistics.getAllowableCustomerRevenue(this); 055 int percentValue = SMarket.getOptions().getDiscountValue(); 056 //allowable (in cents) / 100 (Euro) / percentValue (how many percent worth) / 100 (range [0..1)) 057 double actualDiscount = new Integer(allowable).doubleValue()/(10000 * percentValue); 058 return Math.min(actualDiscount, SMarket.getOptions().getMaxDiscount()); 059 } 060 }