View Javadoc

1   /*
2    * Copyright 2000-2004 The Apache Software Foundation.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package com.ibatis.jpetstore.domain;
17  
18  import com.ibatis.common.util.PaginatedArrayList;
19  import com.ibatis.common.util.PaginatedList;
20  
21  import java.io.Serializable;
22  import java.math.BigDecimal;
23  import java.util.*;
24  
25  public class Cart implements Serializable {
26  
27    /* Private Fields */
28  
29    private final Map itemMap = Collections.synchronizedMap(new HashMap());
30    private final PaginatedList itemList = new PaginatedArrayList(4);
31  
32    /* JavaBeans Properties */
33  
34    public Iterator getCartItems() {
35      return itemList.iterator();
36    }
37  
38    public PaginatedList getCartItemList() {
39      return itemList;
40    }
41  
42    public int getNumberOfItems() {
43      return itemList.size();
44    }
45  
46    /* Public Methods */
47  
48    public Iterator getAllCartItems() {
49      List allItems = new ArrayList();
50      itemList.gotoPage(0);
51      allItems.addAll(itemList);
52      while (itemList.nextPage()) {
53        allItems.addAll(itemList);
54      }
55      return allItems.iterator();
56    }
57  
58    public boolean containsItemId(String itemId) {
59      return itemMap.containsKey(itemId);
60    }
61  
62    public void addItem(Item item, boolean isInStock) {
63      CartItem cartItem = (CartItem) itemMap.get(item.getItemId());
64      if (cartItem == null) {
65        cartItem = new CartItem();
66        cartItem.setItem(item);
67        cartItem.setQuantity(0);
68        cartItem.setInStock(isInStock);
69        itemMap.put(item.getItemId(), cartItem);
70        itemList.add(cartItem);
71      }
72      cartItem.incrementQuantity();
73    }
74  
75  
76    public Item removeItemById(String itemId) {
77      CartItem cartItem = (CartItem) itemMap.remove(itemId);
78      if (cartItem == null) {
79        return null;
80      } else {
81        itemList.remove(cartItem);
82        return cartItem.getItem();
83      }
84    }
85  
86    public void incrementQuantityByItemId(String itemId) {
87      CartItem cartItem = (CartItem) itemMap.get(itemId);
88      cartItem.incrementQuantity();
89    }
90  
91    public void setQuantityByItemId(String itemId, int quantity) {
92      CartItem cartItem = (CartItem) itemMap.get(itemId);
93      cartItem.setQuantity(quantity);
94    }
95  
96    public BigDecimal getSubTotal() {
97      BigDecimal subTotal = new BigDecimal("0");
98      Iterator items = getAllCartItems();
99      while (items.hasNext()) {
100       CartItem cartItem = (CartItem) items.next();
101       Item item = cartItem.getItem();
102       BigDecimal listPrice = item.getListPrice();
103       BigDecimal quantity = new BigDecimal(String.valueOf(cartItem.getQuantity()));
104       subTotal = subTotal.add(listPrice.multiply(quantity));
105     }
106     return subTotal;
107   }
108 
109 }