/* * AddCakesToOrder.java * * Created on 13 December 2006, 13:50 */ package jgibb16.cbcc.actions.customers; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import jgibb16.cbcc.model.Order; import jgibb16.cbcc.model.ProductQuantityDescriptor; import jgibb16.cbcc.model.StockList; import jgibb16.cbcc.model.product.ProductInterface; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import org.apache.struts.validator.DynaValidatorForm; /** * * @author Jonno * @version */ public class AddCakesToOrder extends Action { /** * This is the action called from the Struts framework. * @param mapping The ActionMapping used to select this instance. * @param form The optional ActionForm bean for this request. * @param request The HTTP Request we are processing. * @param response The HTTP Response we are processing. * @throws java.lang.Exception * @return */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // create action errors incase login fails ActionMessages errors = new ActionMessages(); HttpSession session = request.getSession(); Order order = (Order) session.getAttribute("order"); DynaValidatorForm theForm = (DynaValidatorForm) form; int[] quantities = (int[]) theForm.get("quantity"); List stock; if(theForm.get("type").equals("cakes")) { stock = ((StockList)this.getServlet().getServletContext().getAttribute("stockList")).getCakes(); } else { stock = ((StockList)this.getServlet().getServletContext().getAttribute("stockList")).getAles(); } boolean hasErrors = false; // check all quantities are within stock levels for(int i=0; i 0) { if(quantities[i] > descriptor.getQuantity()) { errors.add("qtyToHigh", new ActionMessage("order.qtyToHigh")); hasErrors = true; break; } } } if(hasErrors) { saveErrors(request,errors); return mapping.findForward("error"); } // loop to add lines to order for(int i=0; i 0) { order.addLine(tmpProduct.getProductID(), quantities[i]); descriptor.setQuantity(descriptor.getQuantity()-quantities[i]); } } return mapping.findForward("success"); } }