/* Copyright 2009 Ramnivas Laddad Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ 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; } }