package org.springframework.samples.jpetstore.web.struts; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionMapping; import org.springframework.samples.jpetstore.domain.Order; public class OrderActionForm extends BaseActionForm { /* Constants */ private static final List CARD_TYPE_LIST = new ArrayList(); /* Private Fields */ private Order order; private boolean shippingAddressRequired; private boolean confirmed; private List cardTypeList; /* Static Initializer */ static { CARD_TYPE_LIST.add("Visa"); CARD_TYPE_LIST.add("MasterCard"); CARD_TYPE_LIST.add("American Express"); } /* Constructors */ public OrderActionForm() { this.order = new Order(); this.shippingAddressRequired = false; this.cardTypeList = CARD_TYPE_LIST; this.confirmed = false; } /* JavaBeans Properties */ public boolean isConfirmed() { return confirmed; } public void setConfirmed(boolean confirmed) { this.confirmed = confirmed; } public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; } public boolean isShippingAddressRequired() { return shippingAddressRequired; } public void setShippingAddressRequired(boolean shippingAddressRequired) { this.shippingAddressRequired = shippingAddressRequired; } public List getCreditCardTypes() { return cardTypeList; } /* Public Methods */ public void doValidate(ActionMapping mapping, HttpServletRequest request, List errors) { if (!this.isShippingAddressRequired()) { addErrorIfStringEmpty(errors, "FAKE (!) credit card number required.", order.getCreditCard()); addErrorIfStringEmpty(errors, "Expiry date is required.", order.getExpiryDate()); addErrorIfStringEmpty(errors, "Card type is required.", order.getCardType()); addErrorIfStringEmpty(errors, "Shipping Info: first name is required.", order.getShipToFirstName()); addErrorIfStringEmpty(errors, "Shipping Info: last name is required.", order.getShipToLastName()); addErrorIfStringEmpty(errors, "Shipping Info: address is required.", order.getShipAddress1()); addErrorIfStringEmpty(errors, "Shipping Info: city is required.", order.getShipCity()); addErrorIfStringEmpty(errors, "Shipping Info: state is required.", order.getShipState()); addErrorIfStringEmpty(errors, "Shipping Info: zip/postal code is required.", order.getShipZip()); addErrorIfStringEmpty(errors, "Shipping Info: country is required.", order.getShipCountry()); addErrorIfStringEmpty(errors, "Billing Info: first name is required.", order.getBillToFirstName()); addErrorIfStringEmpty(errors, "Billing Info: last name is required.", order.getBillToLastName()); addErrorIfStringEmpty(errors, "Billing Info: address is required.", order.getBillAddress1()); addErrorIfStringEmpty(errors, "Billing Info: city is required.", order.getBillCity()); addErrorIfStringEmpty(errors, "Billing Info: state is required.", order.getBillState()); addErrorIfStringEmpty(errors, "Billing Info: zip/postal code is required.", order.getBillZip()); addErrorIfStringEmpty(errors, "Billing Info: country is required.", order.getBillCountry()); } if (errors.size() > 0) { order.setBillAddress1(order.getShipAddress1()); order.setBillAddress2(order.getShipAddress2()); order.setBillToFirstName(order.getShipToFirstName()); order.setBillToLastName(order.getShipToLastName()); order.setBillCity(order.getShipCity()); order.setBillCountry(order.getShipCountry()); order.setBillState(order.getShipState()); order.setBillZip(order.getShipZip()); } } public void reset(ActionMapping mapping, HttpServletRequest request) { super.reset(mapping, request); shippingAddressRequired = false; } }