1 package com.ibatis.jpetstore.domain; 2 3 import com.ibatis.common.util.PaginatedArrayList; 4 import com.ibatis.common.util.PaginatedList; 5 6 import java.io.Serializable ; 7 import java.math.BigDecimal ; 8 import java.util.*; 9 10 public class Cart implements Serializable { 11 12 13 14 private final Map itemMap = Collections.synchronizedMap(new HashMap()); 15 private final PaginatedList itemList = new PaginatedArrayList(4); 16 17 18 19 public Iterator getCartItems() { 20 return itemList.iterator(); 21 } 22 23 public PaginatedList getCartItemList() { 24 return itemList; 25 } 26 27 public int getNumberOfItems() { 28 return itemList.size(); 29 } 30 31 32 33 public Iterator getAllCartItems() { 34 List allItems = new ArrayList(); 35 itemList.gotoPage(0); 36 allItems.addAll(itemList); 37 while (itemList.nextPage()) { 38 allItems.addAll(itemList); 39 } 40 return allItems.iterator(); 41 } 42 43 public boolean containsItemId(String itemId) { 44 return itemMap.containsKey(itemId); 45 } 46 47 public void addItem(Item item, boolean isInStock) { 48 CartItem cartItem = (CartItem) itemMap.get(item.getItemId()); 49 if (cartItem == null) { 50 cartItem = new CartItem(); 51 cartItem.setItem(item); 52 cartItem.setQuantity(0); 53 cartItem.setInStock(isInStock); 54 itemMap.put(item.getItemId(), cartItem); 55 itemList.add(cartItem); 56 } 57 cartItem.incrementQuantity(); 58 } 59 60 61 public Item removeItemById(String itemId) { 62 CartItem cartItem = (CartItem) itemMap.remove(itemId); 63 if (cartItem == null) { 64 return null; 65 } else { 66 itemList.remove(cartItem); 67 return cartItem.getItem(); 68 } 69 } 70 71 public void incrementQuantityByItemId(String itemId) { 72 CartItem cartItem = (CartItem) itemMap.get(itemId); 73 cartItem.incrementQuantity(); 74 } 75 76 public void setQuantityByItemId(String itemId, int quantity) { 77 CartItem cartItem = (CartItem) itemMap.get(itemId); 78 cartItem.setQuantity(quantity); 79 } 80 81 public BigDecimal getSubTotal() { 82 BigDecimal subTotal = new BigDecimal ("0"); 83 Iterator items = getAllCartItems(); 84 while (items.hasNext()) { 85 CartItem cartItem = (CartItem) items.next(); 86 Item item = cartItem.getItem(); 87 BigDecimal listPrice = item.getListPrice(); 88 BigDecimal quantity = new BigDecimal (String.valueOf(cartItem.getQuantity())); 89 subTotal = subTotal.add(listPrice.multiply(quantity)); 90 } 91 return subTotal; 92 } 93 94 } 95 | Popular Tags |