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