package dbj.odmg; import java.util.Date; import java.util.Enumeration; import COM.POET.odmg.collection.*; public class BookOrder { public final static int OPEN = 1; public final static int DELIVERED = 2; double price_; Date date_; ListOfObject items_; int status_; Customer customer_; public BookOrder () { price_ = 0.0; date_ = new Date (); items_ = new ListOfObject (); status_ = OPEN; customer_ = null; } public void addItem (Book b, int n) { items_.add (new OrderItem (b, n)); } public void setCustomer (Customer cust) { customer_ = cust; } public Date getDate () { return date_; } public int getStatus () { return status_; } public Enumeration getItems () { return items_.elements (); } public boolean deliver () { Enumeration e; e = getItems (); while (e.hasMoreElements ()) { OrderItem item = (OrderItem) e.nextElement (); if (! item.isAvailable ()) return false; } calculatePrice (); e = getItems (); while (e.hasMoreElements ()) { OrderItem item = (OrderItem) e.nextElement (); item.book.reduceStock (item.num); } status_ = DELIVERED; return true; } private void calculatePrice () { price_ = 0.0; Enumeration e = getItems (); while (e.hasMoreElements ()) { OrderItem item = (OrderItem) e.nextElement (); price_ += item.getPrice (); } } public String toString () { StringBuffer buf = new StringBuffer (); buf.append ("Order from " + date_ + ":\n"); Enumeration e = getItems (); while (e.hasMoreElements ()) { OrderItem item = (OrderItem) e.nextElement (); buf.append (item.num + " " + item.book); } buf.append ("price = " + price_ + "\n"); return buf.toString (); } }