📄 requesttoeventtranslator.java
字号:
package apusic.myshop.control.web;import java.util.HashMap;import java.util.ArrayList;import java.util.Iterator;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import apusic.myshop.control.EventException;import apusic.myshop.control.event.BaseEvent;import apusic.myshop.control.event.LoginEvent;import apusic.myshop.control.event.LogoutEvent;import apusic.myshop.control.event.CartEvent;import apusic.myshop.control.event.CustomerEvent;import apusic.myshop.control.event.DBLoginEvent;import apusic.myshop.control.event.OrderEvent;import apusic.myshop.util.Debug;import apusic.myshop.control.web.PathNames;import apusic.myshop.util.Calendar;import apusic.myshop.util.CreditCard;import apusic.myshop.util.ContactInfo;import apusic.myshop.util.WebKeys;import apusic.myshop.customer.model.CustomerModel;import apusic.myshop.util.JSPUtil;import apusic.myshop.cart.model.CartModel;//将客户端的请求转换成事件REQUEST————》EVENTpublic class RequestToEventTranslator { private RequestProcessor sessionClientController; private ModelManager mm; public RequestToEventTranslator(RequestProcessor sessionClientController, ModelManager mm) { this.sessionClientController = sessionClientController; this.mm = mm; } public BaseEvent processRequest(HttpServletRequest req) throws EventException, MissingFormDataException { // Process the request and get the necessary event depending on the URL String selectedUrl = req.getPathInfo(); BaseEvent event = null; if (selectedUrl == null) { // do nothing. show the default screen. return null; } else if (selectedUrl.equals(PathNames.CATALOG_URL)) { //event = createCatalogEvent(req); } else if (selectedUrl.equals(PathNames.CART_URL)) { mm.getCartModel(); event = createCartEvent(req); } else if (selectedUrl.equals(PathNames.LOGOUT_URL)) { event = new LogoutEvent(); } else if (selectedUrl.equals(PathNames.VERIFY_LOGIN_URL)) { event = createDBLoginEvent(req); } else if (selectedUrl.equals(PathNames.VALIDATE_NEW_CUSTOMER_URL)) { event = createCustomerEvent(req); } else if (selectedUrl.equals(PathNames.COMMIT_ORDER_URL)) { event = createOrderEvent(req); } else if (selectedUrl.equals(PathNames.VALIDATE_BILLING_INFORMATION_URL)) { getBillingInformation(req); } else if (selectedUrl.equals(PathNames.VALIDATE_SHIPPING_INFORMATION_URL)) { extractShippingInformation(req); } return event; }//事件1 public BaseEvent createLoginEvent(HttpServletRequest request) { return new LoginEvent(); }//事件2 public DBLoginEvent createDBLoginEvent(HttpServletRequest request) throws MissingFormDataException{ Debug.println("login through db "); ArrayList missingFields = null; DBLoginEvent event = new DBLoginEvent(); String userId = request.getParameter("userId").trim(); if (userId.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("用户账号"); } String password = request.getParameter("password").trim(); if (password.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("密码"); } if (missingFields != null) { throw new MissingFormDataException("漏输账号信息", missingFields); } event.setInfo(userId, password); return event; } //事件3 public CustomerEvent createCustomerEvent(HttpServletRequest request) throws MissingFormDataException { Debug.println("Creating new Customer"); ArrayList missingFields = null; CustomerEvent event = new CustomerEvent(); String userId = request.getParameter("userId").trim(); if (userId.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("用户账号"); } String password = request.getParameter("password").trim(); if (password.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("密码"); } String name = request.getParameter("name").trim(); if (name.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("姓名"); } String sex = request.getParameter("sex").trim(); String company = request.getParameter("company").trim(); if (company.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("单位"); } String cid = request.getParameter("cid").trim(); if (cid.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("身份证号码"); } String address = request.getParameter("address").trim(); if (address.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("详细地址"); } String province = request.getParameter("province").trim(); if (province.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("省份"); } String city = request.getParameter("city").trim(); if (city.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("城市"); } String zip = request.getParameter("zip").trim(); if (zip.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("邮政编码"); } String phone = request.getParameter("phone").trim(); if (phone.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("联系电话"); } String email = request.getParameter("email").trim(); if (email.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("E-Mail 地址"); } java.sql.Date regDate = new java.sql.Date((new java.util.Date()).getTime()); if (missingFields != null) { throw new MissingFormDataException("漏输客户信息", missingFields); } event.setInfo(userId, password, name, sex, company, cid, address, province, city, zip, phone, email, regDate ); return event; }//事件4 private CartEvent createCartEvent(HttpServletRequest request) { Debug.println("Started Create Cart Event"); String action = request.getParameter("action"); if (action == null) { return null; } else if (action.equals("purchaseItem")) { return createPurchaseItemEvent(request); } else if (action.equals("removeItem")) { return createRemoveItemEvent(request); } else if (action.equals("updateCart")) { return createUpdateCartEvent(request); } return null; }//事件5 private CartEvent createPurchaseItemEvent(HttpServletRequest request) { Debug.println("Started Purchase Action"); CartEvent event = null; try { // get the id number from the parameter String id = request.getParameter("itemId").trim(); ArrayList itemIds = new ArrayList(); itemIds.add(id); event = new CartEvent(CartEvent.ADD_ITEM, itemIds); } catch(Exception e) { Debug.print(e); } return event; }//事件6 private CartEvent createRemoveItemEvent(HttpServletRequest request) { Debug.println("Started Remove Action"); CartEvent event = null; try { // get the id number from the parameter String id = request.getParameter("itemId").trim(); ArrayList itemIds = new ArrayList(); itemIds.add(id); event = new CartEvent(CartEvent.DELETE_ITEM, itemIds); } catch(Exception e) { Debug.print(e); } return event; }//事件7 private CartEvent createUpdateCartEvent(HttpServletRequest request) { CartEvent event = null; HashMap quantities = new HashMap(); ArrayList itemIds = new ArrayList(); Debug.println("RequestToEventTranslator: Updating Cart Item quantities"); Enumeration enum = request.getParameterNames(); while ((enum != null) && enum.hasMoreElements()) { String param = ((String)enum.nextElement()).trim(); if ((param != null) && param.startsWith("itemQuantity_")) { try{ // get the item id number from the parameter String id = param.substring("itemQuantity_".length(), param.length()); Integer quantity = new Integer(0); if (id != null) { // remove image map info from the parameter if (id.lastIndexOf(".") != -1) { id = id.substring(0, id.lastIndexOf(".")); } try { quantity= Integer.valueOf(request.getParameter(param)); itemIds.add(id); quantities.put(id, quantity); } catch (NumberFormatException ex) { // if the user uses something other than numbers leave as is } event = new CartEvent(CartEvent.UPDATE_ITEM, itemIds, quantities); } } catch(Exception e) { Debug.print(e); } } } return event; } private void getBillingInformation(HttpServletRequest request) throws MissingFormDataException { Debug.println("Getting Billing Information"); ArrayList missingFields = null; String monthString = request.getParameter("expiration_month"); if (monthString.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("Credit Card Month"); } int month = Integer.parseInt(monthString); String yearString = request.getParameter("expiration_year"); if (yearString.equals("")){ if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("Credit Card Year"); } int year = Integer.parseInt(yearString); Calendar expiryDate = Calendar.getInstance(); // months in Calendar start at 0 and not one expiryDate.set(Calendar.MONTH, month-1); expiryDate.set(Calendar.YEAR, year); String cardType = request.getParameter("credit_card_type").trim(); if (cardType.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("信用卡类别"); } String cardNo = request.getParameter("credit_card_number").trim(); if (cardNo.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("卡号"); } if (missingFields != null) { throw new MissingFormDataException("漏输信用卡信息", missingFields); } HttpSession session = request.getSession(); CreditCard card = new CreditCard(cardNo, cardType, expiryDate); session.setAttribute(WebKeys.CreditCardKey, card); // get billing address ContactInfo billingContactInfo = extractContactInfo(request); session.setAttribute(WebKeys.BillingContactInfoKey, billingContactInfo); // copy shipping address if the same as billing address if (request.getParameter("ship_to_billing_address") != null) { session.setAttribute(WebKeys.ShippingContactInfoKey, billingContactInfo); session.setAttribute(WebKeys.ShippingAddressRequiredKey, "false"); } else { session.setAttribute(WebKeys.ShippingAddressRequiredKey, "true"); } Debug.println("<<<get bill info end."); } private void extractShippingInformation(HttpServletRequest request) throws MissingFormDataException { Debug.println("Extracting Shipping Information"); request.getSession().setAttribute(WebKeys.ShippingContactInfoKey, extractContactInfo(request)); } // parse address form and generate a ContactInformation object private ContactInfo extractContactInfo(HttpServletRequest request) throws MissingFormDataException { ArrayList missingFields = null; String name = request.getParameter("name").trim(); if (name.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("姓名"); } String phone = request.getParameter("phone").trim(); if (phone.equals("")){ if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("电话号码"); } String email = request.getParameter("email"); String address = request.getParameter("address").trim(); if (address.equals("")){ if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("详细地址"); } String province = request.getParameter("province").trim(); if (province.equals("")) { if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("省份"); } String city = request.getParameter("city").trim(); if (city.equals("")){ if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("所在城市"); } String zip = request.getParameter("zip").trim(); if (zip.equals("")){ if (missingFields == null) { missingFields = new ArrayList(); } missingFields.add("邮政编码"); } String country = request.getParameter("country"); if (missingFields != null) { throw new MissingFormDataException("漏输地址信息", missingFields); } return new ContactInfo(name, phone, email, address, province, city, zip, country); }//事件8 private OrderEvent createOrderEvent(HttpServletRequest request) { Debug.println("Creating Order Event"); CustomerModel customer = mm.getCustomerModel(); int requestId = JSPUtil.getEventId(); CartModel cart = mm.getCartModel(); OrderEvent oe = new OrderEvent(); HttpSession session = request.getSession(); ContactInfo shippingInfo = (ContactInfo) session.getAttribute(WebKeys.ShippingContactInfoKey); ContactInfo billingInfo = (ContactInfo) session.getAttribute(WebKeys.BillingContactInfoKey); //String carrier = (String) session.getAttribute(WebKeys.CarrierKey); String userId = (String) session.getAttribute(WebKeys.UserIdKey); CreditCard creditCard = (CreditCard) session.getAttribute(WebKeys.CreditCardKey); oe.setInfo(requestId, userId, shippingInfo.getName(), shippingInfo.getAddress(), shippingInfo.getProvince(), shippingInfo.getCity(), shippingInfo.getZip(), shippingInfo.getCountry(), billingInfo.getName(), billingInfo.getAddress(), billingInfo.getProvince(), billingInfo.getCity(), billingInfo.getZip(), billingInfo.getCountry(), creditCard); // set up the request id attribute so that the pages can // create orderwebimpl correctly. request.setAttribute(WebKeys.RequestIdKey, new Integer(requestId)); return oe; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -