com.softslate.commerce.customer.order
Class CheckoutAction

java.lang.Object
  extended byorg.apache.struts.action.Action
      extended bycom.softslate.commerce.customer.core.BaseAction
          extended bycom.softslate.commerce.customer.order.CheckoutAction
Direct Known Subclasses:
CheckoutAddressesAction, CheckoutAddressesFormAction, CheckoutComboAction, CheckoutComboFormAction, CheckoutConfirmAction, CheckoutDeclineLoginAction, CheckoutLoginAction, CheckoutLoginFormAction, CheckoutPaymentFormAction, CheckoutRegisterAction, CheckoutRegisterFormAction, OrderFormAction, OrderProcessAction

public class CheckoutAction
extends BaseAction

Struts action class that corresponds to the store's checkout link. Used for requests to "/Checkout.do" and as a superclass for all of the other action classes in the checkout process.

The execute method of this class decides what checkout screen to direct the user to based on the status of the session and the store's database configuration.

The idea behind CheckoutAction is to provide a single superclass that manages nearly all of the forms and processing for the checkout process. This allows developers to easily create custom checkout screens by extending CheckoutAction, using its methods in different combinations.

Author:
David Tobey

Field Summary
(package private) static org.apache.commons.logging.Log log
           
 
Fields inherited from class org.apache.struts.action.Action
defaultLocale, servlet
 
Constructor Summary
CheckoutAction()
           
 
Method Summary
 org.apache.struts.action.ActionForward execute(org.apache.struts.action.ActionMapping mapping, org.apache.struts.action.ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          Forwards the user to the appropriate checkout screen based on the status of the session and the store's database settings.
 java.lang.String findCheckoutScreen(BaseForm baseForm)
          Determines what checkout screen to direct the user to based on the status of the session and the store's database configuration.
 java.util.Collection loadShippingOptions(BaseForm baseForm)
          Loads the active shipping options for display to the user.
 void prepareCheckoutAddressesForm(CheckoutAddressesForm baseForm)
          Initializes an instance of CheckoutAddressesForm with address and shipping option information.
 void prepareLoginForm(BaseForm baseForm)
          Initializes an instance of LoginForm and populates it from request parameters.
 void preparePaymentForm(org.apache.struts.action.ActionForm paymentForm, BaseForm baseForm)
          Prepares a given payment form by populating its properties from the request's parameters.
 void preparePaymentForms(BaseForm baseForm)
          Creates payment form instances and populates them from the request parameters.
 void prepareRegisterForm(BaseForm baseForm)
          Initializes an instance of RegisterForm and populates it from request parameters.
 org.apache.struts.action.ActionForward processCheckoutAddresses(BaseForm baseForm)
          Processes submissions to record addresses and shipping options in the current user's cart.
 org.apache.struts.action.ActionForward processCheckoutConfirm(BaseForm baseForm)
          Processes a request to confirm an order.
 org.apache.struts.action.ActionForward processCheckoutLogin(BaseForm baseForm)
          Processes a login request during the checkout process.
 org.apache.struts.action.ActionForward processCheckoutPayment(BaseForm baseForm)
          Processes submissions of payment information by the current user.
 org.apache.struts.action.ActionForward processCheckoutRegister(BaseForm baseForm)
          Processes a request to register a new customer account during the checkout process.
 org.apache.struts.action.ActionForward processDeclineLogin(BaseForm baseForm)
          Processes a request to continue the checkout process without logging in or creating an account.
 void processOrderComplete(BaseForm baseForm)
          Invoked when a order has just been completed.
 int processPayment(PaymentProcessor paymentProcessor, org.apache.struts.action.ActionForm paymentForm, BaseForm baseForm)
          Processes payment information for a request with a given payment processor.
 java.util.Map processShipping(BaseForm baseForm)
          Processes shipping charges for the current user's cart.
 java.util.Map processTax(BaseForm baseForm)
          Processes tax charges for the current user's cart.
 void sendInvoiceEmail(BaseForm baseForm)
          Sends a copy of the invoice for an order that was just completed to the user.
 void sendNotificationEmail(BaseForm baseForm)
          Sends a notification email for an order that was just completed to the store administrator.
 boolean validateBillingFields(BaseForm baseForm)
          Validates the required billing address fields in the user's cart.
 boolean validateDeliveryFields(BaseForm baseForm)
          Validates the required delivery address fields in the user's cart.
 boolean validatePaymentForm(org.apache.struts.action.ActionForm paymentForm, BaseForm baseForm)
          Validates a given payment form for a given request.
 
Methods inherited from class org.apache.struts.action.Action
addErrors, addMessages, execute, generateToken, getDataSource, getDataSource, getErrors, getLocale, getMessages, getResources, getResources, getServlet, isCancelled, isTokenValid, isTokenValid, resetToken, saveErrors, saveErrors, saveMessages, saveMessages, saveToken, setLocale, setServlet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

static org.apache.commons.logging.Log log
Constructor Detail

CheckoutAction

public CheckoutAction()
Method Detail

execute

public org.apache.struts.action.ActionForward execute(org.apache.struts.action.ActionMapping mapping,
                                                      org.apache.struts.action.ActionForm form,
                                                      javax.servlet.http.HttpServletRequest request,
                                                      javax.servlet.http.HttpServletResponse response)
                                               throws java.lang.Exception
Forwards the user to the appropriate checkout screen based on the status of the session and the store's database settings.

Throws:
java.lang.Exception

findCheckoutScreen

public java.lang.String findCheckoutScreen(BaseForm baseForm)
                                    throws java.lang.Exception
Determines what checkout screen to direct the user to based on the status of the session and the store's database configuration. The possible screen names returned are:

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
A string identifying the name of the checkout screen to direct the user to.
Throws:
java.lang.Exception

prepareCheckoutAddressesForm

public void prepareCheckoutAddressesForm(CheckoutAddressesForm baseForm)
                                  throws java.lang.Exception
Initializes an instance of CheckoutAddressesForm with address and shipping option information. Used on the checkout addresses screen. If the current user is a logged in customer, populates the form with the account's address information.

Parameters:
baseForm -
Throws:
java.lang.Exception

validateBillingFields

public boolean validateBillingFields(BaseForm baseForm)
                              throws java.lang.Exception
Validates the required billing address fields in the user's cart. Loops through the "billingRequired" database setting to check which fields are required.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
true if all the required billing fields are present in the user's cart. false if not.
Throws:
java.lang.Exception

validateDeliveryFields

public boolean validateDeliveryFields(BaseForm baseForm)
                               throws java.lang.Exception
Validates the required delivery address fields in the user's cart. Loops through the "deliveryRequired" database setting to check which fields are required.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
true if all the required billing fields are present in the user's cart. false if not.
Throws:
java.lang.Exception

loadShippingOptions

public java.util.Collection loadShippingOptions(BaseForm baseForm)
                                         throws java.lang.Exception
Loads the active shipping options for display to the user. Used on the checkout addresses screen. Loops through the classes in the "activeShippingProcessors" database setting and invokes the loadShippingOptions method in each to get the available options.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
A Collection containing each of the shipping option available for the user to select.
Throws:
java.lang.Exception
See Also:
ShippingProcessor.loadShippingOptions()

processShipping

public java.util.Map processShipping(BaseForm baseForm)
                              throws java.lang.Exception
Processes shipping charges for the current user's cart. Called when the checkout addresses form is processed.

Loops through the classes in the "activeShippingProcessors" database setting and invokes the processShipping(Map) method in each to process the charges. The incoming baseForm should have a property named shippingOption containing the shipping option selected by the user.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
0, if the processing was successful. A non-zero integer if there was a problem and further processing should stop.
Throws:
java.lang.Exception
See Also:
ShippingProcessor.processShipping(Map)

processTax

public java.util.Map processTax(BaseForm baseForm)
                         throws java.lang.Exception
Processes tax charges for the current user's cart. Called when the checkout addresses form is processed.

Loops through the classes in the "activeTaxProcessors" database setting and invokes the processTax(Map) method in each to process the charges.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
0, if the processing was successful. A non-zero integer if there was a problem and further processing should stop.
Throws:
java.lang.Exception

processCheckoutAddresses

public org.apache.struts.action.ActionForward processCheckoutAddresses(BaseForm baseForm)
                                                                throws java.lang.Exception
Processes submissions to record addresses and shipping options in the current user's cart. Used for requests to "/CheckoutAddresses.do".

Invokes CartProcessor.processCheckoutAddresses(Map) to process the submitted address information. Then invokes processShipping(BaseForm)to process shipping charges and processTax(BaseForm)to process tax charges.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureShippingProcess", "failureTaxProcess", "success", or "successNoPaymentRequired".
Throws:
java.lang.Exception

preparePaymentForms

public void preparePaymentForms(BaseForm baseForm)
                         throws java.lang.Exception
Creates payment form instances and populates them from the request parameters. Used on the checkout payment screen so each of the active payment forms can be displayed. Loops through the "activePaymentForms" database setting to find the class names of the payment forms to create.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Throws:
java.lang.Exception

preparePaymentForm

public void preparePaymentForm(org.apache.struts.action.ActionForm paymentForm,
                               BaseForm baseForm)
                        throws java.lang.Exception
Prepares a given payment form by populating its properties from the request's parameters.

Parameters:
paymentForm - The payment form being populated from the request.
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Throws:
java.lang.Exception

processCheckoutPayment

public org.apache.struts.action.ActionForward processCheckoutPayment(BaseForm baseForm)
                                                              throws java.lang.Exception
Processes submissions of payment information by the current user. Used for requests to "/CheckoutPayment.do".

Loops through each of the classes in the "activePaymentForms" and "activePaymentProcessors" database settings to find the payment form that was used to submit payment information, and its corresponding PaymentProcessor. Uses the "paymentFormCount" request parameter to determine which form was submitted.

Invokes validatePaymentForm(ActionForm, BaseForm)to validate the submission, and if valid processPayment(PaymentProcessor, ActionForm, BaseForm)to process it.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureFormValidation", "failurePaymentProcess", or "success".
Throws:
java.lang.Exception

validatePaymentForm

public boolean validatePaymentForm(org.apache.struts.action.ActionForm paymentForm,
                                   BaseForm baseForm)
                            throws java.lang.Exception
Validates a given payment form for a given request. Used when a submission is made from the checkout payment screen to validate the submission of payment information. The method simply runs the validate method of the payment form, saving any validation errors to the request.

Parameters:
paymentForm - The payment form that was used by the user to submit payment information.
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
true if the submission passes validation. false if not.
Throws:
java.lang.Exception

processPayment

public int processPayment(PaymentProcessor paymentProcessor,
                          org.apache.struts.action.ActionForm paymentForm,
                          BaseForm baseForm)
                   throws java.lang.Exception
Processes payment information for a request with a given payment processor. Used when a submission is made from the checkout payment screen to process payment information.

The method runs the processPayment(Map) method of the incoming PaymentProcessor.

Parameters:
paymentProcessor - The PaymentProcessor corresponding to the payment form used by the user to submit payment information.
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
true if the submission passes validation. false if not.
Throws:
java.lang.Exception

prepareLoginForm

public void prepareLoginForm(BaseForm baseForm)
                      throws java.lang.Exception
Initializes an instance of LoginForm and populates it from request parameters. Used on the invite login screen and the force login screen.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Throws:
java.lang.Exception

prepareRegisterForm

public void prepareRegisterForm(BaseForm baseForm)
                         throws java.lang.Exception
Initializes an instance of RegisterForm and populates it from request parameters. Used on the checkout register screen.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Throws:
java.lang.Exception

processCheckoutLogin

public org.apache.struts.action.ActionForward processCheckoutLogin(BaseForm baseForm)
                                                            throws java.lang.Exception
Processes a login request during the checkout process. Used when a user logs in from the invite login screen or the force login screen.

The method runs CustomerProcessor.processLogin(Map) to process the login request.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureInvalidLogin" or "success".
Throws:
java.lang.Exception

processCheckoutRegister

public org.apache.struts.action.ActionForward processCheckoutRegister(BaseForm baseForm)
                                                               throws java.lang.Exception
Processes a request to register a new customer account during the checkout process. Used when a user registers from the checkout register screen.

The method runs CustomerProcessor.processRegister(Map) to process the register request.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
An ActionForward corresponding to the results of the processing. The ActionForward will be named "failureUserName" if the user name is already taken, or "success".
Throws:
java.lang.Exception

processDeclineLogin

public org.apache.struts.action.ActionForward processDeclineLogin(BaseForm baseForm)
                                                           throws java.lang.Exception
Processes a request to continue the checkout process without logging in or creating an account. Used when a user declines to log in from the invite login screen.

This method places an attribute in the user's session named "declinedLoginBeforeCheckout".

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Returns:
An ActionForward corresponding to the results of the processing. Always returns the "success" ActionForward.
Throws:
java.lang.Exception

processCheckoutConfirm

public org.apache.struts.action.ActionForward processCheckoutConfirm(BaseForm baseForm)
                                                              throws java.lang.Exception
Processes a request to confirm an order. Processes the payment form stored in the session with the session's payment processor. If processing fails, a failure is returned. Otherwise, the processOrderComplete method is run.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Throws:
java.lang.Exception

processOrderComplete

public void processOrderComplete(BaseForm baseForm)
                          throws java.lang.Exception
Invoked when a order has just been completed. Handles sending the invoice email to the user and the notification email to the store.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Throws:
java.lang.Exception

sendInvoiceEmail

public void sendInvoiceEmail(BaseForm baseForm)
                      throws java.lang.Exception
Sends a copy of the invoice for an order that was just completed to the user. Uses various database settings to determine the subject, SMTP server, from address, etc. for the email.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Throws:
java.lang.Exception

sendNotificationEmail

public void sendNotificationEmail(BaseForm baseForm)
                           throws java.lang.Exception
Sends a notification email for an order that was just completed to the store administrator. Uses various database settings to determine the subject, SMTP server, to address, etc. for the email.

Parameters:
baseForm - The form class corresponding to the current request. Holds various properties of the request to help action classes communicate with the rest of the application.
Throws:
java.lang.Exception


Copyright © SoftSlate, Inc. 2003–2005