www.pudn.com > bookstore2.rar > ShoppingCart.java


/* 
 * Copyright (c) 2005 Sun Microsystems, Inc.  All rights reserved.  U.S. 
 * Government Rights - Commercial software.  Government users are subject 
 * to the Sun Microsystems, Inc. standard license agreement and 
 * applicable provisions of the FAR and its supplements.  Use is subject 
 * to license terms. 
 * 
 * This distribution may include materials developed by third parties. 
 * Sun, Sun Microsystems, the Sun logo, Java and J2EE are trademarks 
 * or registered trademarks of Sun Microsystems, Inc. in the U.S. and 
 * other countries. 
 * 
 * Copyright (c) 2005 Sun Microsystems, Inc. Tous droits reserves. 
 * 
 * Droits du gouvernement americain, utilisateurs gouvernementaux - logiciel 
 * commercial. Les utilisateurs gouvernementaux sont soumis au contrat de 
 * licence standard de Sun Microsystems, Inc., ainsi qu'aux dispositions 
 * en vigueur de la FAR (Federal Acquisition Regulations) et des 
 * supplements a celles-ci.  Distribue par des licences qui en 
 * restreignent l'utilisation. 
 * 
 * Cette distribution peut comprendre des composants developpes par des 
 * tierces parties. Sun, Sun Microsystems, le logo Sun, Java et J2EE 
 * sont des marques de fabrique ou des marques deposees de Sun 
 * Microsystems, Inc. aux Etats-Unis et dans d'autres pays. 
 */ 
 
 
package cart; 
 
import java.util.*; 
import database.BookDetails; 
 
 
public class ShoppingCart { 
    HashMap items = null; 
    int numberOfItems = 0; 
 
    public ShoppingCart() { 
        items = new HashMap(); 
    } 
 
    public synchronized void add(String bookId, BookDetails book) { 
        if (items.containsKey(bookId)) { 
            ShoppingCartItem scitem = (ShoppingCartItem) items.get(bookId); 
            scitem.incrementQuantity(); 
            System.out.println("in add, quantity is " + scitem.getQuantity()); 
        } else { 
            ShoppingCartItem newItem = new ShoppingCartItem(book); 
            items.put(bookId, newItem); 
            System.out.println("in add, quantity is " + newItem.getQuantity()); 
        } 
 
        //      numberOfItems++; 
    } 
 
    public synchronized void remove(String bookId) { 
        if (items.containsKey(bookId)) { 
            ShoppingCartItem scitem = (ShoppingCartItem) items.get(bookId); 
            scitem.decrementQuantity(); 
 
            if (scitem.getQuantity() <= 0) { 
                items.remove(bookId); 
            } 
 
            numberOfItems--; 
        } 
    } 
 
    public synchronized List getItems() { 
        List results = new ArrayList(); 
        results.addAll(this.items.values()); 
 
        return results; 
    } 
 
    protected void finalize() throws Throwable { 
        items.clear(); 
    } 
 
    public synchronized int getNumberOfItems() { 
        numberOfItems = 0; 
 
        for (Iterator i = getItems() 
                              .iterator(); i.hasNext();) { 
            ShoppingCartItem item = (ShoppingCartItem) i.next(); 
            numberOfItems += item.getQuantity(); 
            System.out.println("number of items is " + numberOfItems); 
        } 
 
        return numberOfItems; 
    } 
 
    public synchronized double getTotal() { 
        double amount = 0.0; 
 
        for (Iterator i = getItems() 
                              .iterator(); i.hasNext();) { 
            ShoppingCartItem item = (ShoppingCartItem) i.next(); 
            BookDetails bookDetails = (BookDetails) item.getItem(); 
 
            amount += (item.getQuantity() * bookDetails.getPrice()); 
        } 
 
        return roundOff(amount); 
    } 
 
    private double roundOff(double x) { 
        long val = Math.round(x * 100); // cents 
 
        return val / 100.0; 
    } 
 
    public synchronized void clear() { 
        System.err.println("Clearing cart."); 
        items.clear(); 
        numberOfItems = 0; 
    } 
}