001 package market.statistics;
002
003 import java.util.Calendar;
004 import java.util.LinkedList;
005 import java.util.List;
006
007 import market.SMarket;
008 import data.ooimpl.CatalogItemImpl;
009
010 /**
011 * Every customer has a dedicated statistics item, which is represented by this class.<br>
012 * The statistics are saved as a list that contains date and value of every purchase the customer has
013 * made. That makes it possible to get filtered statistics for a special range of time.
014 */
015 public class CICustomerStats extends CatalogItemImpl {
016
017 /**
018 * ID for serialization.
019 */
020 private static final long serialVersionUID = 3200770948911522923L;
021
022 /**
023 * Keeps track of a customer's purchases.
024 */
025 private List<HistoryEntry> history = new LinkedList<HistoryEntry>();
026
027 /**
028 * @param id the statistics entry's ID. It must be equal to the appropriate customer's ID.
029 */
030 public CICustomerStats(String id) {
031 super(id);
032 }
033
034 /**
035 * Adds a purchase to the {@link #history}.
036 * @param value the value of the purchase.
037 */
038 public void add(int value) {
039 history.add(new HistoryEntry((Calendar)SMarket.getTime().clone(), value));
040 }
041
042 /**
043 * @return the {@link #history}.
044 */
045 public List getHistory() {
046 return history;
047 }
048
049 public CatalogItemImpl getShallowClone() {
050 CICustomerStats cics = new CICustomerStats(getName());
051 cics.history = this.history;
052 return cics;
053 }
054 }