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         * Keeps track of a customer's purchases.
019         */
020        private List history = new LinkedList();
021    
022        /**
023         * @param id the statistics entry's ID. It must be equal to the appropriate customer's ID.
024         */
025        public CICustomerStats(String id) {
026            super(id);
027        }
028    
029        /**
030         * Adds a purchase to the {@link #history}.
031         * @param value the value of the purchase.
032         */
033        public void add(int value) {
034            history.add(new HistoryEntry((Calendar)SMarket.getTime().clone(), value));
035        }
036    
037        /**
038         * @return the {@link #history}.
039         */
040        public List getHistory() {
041            return history;
042        }
043    
044        public CatalogItemImpl getShallowClone() {
045            CICustomerStats cics = new CICustomerStats(getName());
046            cics.history = this.history;
047            return cics;
048        }
049    }