atg.commerce.order.processor
Class ProcValidatePaymentGroupsForCheckout

java.lang.Object
  extended by atg.nucleus.logging.ApplicationLoggingImpl
      extended by atg.commerce.order.processor.ProcValidatePaymentGroupsForCheckout
All Implemented Interfaces:
ApplicationLogging, atg.nucleus.logging.ApplicationLoggingSender, atg.nucleus.logging.TraceApplicationLogging, PipelineProcessor

public class ProcValidatePaymentGroupsForCheckout
extends ApplicationLoggingImpl
implements PipelineProcessor

This processor validates PaymentGroups before checking an Order out. The two main things which are checked for are that all CommerceItems, shipping costs, and tax in the Order are assigned to PaymentGroups and that all the required fields in all the PaymentGroups, regardless of type, are not null or empty String. The first check, that all CommerceItems, shipping costs, and tax are assigned to PaymentGroups, first checks to see if there is only one PaymentGroup and it has no Relationships. If so, then all CommerceItems, shipping costs, and tax are implicitly assigned to that PaymentGroup. If there is more than one PaymentGroup or the PaymentGroup has at least one Relationship, then all CommerceItems, ShippingGroups, and the Order must be assigned to one or more PaymentGroups. The second check, that required fields are provided, iterates over all the PaymentGroups in the order and invokes a separate pipeline chain for each payment group. The first processor in that chain is responsible for examining the type of the payment group and dispatching to an appropriate validation processor or processor chain that knows which fields are required for each payment method.


Field Summary
static java.lang.String CLASS_VERSION
          Class version string
protected  int[] mRetCodes
           
 
Fields inherited from interface atg.service.pipeline.PipelineProcessor
STOP_CHAIN_EXECUTION, STOP_CHAIN_EXECUTION_AND_COMMIT, STOP_CHAIN_EXECUTION_AND_ROLLBACK
 
Fields inherited from interface atg.nucleus.logging.TraceApplicationLogging
DEFAULT_LOG_TRACE_STATUS
 
Fields inherited from interface atg.nucleus.logging.ApplicationLogging
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
 
Constructor Summary
ProcValidatePaymentGroupsForCheckout()
           
 
Method Summary
protected  void addHashedError(PipelineResult pResult, java.lang.String pKey, java.lang.String pId, java.lang.Object pError)
          This method adds an error to the PipelineResult object.
 java.lang.String getLoggingIdentifier()
          Returns property LoggingIdentifier.
 int[] getRetCodes()
          Returns an array of all the return codes that could be returned by this PipelineProcessor.
 java.lang.String getValidatePaymentGroupChain()
          Get the name of the pipeline chain to run to validate each individual payment group.
protected  double round(double pNumber, int pRoundingDecimalPlaces)
          Rounds the input number to the number of decimal places specified by the roundingDecimalPlaces argument.
 int runProcess(java.lang.Object pParam, PipelineResult pResult)
          This method performs two checks on all the PaymentGroups in the given Order.
 void setLoggingIdentifier(java.lang.String pLoggingIdentifier)
          Sets property LoggingIdentifier.
 void setValidatePaymentGroupChain(java.lang.String pValidatePaymentGroupChain)
          Set the name of the pipeline chain to run to validate each individual payment group.
 
Methods inherited from class atg.nucleus.logging.ApplicationLoggingImpl
addGlobalLogListeners, addLogListener, getLoggingIdentifer, getLogListenerCount, getLogListeners, initializeFromServiceEvent, isAutoInitListeners, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, removeLogListener, sendLogEvent, setAutoInitListeners, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static final java.lang.String CLASS_VERSION
Class version string

See Also:
Constant Field Values

mRetCodes

protected int[] mRetCodes
Constructor Detail

ProcValidatePaymentGroupsForCheckout

public ProcValidatePaymentGroupsForCheckout()
Method Detail

setValidatePaymentGroupChain

public void setValidatePaymentGroupChain(java.lang.String pValidatePaymentGroupChain)
Set the name of the pipeline chain to run to validate each individual payment group.


getValidatePaymentGroupChain

public java.lang.String getValidatePaymentGroupChain()
Get the name of the pipeline chain to run to validate each individual payment group. The default chain name is "validatePaymentGroup".


getRetCodes

public int[] getRetCodes()
Description copied from interface: PipelineProcessor
Returns an array of all the return codes that could be returned by this PipelineProcessor.

Specified by:
getRetCodes in interface PipelineProcessor
Returns:
an array of all the return codes that could be returned by this PipelineProcessor.

setLoggingIdentifier

public void setLoggingIdentifier(java.lang.String pLoggingIdentifier)
Sets property LoggingIdentifier.

Overrides:
setLoggingIdentifier in class ApplicationLoggingImpl

getLoggingIdentifier

public java.lang.String getLoggingIdentifier()
Returns property LoggingIdentifier.

Overrides:
getLoggingIdentifier in class ApplicationLoggingImpl

runProcess

public int runProcess(java.lang.Object pParam,
                      PipelineResult pResult)
               throws java.lang.Exception
This method performs two checks on all the PaymentGroups in the given Order. The first check is to see if all the CommerceItems, shipping costs, and tax in the Order are assigned to PaymentGroups. The second check is to determine if all the required properties are not null or empty String. The properties which are checked are as follows: This method requires that an Order, an OrderManager, and optionally a Locale object be supplied in pParam in a HashMap. Use the PipelineConstants class static members to key the objects in the HashMap.

Specified by:
runProcess in interface PipelineProcessor
Parameters:
pParam - a HashMap which must contain an Order, an OrderManager, and optionally a Locale object
pResult - a PipelineResult object which stores any information which must be returned from this method invokation
Returns:
an integer specifying the processor's return code
Throws:
java.lang.Exception - throws any exception back to the caller
See Also:
PipelineProcessor.runProcess(Object, PipelineResult)

addHashedError

protected void addHashedError(PipelineResult pResult,
                              java.lang.String pKey,
                              java.lang.String pId,
                              java.lang.Object pError)
This method adds an error to the PipelineResult object. This method, rather than just storing a single error object in pResult, stores a Map of errors. This allows more than one error to be stored using the same key in the pResult object. pKey is used to reference a HashMap of errors in pResult. So, calling pResult.getError(pKey) will return an object which should be cast to a Map. Each entry within the map is keyed by pId and its value is pError.

Parameters:
pResult - the PipelineResult object supplied in runProcess()
pKey - the key to use to store the HashMap in the PipelineResult object
pId - the key to use to store the error message within the HashMap in the PipelineResult object
pError - the error object to store in the HashMap
See Also:
PipelineResult, runProcess(Object, PipelineResult)

round

protected double round(double pNumber,
                       int pRoundingDecimalPlaces)
Rounds the input number to the number of decimal places specified by the roundingDecimalPlaces argument. Rounds 1 through 4 down, and 5 through 9 up.

Parameters:
pNumber - the number to be rounded
pRoundingDecimalPlaces - the number of decimal places to use in rounding
Returns:
pNumber, rounded to the nearest [roundingDecimalPlaces] decimal points