package com.sun.j2ee.blueprints.petstore.controller.web.actions;
import java.io.IOException;
import java.util.Hashtable;
import java.util.Locale;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;
import com.sun.j2ee.blueprints.waf.event.Event;
import com.sun.j2ee.blueprints.waf.event.EventResponse;
import com.sun.j2ee.blueprints.waf.controller.web.action.HTMLActionSupport;
import com.sun.j2ee.blueprints.waf.controller.web.action.HTMLActionException;
import com.sun.j2ee.blueprints.contactinfo.ejb.ContactInfo;
import com.sun.j2ee.blueprints.address.ejb.Address;
import com.sun.j2ee.blueprints.creditcard.ejb.CreditCard;
import com.sun.j2ee.blueprints.petstore.util.PetstoreKeys;
import com.sun.j2ee.blueprints.petstore.controller.events.OrderEvent;
import com.sun.j2ee.blueprints.petstore.controller.web.exceptions.MissingFormDataException;
public final class OrderHTMLAction extends HTMLActionSupport {
public Event perform(HttpServletRequest request)
throws HTMLActionException {
ContactInfo shipper = extractContactInfo(request, "_a");
ContactInfo receiver = extractContactInfo(request, "_b");
CreditCard creditCard = new CreditCard( "1234-2334", "Duke Express", "10/2001") ;
return new OrderEvent(shipper,receiver,creditCard);
}
private ContactInfo extractContactInfo(HttpServletRequest request, String suffix)
throws HTMLActionException {
ArrayList missingFields = null;
String familyName = request.getParameter("family_name" +suffix).trim();
if (familyName.equals("")) {
if (missingFields == null) {
missingFields = new ArrayList();
}
missingFields.add("Last Name");
}
String givenName = request.getParameter("given_name" +suffix).trim();
if (givenName.equals("")) {
if (missingFields == null) {
missingFields = new ArrayList();
}
missingFields.add("First Name");
}
String address1 = request.getParameter("address_1" +suffix).trim();
if (address1.equals("")){
if (missingFields == null) {
missingFields = new ArrayList();
}
missingFields.add("Street Address");
}
String address2 = request.getParameter("address_2" +suffix).trim();
if (address2.equals("")) {
address2 = null;
}
String city = request.getParameter("city" +suffix).trim();
if (city.equals("")){
if (missingFields == null) {
missingFields = new ArrayList();
}
missingFields.add("City");
}
String stateOrProvince = request.getParameter("state_or_province" +suffix).trim();
if (stateOrProvince.equals("")) {
if (missingFields == null) {
missingFields = new ArrayList();
}
missingFields.add("State or Province" +suffix);
}
String postalCode = request.getParameter("postal_code" +suffix).trim();
if (postalCode.equals("")){
if (missingFields == null) {
missingFields = new ArrayList();
}
missingFields.add("Postal Code");
}
String country = request.getParameter("country" + suffix).trim();
String telephone = request.getParameter("telephone_number" +suffix).trim();
if (telephone.equals("")){
if (missingFields == null) {
missingFields = new ArrayList();
}
missingFields.add("Telephone Number");
}
String email = null;
if (request.getParameter("email" +suffix) != null) {
email = request.getParameter("email" +suffix).trim();
}
if (missingFields != null) {
MissingFormDataException ex = new MissingFormDataException("Missing Address Data", missingFields);
request.setAttribute(PetstoreKeys.MISSING_FORM_DATA_EXCEPTION_KEY, ex);
return null;
}
Address address = new Address(address1, address2, city, stateOrProvince, postalCode, country);
return new ContactInfo(familyName, givenName, address, email, telephone);
}
public void doEnd(HttpServletRequest request, EventResponse eventResponse) {
request.setAttribute(PetstoreKeys.ORDER_RESPONSE, eventResponse);
}
}