001 package market; 002 003 import sale.Shop; 004 import data.DataBasket; 005 import data.events.VetoException; 006 import data.ooimpl.CountingStockImpl; 007 008 /** 009 * A CountingStockImpl which is used to store orders of customers, 010 * which can be set active or not 011 */ 012 public class CSOrder extends CountingStockImpl{ 013 014 /** 015 * ID for serialization. 016 */ 017 private static final long serialVersionUID = 6488120137458624557L; 018 019 /** 020 * Shows whether this CSOrder is active or not 021 */ 022 private boolean isActive = true; 023 024 /** 025 * The time since this CSOrder exist 026 */ 027 private Long time; 028 029 /** 030 * @param s the name of the CSOrder 031 * @param active if true the CSOrder will be active 032 */ 033 public CSOrder(String s, boolean active) { 034 super(s, SMarket.getArticleCatalog()); 035 Shop.getTheShop().addStock(this); 036 isActive = active; 037 } 038 039 /** 040 * Removes a number of items from this CSOrder 041 * 042 * @param sKey the name of the StockItem 043 * @param nCount the number of StockItems, that will be removed 044 * @param db the databasket related to this transaction 045 */ 046 public void remove(String sKey, int nCount, DataBasket db){ 047 try { 048 super.remove(sKey, nCount, db); 049 } catch (VetoException e) { 050 System.err.println(e.getMessage()); 051 } 052 } 053 054 /** 055 * Removes all items with the specified key from this CSOrder 056 * 057 * @param sKey the name of the StockItem 058 * @return the number of items that are removed 059 */ 060 public int removeAll(String sKey){ 061 int i = this.countItems(sKey, null); 062 remove(sKey, i, null); 063 return i; 064 } 065 066 /** 067 * Returns whether this CSOrder is active or not 068 * 069 * @return true if this CSOrder is active, otherwise false 070 */ 071 public boolean isActive() { 072 return isActive; 073 } 074 075 /** 076 * Sets this CSOrder active or not 077 * 078 * @param active if true the CSOrder will be active 079 */ 080 public void setActive(boolean active) { 081 isActive = active; 082 } 083 084 /** 085 * Returns the time since this CSOrder exist 086 * 087 * @return the time since this CSOrder exist in milliseconds 088 */ 089 public Long getTime() { 090 return time; 091 } 092 093 /** 094 * Returns a new CSOrder with a combination of owner-key and time as its key 095 * 096 * @param customer the owner of the new CSOrder 097 * @param active if true the CSOrder will be active 098 * @return the new CSOrder 099 */ 100 public static CSOrder create(String customer, boolean active){ 101 Long t = new Long(System.currentTimeMillis()); 102 CSOrder cso = new CSOrder(customer+t.toString(), active); 103 cso.time = t; 104 return cso; 105 } 106 }