atg.commerce.pricing
Class ItemPricingEngineImpl

java.lang.Object
  extended by atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
      extended by atg.nucleus.GenericService
          extended by atg.commerce.pricing.PricingEngineService
              extended by atg.commerce.pricing.ItemPricingEngineImpl
All Implemented Interfaces:
ItemPricingEngine, PricingEngine, NameContextBindingListener, NameContextElement, NameResolver, AdminableService, ApplicationLogging, atg.nucleus.logging.ApplicationLoggingSender, atg.nucleus.logging.TraceApplicationLogging, atg.nucleus.logging.VariableArgumentApplicationLogging, ComponentNameResolver, Service, ServiceListener, Schedulable, java.util.EventListener

public class ItemPricingEngineImpl
extends PricingEngineService
implements ItemPricingEngine

An ItemPricingEngine implementation which computes the price for an order. It accomplishes this task by invoking a series of ItemPricingCalculators which incrementally compute the items' prices:

Note: if a particular order of calculator invocation is desired, sorting must be done prior to passing discounts/precalculators/postcalculators in to the Engine.

Properties:

See Also:
ItemPriceInfo, ItemPricingCalculator

Field Summary
static java.lang.String CLASS_VERSION
          Class version string
 
Fields inherited from class atg.commerce.pricing.PricingEngineService
mGlobalPromotions
 
Fields inherited from class atg.nucleus.GenericService
SERVICE_INFO_KEY
 
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
ItemPricingEngineImpl()
           
 
Method Summary
 void checkPromotionsForCloseness(java.util.List pPriceInfos, java.util.List pItems, java.util.Collection pPricingModels, java.util.Locale pLocale, RepositoryItem pProfile, Order pOrder, java.util.Map pExtraParameters)
          Check to see if the items qualify under any of the pricingModels' "closenessQualifiers".
protected  java.lang.String getCurrencyCode(CommerceItem pItem, java.util.Collection pPricingModels, java.util.Locale pLocale, RepositoryItem pProfile, java.util.Map pExtraParameters)
          Return the currency code that should be used in the context of this pricing request
protected  java.lang.String getCurrencyCode(java.util.List pItems, java.util.Collection pPricingModels, java.util.Locale pLocale, RepositoryItem pProfile, java.util.Map pExtraParameters)
          Return the currency code that should be used in the context of this pricing request
 ItemPricingCalculator[] getPostCalculators()
          Returns property PostCalculators
 ItemPricingCalculator[] getPreCalculators()
          Returns property PreCalculators
 java.util.Collection getPricingModels(RepositoryItem pProfile)
          Returns a List of pricing models (e.g.
 java.util.List priceEachItem(java.util.List pItems, java.util.Collection pPricingModels, java.util.Locale pLocale, RepositoryItem pProfile, java.util.Map pExtraParameters)
          Price each of a List of items in a context
 ItemPriceInfo priceItem(CommerceItem pItem, java.util.Collection pPricingModels, java.util.Locale pLocale, RepositoryItem pProfile, java.util.Map pExtraParameters)
          Price a single item in a context
 java.util.List priceItems(java.util.List pItems, java.util.Collection pPricingModels, java.util.Locale pLocale, RepositoryItem pProfile, Order pOrder, java.util.Map pExtraParameters)
          Price a List of items together in a context
 void setPostCalculators(ItemPricingCalculator[] pPostCalculators)
          Sets property PostCalculators
 void setPreCalculators(ItemPricingCalculator[] pPreCalculators)
          Sets property PreCalculators
 
Methods inherited from class atg.commerce.pricing.PricingEngineService
addPromotion, addPromotionToList, checkAndAddPromotions, checkPromotionExpiration, createPriceInfo, doStartService, doStopService, expirePromotion, findGlobalPromotions, getAdjustmentPricingModels, getCalculator, getClosenessQualifierEvaluator, getCurrencyCode, getDefaultLocale, getGlobalPromotions, getGlobalPromotionsQuery, getGlobalPromotionsSchedulableDate, getInitialPromotions, getPriceInfoClass, getPricingModelComparator, getPricingModelProperties, getProfileProperties, getPromotionItemDescriptors, getPromotionItemTypes, getPromotions, getPromotionsRepository, getPromotionTools, getScheduler, getUpdateSchedule, getUserOnlyPromotions, loadGlobalPromotions, performScheduledTask, setClosenessQualifierEvaluator, setDefaultLocale, setGlobalPromotionsQuery, setGlobalPromotionsSchedulableDate, setPriceInfoClass, setPricingModelComparator, setPricingModelProperties, setProfileProperties, setPromotionItemTypes, setPromotionsRepository, setPromotionTools, setScheduler, setUpdateSchedule
 
Methods inherited from class atg.nucleus.GenericService
addLogListener, createAdminServlet, getAbsoluteName, getAdminServlet, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
 
Methods inherited from class atg.nucleus.logging.VariableArgumentApplicationLoggingImpl
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION
Class version string

Constructor Detail

ItemPricingEngineImpl

public ItemPricingEngineImpl()
Method Detail

setPreCalculators

public void setPreCalculators(ItemPricingCalculator[] pPreCalculators)
Sets property PreCalculators


getPreCalculators

public ItemPricingCalculator[] getPreCalculators()
Returns property PreCalculators


setPostCalculators

public void setPostCalculators(ItemPricingCalculator[] pPostCalculators)
Sets property PostCalculators


getPostCalculators

public ItemPricingCalculator[] getPostCalculators()
Returns property PostCalculators


getPricingModels

public java.util.Collection getPricingModels(RepositoryItem pProfile)
Returns a List of pricing models (e.g. promotions) for given a Profile.

Specified by:
getPricingModels in interface PricingEngine
Parameters:
pProfile - The user's profile from which the engine will extract promotions
Returns:
List of RepositoryItems which represent pricing models for use in pricing.

getCurrencyCode

protected java.lang.String getCurrencyCode(CommerceItem pItem,
                                           java.util.Collection pPricingModels,
                                           java.util.Locale pLocale,
                                           RepositoryItem pProfile,
                                           java.util.Map pExtraParameters)
                                    throws PricingException
Return the currency code that should be used in the context of this pricing request

Throws:
PricingException - if an error occurs while attempting to determine the currency code

getCurrencyCode

protected java.lang.String getCurrencyCode(java.util.List pItems,
                                           java.util.Collection pPricingModels,
                                           java.util.Locale pLocale,
                                           RepositoryItem pProfile,
                                           java.util.Map pExtraParameters)
                                    throws PricingException
Return the currency code that should be used in the context of this pricing request

Throws:
PricingException - if an error occurs while attempting to determine the currency code

priceItem

public ItemPriceInfo priceItem(CommerceItem pItem,
                               java.util.Collection pPricingModels,
                               java.util.Locale pLocale,
                               RepositoryItem pProfile,
                               java.util.Map pExtraParameters)
                        throws PricingException
Price a single item in a context

Specified by:
priceItem in interface ItemPricingEngine
Parameters:
pItem - The item to price
pPricingModels - A Collection of RepositoryItems representing PricingModels
pLocale - The Locale to use for pricing
pProfile - The user's profile
pExtraParameters - A Map of extra parameters to be used in the pricing, may be null
Returns:
ItemPriceInfo representing the price quote for the item. Return null if no pricing info can be determined. This may occur if the item supplied is null.
Throws:
PricingException - if an error occurs while attempting to price

priceEachItem

public java.util.List priceEachItem(java.util.List pItems,
                                    java.util.Collection pPricingModels,
                                    java.util.Locale pLocale,
                                    RepositoryItem pProfile,
                                    java.util.Map pExtraParameters)
                             throws PricingException
Price each of a List of items in a context

Specified by:
priceEachItem in interface ItemPricingEngine
Parameters:
pItems - The items to price (individually)
pPricingModels - A Collection of RepositoryItems representing PricingModels
pLocale - The Locale to use for pricing
pProfile - The user's profile
pExtraParameters - A Map of extra parameters to be used in the pricing, may be null
Returns:
List of ItemPriceInfo objects representing the price quotes for each item. Return null if no pricing info can be determined. This may occur if the list of items supplied is null or empty.
Throws:
PricingException - if an error occurs while attempting to price

priceItems

public java.util.List priceItems(java.util.List pItems,
                                 java.util.Collection pPricingModels,
                                 java.util.Locale pLocale,
                                 RepositoryItem pProfile,
                                 Order pOrder,
                                 java.util.Map pExtraParameters)
                          throws PricingException
Price a List of items together in a context

Specified by:
priceItems in interface ItemPricingEngine
Parameters:
pItems - The items to price
pPricingModels - A Collection of RepositoryItems representing PricingModels
pLocale - The Locale to use for pricing
pProfile - The user's profile
pOrder - The Order object of which the List of items are a part, may be null
pExtraParameters - A Map of extra parameters to be used in the pricing, may be null
Returns:
List of ItemPriceInfo objects representing the price quotes for the items. Return null if no pricing info can be determined. This may occur if the list of items supplied is null or empty.
Throws:
PricingException - if an error occurs while attempting to price

checkPromotionsForCloseness

public void checkPromotionsForCloseness(java.util.List pPriceInfos,
                                        java.util.List pItems,
                                        java.util.Collection pPricingModels,
                                        java.util.Locale pLocale,
                                        RepositoryItem pProfile,
                                        Order pOrder,
                                        java.util.Map pExtraParameters)
                                 throws PricingException
Check to see if the items qualify under any of the pricingModels' "closenessQualifiers". If so, add the closenessQualifiers to the priceInfo.

Parameters:
pPriceInfos - The PriceInfos associated with the items
pItems - The items to check
pPricingModels - A Collection of RepositoryItems representing PricingModels
pLocale - The Locale to use for pricing
pProfile - The user's profile
pExtraParameters - A Map of extra parameters to be used in the pricing, may be null
Throws:
PricingException