public class ApplicableShippingGroups
extends atg.servlet.DynamoServlet
This droplet should be used in conjunction with ShippingGroupDroplet
. The
ShippingGroupDroplet
is used to initialize the list of available shipping groups in
the ShippingGroupMapContainer
. If the ShippingGroupMapContainer
is not
initialized, this droplet will not serve any shipping groups.
Shipping group types are determined based on the fulfiller
property in the sku
s referred to by the CommerceItem.catalogRefId
property. If a sku's fulfiller property is not filled in, a shipping group type supported by
OrderFulfillmentTools.defaultFulfiller
(HardgoodFulfiller by default) is used.
This droplet takes in commerce item or order as optional input parameters.
The parameters to the ApplicableShippingGroups droplet are:
output
oparam.
output
oparam.
One list contains all the types for all the items in the order (the union of types).
The other list contains only the types that are common to the items in the order
(the intersection of types).
commerceItemShippingInfoContainerPath
property.
shippingGroupMapContainerPath
property.
ShippingGroupMapContainer
contains the super set of all shipping groups,
only valid shipping groups for the commerce item or order are returned.If a shipping group is not valid or
not supported by the commerce item or order, that shipping group is not included.
ShippingGroupMapContainer
and this is
generated based on the order or commerceItem. See ShippingGroupManager.getShippingGroupTypes(Order)
or ShippingGroupManager.getShippingGroupTypes(String, String, CommerceItem)
for more information
ShippingGroupMapContainer
and this is
generated based on the order. See ShippingGroupManager.getCommonShippingGroupTypes(Order)
for more information
CommerceItemShippingInfo
's in the ShippingGroupMapContainerService
is using the same shipping group name, then that is considered as common shipping group name.This droplet initializes ShippingGroupMapContainer
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ALL_SHIPPING_GROUP_TYPES |
static atg.nucleus.naming.ParameterName |
CISI_CONTAINER |
static java.lang.String |
CLASS_VERSION |
static atg.nucleus.naming.ParameterName |
COMMERCE_ITEM |
static java.lang.String |
COMMON_SHIPPING_GROUP_NAME |
static java.lang.String |
COMMON_SHIPPING_GROUP_TYPES |
protected java.lang.String |
mCommerceItemShippingInfoContainerPath |
protected atg.commerce.order.ShippingGroupManager |
mShippingGroupManager |
protected java.lang.String |
mShippingGroupMapContainerPath |
static atg.nucleus.naming.ParameterName |
ORDER |
static atg.nucleus.naming.ParameterName |
OUTPUT |
static atg.nucleus.naming.ParameterName |
SG_MAP_CONTAINER |
static java.lang.String |
SHIPPING_GROUPS |
Constructor and Description |
---|
ApplicableShippingGroups() |
Modifier and Type | Method and Description |
---|---|
java.util.Map<java.lang.String,atg.commerce.order.ShippingGroup> |
findApplicableShippingGroups(java.util.Collection<java.lang.String> pShippingGroupTypes,
atg.commerce.order.purchase.ShippingGroupMapContainer pShippingGroupMapContainer)
The
ShippingGroupMapContainer contains all shipping group type shipping groups. |
java.lang.String |
findCommonApplicableShippingGroupName(java.util.Collection<java.lang.String> pShippingGroupTypes,
atg.commerce.order.purchase.ShippingGroupMapContainer pShippingGroupMapContainer,
atg.commerce.order.purchase.CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer)
This method finds whether all the commerce items in the order are pointing to the same applicable shipping group
name and returns the common applicable shipping group name.
|
protected atg.commerce.order.CommerceItem |
getCommerceItem(atg.servlet.DynamoHttpServletRequest pRequest)
This method gets the
CommerceItem from the request. |
protected atg.commerce.order.purchase.CommerceItemShippingInfoContainer |
getCommerceItemShippingInfoContainer(atg.servlet.DynamoHttpServletRequest pRequest)
This method gets the
CommerceItemShippingInfoContainer from the request. |
java.lang.String |
getCommerceItemShippingInfoContainerPath()
Returns the commerceItemShippingInfoContainerPath
|
protected atg.commerce.order.Order |
getOrder(atg.servlet.DynamoHttpServletRequest pRequest)
This method gets the
Order from the request. |
atg.commerce.order.ShippingGroupManager |
getShippingGroupManager()
Returns the shippingGroupManager
|
protected atg.commerce.order.purchase.ShippingGroupMapContainer |
getShippingGroupMapContainer(atg.servlet.DynamoHttpServletRequest pRequest)
This method gets the
ShippingGroupMapContainer from the request. |
java.lang.String |
getShippingGroupMapContainerPath()
Returns the shippingGroupMapContainerPath
|
protected boolean |
isValidShippingGroup(atg.commerce.order.ShippingGroup pShippingGroup)
This method uses
ShippingGroupPropertyContainer.arePropertiesEmpty() to check for the shipping group's emptiness or validity. |
void |
service(atg.servlet.DynamoHttpServletRequest pRequest,
atg.servlet.DynamoHttpServletResponse pResponse)
This method serves the
output oparam. |
void |
setCommerceItemShippingInfoContainerPath(java.lang.String pCommerceItemShippingInfoContainerPath)
Sets the commerceItemShippingInfoContainerPath
|
void |
setShippingGroupManager(atg.commerce.order.ShippingGroupManager pShippingGroupManager)
Sets the shippingGroupManager
|
void |
setShippingGroupMapContainerPath(java.lang.String pShippingGroupMapContainerPath)
Sets the shippingGroupMapContainerPath
|
doDelete, doGet, doPost, doPut, getParameter, getParameters, getServletContext, init, service, service, setParameter
destroy, getServletConfig, getServletInfo, setServletInfo
getAverageRequestHandlingTime, getHandledRequestCount, getRequestStartTime, getTotalRequestHandlingTime, isKeepingStatistics, notifyHandledRequest, resetStatistics, setKeepingStatistics
addLogListener, createAdminServlet, doStartService, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
public static java.lang.String CLASS_VERSION
public static final atg.nucleus.naming.ParameterName ORDER
public static final atg.nucleus.naming.ParameterName COMMERCE_ITEM
public static final atg.nucleus.naming.ParameterName CISI_CONTAINER
public static final atg.nucleus.naming.ParameterName SG_MAP_CONTAINER
public static final atg.nucleus.naming.ParameterName OUTPUT
public static final java.lang.String COMMON_SHIPPING_GROUP_NAME
public static final java.lang.String COMMON_SHIPPING_GROUP_TYPES
public static final java.lang.String SHIPPING_GROUPS
public static final java.lang.String ALL_SHIPPING_GROUP_TYPES
protected atg.commerce.order.ShippingGroupManager mShippingGroupManager
protected java.lang.String mCommerceItemShippingInfoContainerPath
protected java.lang.String mShippingGroupMapContainerPath
public atg.commerce.order.ShippingGroupManager getShippingGroupManager()
public void setShippingGroupManager(atg.commerce.order.ShippingGroupManager pShippingGroupManager)
pShippingGroupManager
- the shippingGroupManager to setpublic java.lang.String getCommerceItemShippingInfoContainerPath()
public void setCommerceItemShippingInfoContainerPath(java.lang.String pCommerceItemShippingInfoContainerPath)
pCommerceItemShippingInfoContainerPath
- the commerceItemShippingInfoContainerPath to setpublic java.lang.String getShippingGroupMapContainerPath()
public void setShippingGroupMapContainerPath(java.lang.String pShippingGroupMapContainerPath)
pShippingGroupMapContainerPath
- the shippingGroupMapContainerPath to setpublic void service(atg.servlet.DynamoHttpServletRequest pRequest, atg.servlet.DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException, java.io.IOException
output
oparam.service
in class atg.servlet.DynamoServlet
pRequest
- pResponse
- javax.servlet.ServletException
java.io.IOException
ShippingGroupManager.getShippingGroupTypes(String, String, CommerceItem)
,
ShippingGroupManager.getShippingGroupTypes(Order)
,
ShippingGroupManager.getCommonShippingGroupTypes(Order)
public java.util.Map<java.lang.String,atg.commerce.order.ShippingGroup> findApplicableShippingGroups(java.util.Collection<java.lang.String> pShippingGroupTypes, atg.commerce.order.purchase.ShippingGroupMapContainer pShippingGroupMapContainer)
ShippingGroupMapContainer
contains all shipping group type shipping groups. This container
is initialized by ShippingGroupDroplet
. This method filters only desired shipping groups.
This method walks through all the shipping groups in the ShippingGroupMapContainer
and eliminates
undesired shipping group types and invalid shipping groups.pShippingGroupTypes
- A list of desired shipping group types.pShippingGroupMapContainer
- The container which contains all the shipping groupsprotected boolean isValidShippingGroup(atg.commerce.order.ShippingGroup pShippingGroup)
ShippingGroupPropertyContainer.arePropertiesEmpty()
to check for the shipping group's emptiness or validity.
If the shipping group has any information, then the shipping group is valid. otherwise the shipping group is invalid.
If the pShippingGroup
does not implement ShippingGroupPropertyContainer
interface, you need to
over ride this method to support custom shipping groups. If the pShippingGroup
does not implement
ShippingGroupPropertyContainer
interface, then this method logs the error and considers as invalid shipping group.pShippingGroup
- The shipping group needs to be validated.public java.lang.String findCommonApplicableShippingGroupName(java.util.Collection<java.lang.String> pShippingGroupTypes, atg.commerce.order.purchase.ShippingGroupMapContainer pShippingGroupMapContainer, atg.commerce.order.purchase.CommerceItemShippingInfoContainer pCommerceItemShippingInfoContainer)
pShippingGroupTypes
- A list of order's common shipping group types. All the commerce items
could be shipped to any of the shipping group type.pShippingGroupMapContainer
- The container which contains shipping groupspCommerceItemShippingInfoContainer
- The container which contains CommerceItemShippingInfo.
protected atg.commerce.order.Order getOrder(atg.servlet.DynamoHttpServletRequest pRequest)
Order
from the request.Order
valueprotected atg.commerce.order.CommerceItem getCommerceItem(atg.servlet.DynamoHttpServletRequest pRequest)
CommerceItem
from the request.CommerceItem
valueprotected atg.commerce.order.purchase.CommerceItemShippingInfoContainer getCommerceItemShippingInfoContainer(atg.servlet.DynamoHttpServletRequest pRequest)
CommerceItemShippingInfoContainer
from the request.CommerceItemShippingInfoContainer
valueprotected atg.commerce.order.purchase.ShippingGroupMapContainer getShippingGroupMapContainer(atg.servlet.DynamoHttpServletRequest pRequest)
ShippingGroupMapContainer
from the request.ShippingGroupMapContainer
value