Interface ActionUtils

All Known Implementing Classes:
ActionUtilsImpl

public interface ActionUtils
Interface for utility methods used by Struts Action classes.

When the application needs to create an instance that implements ActionUtils, it calls BusinessObjectFactory.createUtilsObject(java.lang.String) , which finds the name of the Java class to instantiate from the "actionUtilsImplemeter" setting in the appComponents.properties file.

The default "actionUtilsImplemeter" is ActionUtilsImpl.

Author:
David Tobey
  • Method Details

    • parseGenericTemplate

      String parseGenericTemplate(BaseForm baseForm, String template)
      Parses a string template with variables contained in a given BaseForm. Used to parse email templates for dynamically generated emails the store generates.

      The string template may have a number of placeholders deliniated by "%%". (E.g. "%%STORE_NAME%%"). This method replaces the placeholders with values from the BaseForm, be they settings from the database such as the store's name, or values from the current user's order.

      Note that with the release of 2.0, order invoice emails are now generated from JSP templates in the /WEB-INF/layouts/default/order directory, rather than by using this method.

      Parameters:
      baseForm - Contains variables that will be used to replace the template's placeholders.
      template - A String containing placeholders that this method will replace.
      Returns:
      The parsed template.
    • parseLostPasswordTemplate

      String parseLostPasswordTemplate(Customer customer, BaseForm baseForm, String template)
      Parses a string template with variables contained in a given BaseForm and Customer. Used to parse the lost password email template.

      The string template may have a number of placeholders deliniated by "%%". (E.g. "%%USERNAME%%"). This method replaces the placeholders with values from the BaseForm and Customer, be they settings from the database such as the store's name, or the current customer's user name and password.

      Parameters:
      customer - The current Customer whose lost password is being emailed.
      baseForm - Contains variables that will be used to replace the template's placeholders.
      template - The template for the lost password email, which is being parsed.
      Returns:
      The parsed template.
    • parseLowStockTemplate

      String parseLowStockTemplate(BaseForm baseForm, Map lowStockEmail, String template)
      Parses a string template with variables contained in a given BaseForm and a Map holding information about a SKU. Used to parse the low stock email template.

      Parameters:
      baseForm - Contains variables that will be used to replace the template's placeholders.
      lowStockEmail - A Map containing information about a SKU that has hit its low stock level.
      template - The template for the low stock email, which is being parsed.
      Returns:
      The parsed template.
    • sendMultipartEmail

      void sendMultipartEmail(String toEmails, String ccEmails, String bccEmails, String fromEmail, String smtpServer, String subject, String textMessage, String htmlMessage, String username, String password) throws Exception
      Sends a multipart text and HTML email from the store. Used for sending order notifications, invoices, lost password emails, and low stock emails.
      Parameters:
      toEmails - A comma-separated list of email addresses the email is being sent to.
      ccEmails - A comma-separated list of email addresses the email is being copied to.
      bccEmails - A comma-separated list of email addresses the email is being blind copied to.
      fromEmail - The email address used as the email's from address.
      smtpServer - The SMTP server to be used to send the email.
      subject - The subject used for the email.
      textMessage - The message for the text part of the email.
      htmlMessage - The message for the HTML part of the email.
      username - Username for SMTP authentication, or null if no authentication is required.
      password - Password for SMTP authentication, or null if no authentication is required.
      Throws:
      Exception
    • sendMultipartEmail

      void sendMultipartEmail(String toEmails, String ccEmails, String bccEmails, String fromEmail, String smtpServer, String subject, String textMessage, String htmlMessage, String username, String password, String smtpPort, String characterEncoding) throws Exception
      Sends a multipart text and HTML email from the store. Used for sending order notifications, invoices, lost password emails, and low stock emails.
      Parameters:
      toEmails - A comma-separated list of email addresses the email is being sent to.
      ccEmails - A comma-separated list of email addresses the email is being copied to.
      bccEmails - A comma-separated list of email addresses the email is being blind copied to.
      fromEmail - The email address used as the email's from address.
      smtpServer - The SMTP server to be used to send the email.
      subject - The subject used for the email.
      textMessage - The message for the text part of the email.
      htmlMessage - The message for the HTML part of the email.
      username - Username for SMTP authentication, or null if no authentication is required.
      password - Password for SMTP authentication, or null if no authentication is required.
      characterEncoding - Optional character encoding to be used for the email. If null or empty, no particular encoding is specified.
      Throws:
      Exception
    • sendMultipartEmail

      void sendMultipartEmail(String toEmails, String ccEmails, String bccEmails, String fromEmail, String smtpServer, String subject, String textMessage, String htmlMessage, String username, String password, String smtpPort, String characterEncoding, String attachmentName, byte[] attachment, String attachmentType) throws Exception
      Sends a multipart text and HTML email from the store. Used for sending order notifications, invoices, lost password emails, and low stock emails.
      Parameters:
      toEmails - A comma-separated list of email addresses the email is being sent to.
      ccEmails - A comma-separated list of email addresses the email is being copied to.
      bccEmails - A comma-separated list of email addresses the email is being blind copied to.
      fromEmail - The email address used as the email's from address.
      smtpServer - The SMTP server to be used to send the email.
      subject - The subject used for the email.
      textMessage - The message for the text part of the email.
      htmlMessage - The message for the HTML part of the email.
      username - Username for SMTP authentication, or null if no authentication is required.
      password - Password for SMTP authentication, or null if no authentication is required.
      characterEncoding - Optional character encoding to be used for the email. If null or empty, no particular encoding is specified.
      attachmentName - Name of the attachment (report.xls)
      attachment - Byte array of data for simple attachments
      attachmentType - The mime type of the attachment (application/vnd.ms-excel)
      Throws:
      Exception
    • findCheckoutScreen

      String findCheckoutScreen(BaseForm baseForm) throws 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:
      • "catalogMode", if the store's "catalogMode" database setting is set.
      • "cart", if the user's cart is empty.
      • "forceLogin", if the "forceLogin" database setting is set and the user is not logged in.
      • "inviteLogin", if the "inviteLogin" database setting is set and the user has not declined to log in and is not logged in.
      • "checkoutAddresses", if the user has not entered in all the required address fields for the order, and the "useComboScreen" setting is not set.
      • "checkoutPayment", if payment information is required, the total of the current order is greater than zero, and the "useComboScreen" setting is not set.
      • "checkoutCombo", if the user has not entered in all the required address fields, or if payment information is required, and if the "useComboScreen" setting is set.
      • "checkoutConfirm", if none of the other screens apply.

      The above screen names correspond to ActionForwards defined in the "/WEB-INF/conf/order/struts-config-order.xml" file.

      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:
      Exception
    • validateBillingFields

      boolean validateBillingFields(BaseForm baseForm) throws 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:
      Exception
    • validateDeliveryFields

      boolean validateDeliveryFields(BaseForm baseForm) throws 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:
      Exception
    • makeFilenameNice

      String makeFilenameNice(String originalFileName) throws Exception
      Eliminates non-standard characters from a file name so it can be safely saved across various file systems.
      Parameters:
      originalFileName -
      Returns:
      A modified version of the file name with non-standard characters eliminated
      Throws:
      Exception
    • readFile

      String readFile(String filename) throws Exception
      Reads a text file and returns its contents as a string.
      Parameters:
      filename -
      Returns:
      The file's contents as a string
      Throws:
      Exception
    • writeFile

      boolean writeFile(String filename, String fileContents) throws Exception
      Writes a text file to a given location.
      Parameters:
      filename -
      fileContents -
      Returns:
      Always true if no exceptions
      Throws:
      Exception
    • saveFile

      boolean saveFile(String filename, InputStream file) throws Exception
      Saves an input stream as a file at a given location.
      Parameters:
      filename -
      file -
      Returns:
      true, if saving the file succeeded
      Throws:
      Exception
    • onPreRequestEnd

      boolean onPreRequestEnd(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
      Runs at the beggining of each request, after system objects have been initialized. Called from the BaseRequestProcessor.
      Parameters:
      request -
      response -
      Returns:
      true, if the request should proceed
    • onCustomerPreRequestEnd

      boolean onCustomerPreRequestEnd(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
      Runs at the beginning of each request to the customer interface, after system objects have been initialized. Called from the CustomerRequestProcessor.
      Parameters:
      request -
      response -
      Returns:
      true, if the request should proceed
    • onAdministratorPreRequestEnd

      boolean onAdministratorPreRequestEnd(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
      Runs at the beginning of each request to the administrator interface, after system objects have been initialized. Called from the CustomerRequestProcessor.
      Parameters:
      request -
      response -
      Returns:
      true, if the request should proceed
    • processSavedCartCookie

      void processSavedCartCookie(BaseForm baseForm, Map parameters, javax.servlet.http.HttpServletResponse response)
      If the system settings permit it, add a persistent cookie to the user's browser identifying the cart so it can be loaded on a later visit.

      A cookie with the name "sscsctoken" and the value of the user's session id will be saved in the browser and recorded in the sscOrder database table's "savedCartToken" field.

      Parameters:
      baseForm - The instance of CartAddForm corresponding to the request.
      parameters - The parameters of the add to cart request.
      response - The servlet's response object, used to save the cookie to the browser.
    • processCartAddResults

      String processCartAddResults(Map results, BaseForm baseForm)
      Process the results of adding an item or items to the cart. This method first sends out low stock inventory emails. It then adds error messages for customers if required attributes were missing from the request or the item or items are out of stock.

      In the case of an error, the attribute "errorProductCode" is set in the request, corresponding to the product code of the first item being added to the cart. If the submission came from a product page, this will tell the ProductForm to populate the request with that product's data, so the errors can be displayed on the product page.

      Finally, this method calls the addInventoryMessages method, to populate the request with (non-error) messages relating to inventory.

      Parameters:
      results - The Map of results returned by the call to the execute method of this class.
      baseForm - The instance of CartAddForm corresponding to the request.
      Returns:
      A String, "success" or "failure", corresponding to the ActionFoward that the execute method will return.
    • addInventoryMessages

      void addInventoryMessages(Map results, BaseForm baseForm)
      Adds non-error messages to the request related to inventory. Two types of messages may be added.
      • Messages indicating that the quantity of an item was more than its inventory level and that therefore the quantity was automatically lowered to match the amount in stock.
      • Messages indicating that with this request a product has just hit its out of stock level.
      Parameters:
      results - The Map of results returned by the call to the execute method of this class.
      baseForm - The instance of CartAddForm corresponding to the current request.
    • loadEstimatedShippingOptions

      Collection loadEstimatedShippingOptions(BaseForm baseForm)
      Load a set of estimated shipping options for the current cart. The options may be merely estimates because the shopper may not have defined a delivery address yet, if he has not logged in or entered addresses during checkout. In these cases, the default city, state, country, and ZIP defined in the database settings are used.
      Parameters:
      baseForm -
      Returns:
      A Collection of Maps representing the various shipping options and their rates.
    • buildParameterMap

      Map buildParameterMap(javax.servlet.http.HttpServletRequest request) throws Exception
      Creates a string-based Map based on all the request parameters.
      Parameters:
      request -
      Returns:
      A map representing all the request parameters.
      Throws:
      Exception
    • processAuditLogging

      void processAuditLogging(javax.servlet.http.HttpServletRequest request)
      Create log entries in the application's audit logs, containing all the key information about each request.
      Parameters:
      request -
    • getRequestParamsDebugMessage

      String getRequestParamsDebugMessage(javax.servlet.http.HttpServletRequest request)
      Given a request object, converts all the incoming parameters to a string for debugging. The values of certain parameters such as passwords are masked for security.
      Parameters:
      request - The current request object.
      Returns:
      A String representing the name value pairs of the request parameters.
    • createTrackingNumberLink

      String createTrackingNumberLink(String trackingNumber)
      Returns the URL link to look up a given tracking number's status, on either the UPS, USPS, or FedEx website.
      Parameters:
      trackingNumber -
      Returns:
      The URL for the tracking number on the UPS, USPS, or FedEx website
    • generateCodeFromName

      String generateCodeFromName(String name)
      Given a String name, creates a URL-safe code that can be used for the "code" field of many domain entities that require it.
    • processApplicationMessages

      void processApplicationMessages(org.apache.struts.action.ActionMessages errors, org.apache.struts.action.ActionMessages messages, Collection<ApplicationMessage> applicationMessages)
    • parseLostPasswordTemplateAdvanced

      String parseLostPasswordTemplateAdvanced(Customer customer, BaseForm baseForm, String template, String token)