package cart.screenWranglers; import cart.Cart; import cart.Category; import cart.Item; import cart.ItemInventory; import cart.applicationBeans.CategoryBean; import cart.applicationBeans.ItemBean; import cart.applicationBeans.ItemCategoryBean; import cart.applicationBeans.ItemInventoryBean; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.ListIterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.servlet.ServletContext; //CartScreenWrangler //author - Lawrence Truett - FluffyCat.com //date - July 15, 2003 - San Diego, CA public class CartScreenWrangler extends BaseScreenWrangler { static final DecimalFormat decimalFormat = new DecimalFormat("0.00"); public CartScreenWrangler() {this("/cart/jsps/Cart.jsp");} public CartScreenWrangler(String nextScreenIn) { super(nextScreenIn); } public void wrangleScreen(HttpServletRequest request, ServletContext servletContext) { char action = baseNextScreenSwitch(request, servletContext); if (action != 'R') { getNextWrangler().prepFirstScreen(request, servletContext); } else { StringBuffer cartSubs = allScreens(request, servletContext); request.setAttribute("jspCart", cartSubs); jspCatAttribute(request); jspItemAttribute(request); } } void prepFirstScreen(HttpServletRequest request, ServletContext servletContext) { StringBuffer cartSubs = allScreens(request, servletContext); request.setAttribute("jspCart", cartSubs); jspCatAttribute(request); jspItemAttribute(request); } StringBuffer allScreens(HttpServletRequest request, ServletContext servletContext) { ItemBean itemBean = (ItemBean)servletContext.getAttribute("itemBean"); ItemInventoryBean itemInventoryBean = (ItemInventoryBean)servletContext.getAttribute( "itemInventoryBean"); StringBuffer cartSubs = new StringBuffer(); Cart cart = (Cart)(request.getSession().getAttribute("cart")); if (null == cart) { cart = new Cart(itemInventoryBean); request.getSession().setAttribute("cart", cart); } char subAction; String stringSubAction = request.getParameter("subaction"); if (null == stringSubAction) { subAction = ' '; } else { subAction = stringSubAction.charAt(0); } String stringItem = request.getParameter("item"); if (stringItem == null) {stringItem = "0";} long longItem = Long.parseLong(stringItem); long amount = 0; String stringAmount = request.getParameter("amount"); if (null != stringAmount) { amount = new Long(stringAmount).longValue(); } if (subAction == 'A') { Item item = itemBean.getItem(longItem); long reserved = cart.reserve(item, amount); if (reserved == amount) { cartSubs.append("item " + item.getDescription() + " reserved"); } else { if (reserved > 0) { cartSubs.append("only " + reserved + " of item " + item.getDescription() + " reserved"); } else { cartSubs.append("
item " + item.getDescription() + " not reserved"); } } } if (subAction == 'R') { Item item = itemBean.getItem(longItem); boolean removed = cart.removeItem(item); if (removed) { cartSubs.append("
item " + item.getDescription() + " removed"); } else { cartSubs.append("
item " + item.getDescription() + " not removed"); } } Object items[] = cart.getItemArray(); for (int i = 0; items.length > i; i++) { cartSubs.append(""); Item item = (Item)items[i]; long itemKey = item.getKey(); cartSubs.append("Key: " + itemKey); cartSubs.append("Price: " + decimalFormat.format(item.getPrice())); cartSubs.append("Description: " + item.getDescription()); cartSubs.append("Type: " + item.getItemType()); long amountInCart = cart.getItemQuantity(item); cartSubs.append("Amount of " + item.getDescription() + " in Cart: " + amountInCart); cartSubs.append("
Total for item " + item.getDescription() + " in Cart: " + decimalFormat.format(cart.getItemTotal(item))); if (item.getHasInventory()) { ItemInventory itemInventory = itemInventoryBean.getItemInventory(itemKey); long inventory = itemInventory.getInventory(); long reserved = itemInventory.getReserved(); cartSubs.append( "
Total Item Inventory: " + inventory); cartSubs.append( "
Total Item Reserved: " + reserved); if ((inventory - reserved) > 0) { cartSubs.append("Add One More To Cart"); } else { cartSubs.append("
Item is out of Stock"); } } else { cartSubs.append("
Total Item Inventory: NA"); cartSubs.append("
Total Item Reserved: NA"); if (!item.getOnePerCart()) { cartSubs.append("Add One More To Cart"); } else if ((amountInCart < 1) && (item.getOnePerCart())) { cartSubs.append("Add To Cart"); } } if (amountInCart > 0) { if (item.getOnePerCart()) { cartSubs.append("Remove From Cart"); } else { cartSubs.append("Remove One From Cart"); cartSubs.append("Remove All From Cart"); } } cartSubs.append("<"+"br>"); cartSubs.append("<"+"img src=\"\\cart\\images\\"); cartSubs.append(item.getLargeGraphic()); cartSubs.append("\" width=\"200\">"); } cartSubs.append("

Cart Total: " + decimalFormat.format(cart.getCartTotal())); return cartSubs; } }