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 * Shows whether this CSOrder is active or not 016 */ 017 private boolean isActive = true; 018 019 /** 020 * The time since this CSOrder exist 021 */ 022 private Long time; 023 024 /** 025 * @param s the name of the CSOrder 026 * @param active if true the CSOrder will be active 027 */ 028 public CSOrder(String s, boolean active) { 029 super(s, SMarket.getArticleCatalog()); 030 Shop.getTheShop().addStock(this); 031 isActive = active; 032 } 033 034 /** 035 * Removes a number of items from this CSOrder 036 * 037 * @param sKey the name of the StockItem 038 * @param nCount the number of StockItems, that will be removed 039 * @param db the databasket related to this transaction 040 */ 041 public void remove(String sKey, int nCount, DataBasket db){ 042 try { 043 super.remove(sKey, nCount, db); 044 } catch (VetoException e) { 045 System.err.println(e.getMessage()); 046 } 047 } 048 049 /** 050 * Removes all items with the specified key from this CSOrder 051 * 052 * @param sKey the name of the StockItem 053 * @return the number of items that are removed 054 */ 055 public int removeAll(String sKey){ 056 int i = this.countItems(sKey, null); 057 remove(sKey, i, null); 058 return i; 059 } 060 061 /** 062 * Returns whether this CSOrder is active or not 063 * 064 * @return true if this CSOrder is active, otherwise false 065 */ 066 public boolean isActive() { 067 return isActive; 068 } 069 070 /** 071 * Sets this CSOrder active or not 072 * 073 * @param active if true the CSOrder will be active 074 */ 075 public void setActive(boolean active) { 076 isActive = active; 077 } 078 079 /** 080 * Returns the time since this CSOrder exist 081 * 082 * @return the time since this CSOrder exist in milliseconds 083 */ 084 public Long getTime() { 085 return time; 086 } 087 088 /** 089 * Returns a new CSOrder with a combination of owner-key and time as its key 090 * 091 * @param customer the owner of the new CSOrder 092 * @param active if true the CSOrder will be active 093 * @return the new CSOrder 094 */ 095 public static CSOrder create(String customer, boolean active){ 096 Long t = new Long(System.currentTimeMillis()); 097 CSOrder cso = new CSOrder(customer+t.toString(), active); 098 cso.time = t; 099 return cso; 100 } 101 }