001: package com.ibatis.jpetstore.domain;
002:
003: import java.io.Serializable;
004: import java.math.BigDecimal;
005: import java.util.ArrayList;
006: import java.util.Collections;
007: import java.util.HashMap;
008: import java.util.Iterator;
009: import java.util.List;
010: import java.util.Map;
011:
012: import com.ibatis.common.util.PaginatedArrayList;
013: import com.ibatis.common.util.PaginatedList;
014:
015: public class Cart implements Serializable {
016:
017: /* Private Fields */
018:
019: private final Map itemMap = Collections
020: .synchronizedMap(new HashMap());
021:
022: private final PaginatedList itemList = new PaginatedArrayList(4);
023:
024: /* JavaBeans Properties */
025:
026: public Iterator getCartItems() {
027: return itemList.iterator();
028: }
029:
030: public PaginatedList getCartItemList() {
031: return itemList;
032: }
033:
034: public int getNumberOfItems() {
035: return itemList.size();
036: }
037:
038: /* Public Methods */
039:
040: public Iterator getAllCartItems() {
041: List allItems = new ArrayList();
042: itemList.gotoPage(0);
043: allItems.addAll(itemList);
044: while (itemList.nextPage()) {
045: allItems.addAll(itemList);
046: }
047: return allItems.iterator();
048: }
049:
050: public boolean containsItemId(String itemId) {
051: return itemMap.containsKey(itemId);
052: }
053:
054: public void addItem(Item item, boolean isInStock) {
055: CartItem cartItem = (CartItem) itemMap.get(item.getItemId());
056: if (cartItem == null) {
057: cartItem = new CartItem();
058: cartItem.setItem(item);
059: cartItem.setQuantity(0);
060: cartItem.setInStock(isInStock);
061: itemMap.put(item.getItemId(), cartItem);
062: itemList.add(cartItem);
063: }
064: cartItem.incrementQuantity();
065: }
066:
067: public Item removeItemById(String itemId) {
068: CartItem cartItem = (CartItem) itemMap.remove(itemId);
069: if (cartItem == null) {
070: return null;
071: } else {
072: itemList.remove(cartItem);
073: return cartItem.getItem();
074: }
075: }
076:
077: public void incrementQuantityByItemId(String itemId) {
078: CartItem cartItem = (CartItem) itemMap.get(itemId);
079: cartItem.incrementQuantity();
080: }
081:
082: public void setQuantityByItemId(String itemId, int quantity) {
083: CartItem cartItem = (CartItem) itemMap.get(itemId);
084: cartItem.setQuantity(quantity);
085: }
086:
087: public BigDecimal getSubTotal() {
088: BigDecimal subTotal = new BigDecimal("0");
089: Iterator items = getAllCartItems();
090: while (items.hasNext()) {
091: CartItem cartItem = (CartItem) items.next();
092: Item item = cartItem.getItem();
093: BigDecimal listPrice = item.getListPrice();
094: BigDecimal quantity = new BigDecimal(String
095: .valueOf(cartItem.getQuantity()));
096: subTotal = subTotal.add(listPrice.multiply(quantity));
097: }
098: return subTotal;
099: }
100:
101: }
|