KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > samples > jpetstore > web > spring > OrderFormController


1 package org.springframework.samples.jpetstore.web.spring;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.HashMap JavaDoc;
5 import java.util.List JavaDoc;
6 import java.util.Map JavaDoc;
7
8 import javax.servlet.http.HttpServletRequest JavaDoc;
9 import javax.servlet.http.HttpServletResponse JavaDoc;
10
11 import org.springframework.samples.jpetstore.domain.Account;
12 import org.springframework.samples.jpetstore.domain.Cart;
13 import org.springframework.samples.jpetstore.domain.logic.OrderValidator;
14 import org.springframework.samples.jpetstore.domain.logic.PetStoreFacade;
15 import org.springframework.validation.BindException;
16 import org.springframework.validation.Errors;
17 import org.springframework.web.servlet.ModelAndView;
18 import org.springframework.web.servlet.ModelAndViewDefiningException;
19 import org.springframework.web.servlet.mvc.AbstractWizardFormController;
20
21 /**
22  * @author Juergen Hoeller
23  * @since 01.12.2003
24  */

25 public class OrderFormController extends AbstractWizardFormController {
26
27     private PetStoreFacade petStore;
28
29     public OrderFormController() {
30         setCommandName("orderForm");
31         setPages(new String JavaDoc[] {"NewOrderForm", "ShippingForm", "ConfirmOrder"});
32     }
33
34     public void setPetStore(PetStoreFacade petStore) {
35         this.petStore = petStore;
36     }
37
38     protected Object JavaDoc formBackingObject(HttpServletRequest JavaDoc request) throws ModelAndViewDefiningException {
39         UserSession userSession = (UserSession) request.getSession().getAttribute("userSession");
40         Cart cart = (Cart) request.getSession().getAttribute("sessionCart");
41         if (cart != null) {
42             // Re-read account from DB at team's request.
43
Account account = this.petStore.getAccount(userSession.getAccount().getUsername());
44             OrderForm orderForm = new OrderForm();
45             orderForm.getOrder().initOrder(account, cart);
46             return orderForm;
47         }
48         else {
49             ModelAndView modelAndView = new ModelAndView("Error");
50             modelAndView.addObject("message", "An order could not be created because a cart could not be found.");
51             throw new ModelAndViewDefiningException(modelAndView);
52         }
53     }
54
55     protected void onBindAndValidate(HttpServletRequest JavaDoc request, Object JavaDoc command, BindException errors, int page) {
56         if (page == 0 && request.getParameter("shippingAddressRequired") == null) {
57             OrderForm orderForm = (OrderForm) command;
58             orderForm.setShippingAddressRequired(false);
59         }
60     }
61
62     protected Map JavaDoc referenceData(HttpServletRequest JavaDoc request, int page) {
63         if (page == 0) {
64             List JavaDoc creditCardTypes = new ArrayList JavaDoc();
65             creditCardTypes.add("Visa");
66             creditCardTypes.add("MasterCard");
67             creditCardTypes.add("American Express");
68             Map JavaDoc model = new HashMap JavaDoc();
69             model.put("creditCardTypes", creditCardTypes);
70             return model;
71         }
72         return null;
73     }
74
75     protected int getTargetPage(HttpServletRequest JavaDoc request, Object JavaDoc command, Errors errors, int currentPage) {
76         OrderForm orderForm = (OrderForm) command;
77         if (currentPage == 0 && orderForm.isShippingAddressRequired()) {
78             return 1;
79         }
80         else {
81             return 2;
82         }
83     }
84
85     protected void validatePage(Object JavaDoc command, Errors errors, int page) {
86         OrderForm orderForm = (OrderForm) command;
87         OrderValidator orderValidator = (OrderValidator) getValidator();
88         errors.setNestedPath("order");
89         switch (page) {
90             case 0:
91                 orderValidator.validateCreditCard(orderForm.getOrder(), errors);
92                 orderValidator.validateBillingAddress(orderForm.getOrder(), errors);
93                 break;
94             case 1:
95                 orderValidator.validateShippingAddress(orderForm.getOrder(), errors);
96         }
97         errors.setNestedPath("");
98     }
99
100     protected ModelAndView processFinish(
101             HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response, Object JavaDoc command, BindException errors) {
102         OrderForm orderForm = (OrderForm) command;
103         this.petStore.insertOrder(orderForm.getOrder());
104         request.getSession().removeAttribute("sessionCart");
105         Map JavaDoc model = new HashMap JavaDoc();
106         model.put("order", orderForm.getOrder());
107         model.put("message", "Thank you, your order has been submitted.");
108         return new ModelAndView("ViewOrder", model);
109     }
110
111 }
112
Popular Tags