01: package com.odal.petstore.domain;
02:
03: import java.io.Serializable;
04: import java.math.BigDecimal;
05: import java.util.ArrayList;
06: import java.util.Collections;
07: import java.util.HashMap;
08: import java.util.Iterator;
09: import java.util.List;
10: import java.util.Map;
11:
12: /**
13: * @author Gennady Krizhevsky
14: */
15: public class Cart implements Serializable {
16:
17: private final Map itemMap = Collections
18: .synchronizedMap(new HashMap());
19: private final List itemList = new ArrayList();
20:
21: public Iterator getCartItems() {
22: return itemList.iterator();
23: }
24:
25: public List getCartItemList() {
26: return itemList;
27: }
28:
29: public int getNumberOfItems() {
30: return itemList.size();
31: }
32:
33: public Iterator getAllCartItems() {
34: return itemList.iterator();
35: }
36:
37: public boolean containsItemId(String itemId) {
38: return itemMap.containsKey(itemId);
39: }
40:
41: public void addItem(Item item, boolean isInStock) {
42: CartItem cartItem = (CartItem) itemMap.get(item.getItemId());
43: if (cartItem == null) {
44: cartItem = new CartItem();
45: cartItem.setItem(item);
46: cartItem.setQuantity(0);
47: cartItem.setInStock(isInStock);
48: itemMap.put(item.getItemId(), cartItem);
49: itemList.add(cartItem);
50: }
51: cartItem.incrementQuantity();
52: }
53:
54: public Item removeItemById(String itemId) {
55: CartItem cartItem = (CartItem) itemMap.remove(itemId);
56: if (cartItem == null) {
57: return null;
58: } else {
59: itemList.remove(cartItem);
60: return cartItem.getItem();
61: }
62: }
63:
64: public void incrementQuantityByItemId(String itemId) {
65: CartItem cartItem = (CartItem) itemMap.get(itemId);
66: cartItem.incrementQuantity();
67: }
68:
69: public void setQuantityByItemId(String itemId, int quantity) {
70: CartItem cartItem = (CartItem) itemMap.get(itemId);
71: cartItem.setQuantity(quantity);
72: }
73:
74: public BigDecimal getSubTotal() {
75: BigDecimal subTotal = new BigDecimal("0");
76: Iterator items = getAllCartItems();
77: while (items.hasNext()) {
78: CartItem cartItem = (CartItem) items.next();
79: Item item = cartItem.getItem();
80: BigDecimal listPrice = item.getListPrice();
81: BigDecimal quantity = new BigDecimal(String
82: .valueOf(cartItem.getQuantity()));
83: subTotal = subTotal.add(listPrice.multiply(quantity));
84: }
85: return subTotal;
86: }
87:
88: }
|