Class AbstractProductConfigController
- java.lang.Object
-
- de.hybris.platform.acceleratorstorefrontcommons.controllers.AbstractController
-
- de.hybris.platform.acceleratorstorefrontcommons.controllers.pages.AbstractPageController
-
- de.hybris.platform.sap.productconfig.frontend.controllers.AbstractProductConfigController
-
- Direct Known Subclasses:
AbstractConfigurationOverviewController
,AddConfigToCartController
,AnalyticsController
,CartConfigureProductController
,ConfigureProductController
,PricingController
,SearchSimilarVariantsController
,UpdateConfigureProductController
public abstract class AbstractProductConfigController extends AbstractPageController
Abstract base class for all CPQ UI controllers.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class de.hybris.platform.acceleratorstorefrontcommons.controllers.AbstractController
AbstractController.HttpNotFoundException
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
CMS_PAGE_TYPE
protected static java.lang.String
CMS_PC_PAGE_ID
protected static java.lang.String
CMS_PC_PAGE_TYPE
-
Fields inherited from class de.hybris.platform.acceleratorstorefrontcommons.controllers.pages.AbstractPageController
CMS_PAGE_MODEL, CMS_PAGE_TITLE, PAGE_ROOT, REDIRECT_TO_LOGIN_FOR_CHECKOUT, REDIRECT_TO_MULTISTEP_CHECKOUT, REGISTRATION_CONSENT_ID, UTF_8
-
Fields inherited from class de.hybris.platform.acceleratorstorefrontcommons.controllers.AbstractController
FORWARD_PREFIX, REDIRECT_PREFIX, ROOT
-
-
Constructor Summary
Constructors Constructor Description AbstractProductConfigController()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ConfigurationData
afterReloadConfiguration(ConfigurationData configData, UiStatus uiStatus)
protected void
cleanUpSessionAttribute(java.lang.String productCode)
protected ConfigurationAbstractOrderEntryLinkStrategy
getAbstractOrderEntryLinkStrategy()
protected org.springframework.validation.BindingResult
getBindingResultForConfigAndSaveUiStatus(ConfigurationData configData, UiStatus uiStatus)
protected org.springframework.validation.BindingResult
getBindingResultForConfiguration(ConfigurationData configData, UiStatus uiStatus)
protected ProductConfigureBreadcrumbBuilder
getBreadcrumbBuilder()
protected java.lang.Integer
getCartEntryNumber(AbstractOrderData orderData, java.lang.String configId)
protected java.lang.Integer
getCartEntryNumber(java.lang.String productCode)
protected CartFacade
getCartFacade()
protected java.lang.String
getCartItemByConfigId(java.lang.String configId)
protected java.lang.String
getCartItemByProductCode(java.lang.String productCode)
protected ConfigurationCartIntegrationFacade
getConfigCartFacade()
protected ConfigurationFacade
getConfigFacade()
ConfigErrorHandler
getConfigurationErrorHandler()
protected java.util.List<java.util.Map<java.lang.String,ImageData>>
getGalleryImages(ProductData productData)
protected OrderEntryData
getOrderEntry(int entryNumber, AbstractOrderData abstractOrder)
protected java.util.Optional<OrderEntryData>
getOrderEntry(java.lang.String cartItemKey, AbstractOrderData abstractOrder)
protected java.lang.String
getPageId()
protected java.lang.String
getPageType()
protected java.lang.String
getProductCodeForCartItem(java.lang.String cartItemKey)
protected ConflictChecker
getProductConfigurationConflictChecker()
protected org.springframework.validation.Validator
getProductConfigurationValidator()
protected ProductData
getProductDataForProductCode(java.lang.String productCode)
protected ProductFacade
getProductFacade()
protected ConfigurationProductLinkStrategy
getProductLinkStrategy()
protected ProductService
getProductService()
protected SessionAccessFacade
getSessionAccessFacade()
protected UiTrackingRecorder
getUiRecorder()
protected UiStateHandler
getUiStateHandler()
protected UiStatus
getUiStatusForConfig(ConfigurationData configData)
protected UiStatus
getUiStatusForConfigId(java.lang.String configId)
protected UiStatusSync
getUiStatusSync()
protected void
handleRequestContext(javax.servlet.http.HttpServletRequest request, java.lang.String productCode)
protected void
initBinderConfigData(org.springframework.web.bind.WebDataBinder binder)
protected UiStatus
initializeUiStatus(ConfigurationData configData)
protected boolean
isConfigLinkedToCart(java.lang.String configId)
protected boolean
isConfigRemoved(java.lang.String productCode)
protected ConfigurationData
loadNewConfiguration(KBKeyData kbKey)
protected void
logConfigurationCheckDeviation(org.springframework.validation.BindingResult errors, ConfigurationData configData)
The ConflictChecker checks only visible characteristics for consistency and completeness as only those characteristics might be changed by the user.
If the model is modeled in a way that a conflict appears for an invisible characteristic or an invisible characteristic is mandatory but not filled this would not be identified by those checks but the overall configuration status is not consistent/complete.protected void
logLoadConfig(ConfigurationData configData, java.lang.String action)
protected void
logModelmetaData(ConfigurationData configData)
protected void
logRequestMetaData(ConfigurationData configData, javax.servlet.http.HttpServletRequest request)
protected void
populateCMSAttributes(org.springframework.ui.Model model)
protected void
populateProductData(ProductData productData, org.springframework.ui.Model model)
protected ProductData
populateProductData(java.lang.String productCode, org.springframework.ui.Model model, javax.servlet.http.HttpServletRequest request)
protected ProductData
populateProductDetailForDisplay(java.lang.String productCode, org.springframework.ui.Model model)
protected ConfigurationData
reloadConfigurationById(java.lang.String configId, KBKeyData kbKey, UiStatus uiStatus)
protected ConfigurationData
reloadConfigurationByKBKey(KBKeyData kbKey, UiStatus uiStatus)
protected void
removeNullCstics(java.util.List<UiGroupData> groups)
protected void
removeNullCsticsFromGroup(java.util.List<CsticData> dirtyList)
void
setAbstractOrderEntryLinkStrategy(ConfigurationAbstractOrderEntryLinkStrategy configurationAbstractOrderEntryLinkStrategy)
void
setBreadcrumbBuilder(ProductConfigureBreadcrumbBuilder productConfigurationBreadcrumbBuilder)
protected void
setCartEntryLinks(ConfigurationData configData)
void
setCartFacade(CartFacade cartFacade)
void
setConfigCartFacade(ConfigurationCartIntegrationFacade configCartFacade)
void
setConfigFacade(ConfigurationFacade configFacade)
void
setConfigurationErrorHandler(ConfigErrorHandler configurationErrorHandler)
void
setProductConfigurationConflictChecker(ConflictChecker productConfigurationConflictChecker)
void
setProductConfigurationValidator(org.springframework.validation.Validator productConfigurationValidator)
void
setProductFacade(ProductFacade productFacade)
void
setProductLinkStrategy(ConfigurationProductLinkStrategy configurationProductLinkStrategy)
void
setProductService(ProductService productService)
void
setSessionAccessFacade(SessionAccessFacade sessionAccessFacade)
void
setUiRecorder(UiTrackingRecorder uiRecorder)
void
setUiStateHandler(UiStateHandler uiStateHandler)
protected void
setUiStatusForConfig(ConfigurationData configData, UiStatus uiStatus)
void
setUiStatusSync(UiStatusSync uiStatusSync)
protected void
updatePageTitle(java.lang.String productCode, org.springframework.ui.Model model)
-
Methods inherited from class de.hybris.platform.acceleratorstorefrontcommons.controllers.pages.AbstractPageController
addRegistrationConsentDataToModel, checkRequestUrl, createMetaElement, decodeWithScheme, getBaseSiteService, getCheckoutRedirectUrl, getCmsPageService, getCmsPreviewService, getCmsSiteService, getConfigurationService, getConsentFacade, getContentPageForLabelOrId, getCurrencies, getCurrentCurrency, getCurrentLanguage, getCustomerFacade, getHostConfigService, getI18nService, getLanguages, getMessageSource, getPageTitleResolver, getRequestContextData, getSessionService, getSiteConfigService, getSiteName, getSiteUid, getStoreSessionFacade, getUser, getUserFacade, getViewForPage, getViewForPage, prepareNotFoundPage, setUpMetaData, setUpMetaDataForContentPage, storeCmsPageInModel, storeContentPageTitleInModel, storeContinueUrl, urlEncode
-
Methods inherited from class de.hybris.platform.acceleratorstorefrontcommons.controllers.AbstractController
addRequestToModel, getBean
-
-
-
-
Field Detail
-
CMS_PC_PAGE_TYPE
protected static final java.lang.String CMS_PC_PAGE_TYPE
- See Also:
- Constant Field Values
-
CMS_PC_PAGE_ID
protected static final java.lang.String CMS_PC_PAGE_ID
- See Also:
- Constant Field Values
-
CMS_PAGE_TYPE
protected static final java.lang.String CMS_PAGE_TYPE
- See Also:
- Constant Field Values
-
-
Method Detail
-
initBinderConfigData
@InitBinder("config") protected void initBinderConfigData(org.springframework.web.bind.WebDataBinder binder)
-
getBindingResultForConfigAndSaveUiStatus
protected org.springframework.validation.BindingResult getBindingResultForConfigAndSaveUiStatus(ConfigurationData configData, UiStatus uiStatus)
-
getBindingResultForConfiguration
protected org.springframework.validation.BindingResult getBindingResultForConfiguration(ConfigurationData configData, UiStatus uiStatus)
-
logConfigurationCheckDeviation
protected void logConfigurationCheckDeviation(org.springframework.validation.BindingResult errors, ConfigurationData configData)
The ConflictChecker checks only visible characteristics for consistency and completeness as only those characteristics might be changed by the user.
If the model is modeled in a way that a conflict appears for an invisible characteristic or an invisible characteristic is mandatory but not filled this would not be identified by those checks but the overall configuration status is not consistent/complete. This leads to a situation where the configuration cannot be sent to the backend system.
In this case the modeler needs to improve the model to avoid such situations. The user cannot do anything about this so this is only logged as an error as a hint for the modeler.
-
setCartEntryLinks
protected void setCartEntryLinks(ConfigurationData configData)
-
getCartItemByProductCode
protected java.lang.String getCartItemByProductCode(java.lang.String productCode)
-
getCartItemByConfigId
protected java.lang.String getCartItemByConfigId(java.lang.String configId)
-
isConfigLinkedToCart
protected boolean isConfigLinkedToCart(java.lang.String configId)
-
getCartEntryNumber
protected java.lang.Integer getCartEntryNumber(java.lang.String productCode) throws BusinessException
- Throws:
BusinessException
-
getUiStatusForConfig
protected UiStatus getUiStatusForConfig(ConfigurationData configData)
-
setUiStatusForConfig
protected void setUiStatusForConfig(ConfigurationData configData, UiStatus uiStatus)
-
getUiStatusForConfigId
protected UiStatus getUiStatusForConfigId(java.lang.String configId)
-
getCartEntryNumber
protected java.lang.Integer getCartEntryNumber(AbstractOrderData orderData, java.lang.String configId) throws BusinessException
- Throws:
BusinessException
-
loadNewConfiguration
protected ConfigurationData loadNewConfiguration(KBKeyData kbKey)
-
initializeUiStatus
protected UiStatus initializeUiStatus(ConfigurationData configData)
-
reloadConfigurationByKBKey
protected ConfigurationData reloadConfigurationByKBKey(KBKeyData kbKey, UiStatus uiStatus)
-
reloadConfigurationById
protected ConfigurationData reloadConfigurationById(java.lang.String configId, KBKeyData kbKey, UiStatus uiStatus)
-
afterReloadConfiguration
protected ConfigurationData afterReloadConfiguration(ConfigurationData configData, UiStatus uiStatus)
-
logLoadConfig
protected void logLoadConfig(ConfigurationData configData, java.lang.String action)
-
populateProductData
protected ProductData populateProductData(java.lang.String productCode, org.springframework.ui.Model model, javax.servlet.http.HttpServletRequest request)
-
populateCMSAttributes
protected void populateCMSAttributes(org.springframework.ui.Model model) throws CMSItemNotFoundException
- Throws:
CMSItemNotFoundException
-
getPageId
protected java.lang.String getPageId()
-
getPageType
protected java.lang.String getPageType()
-
populateProductDetailForDisplay
protected ProductData populateProductDetailForDisplay(java.lang.String productCode, org.springframework.ui.Model model)
-
getProductDataForProductCode
protected ProductData getProductDataForProductCode(java.lang.String productCode)
-
populateProductData
protected void populateProductData(ProductData productData, org.springframework.ui.Model model)
-
getGalleryImages
protected java.util.List<java.util.Map<java.lang.String,ImageData>> getGalleryImages(ProductData productData)
-
cleanUpSessionAttribute
protected void cleanUpSessionAttribute(java.lang.String productCode)
-
removeNullCsticsFromGroup
protected void removeNullCsticsFromGroup(java.util.List<CsticData> dirtyList)
-
removeNullCstics
protected void removeNullCstics(java.util.List<UiGroupData> groups)
-
handleRequestContext
protected void handleRequestContext(javax.servlet.http.HttpServletRequest request, java.lang.String productCode)
-
logModelmetaData
protected void logModelmetaData(ConfigurationData configData)
-
logRequestMetaData
protected void logRequestMetaData(ConfigurationData configData, javax.servlet.http.HttpServletRequest request)
-
updatePageTitle
protected void updatePageTitle(java.lang.String productCode, org.springframework.ui.Model model)
-
getConfigFacade
protected ConfigurationFacade getConfigFacade()
-
getConfigCartFacade
protected ConfigurationCartIntegrationFacade getConfigCartFacade()
-
getSessionAccessFacade
protected SessionAccessFacade getSessionAccessFacade()
-
getProductConfigurationValidator
protected org.springframework.validation.Validator getProductConfigurationValidator()
-
getProductConfigurationConflictChecker
protected ConflictChecker getProductConfigurationConflictChecker()
-
getProductFacade
protected ProductFacade getProductFacade()
-
getProductService
protected ProductService getProductService()
-
getOrderEntry
protected OrderEntryData getOrderEntry(int entryNumber, AbstractOrderData abstractOrder) throws BusinessException
- Throws:
BusinessException
-
getOrderEntry
protected java.util.Optional<OrderEntryData> getOrderEntry(java.lang.String cartItemKey, AbstractOrderData abstractOrder) throws BusinessException
- Throws:
BusinessException
-
getProductCodeForCartItem
protected java.lang.String getProductCodeForCartItem(java.lang.String cartItemKey) throws BusinessException
- Throws:
BusinessException
-
getBreadcrumbBuilder
protected ProductConfigureBreadcrumbBuilder getBreadcrumbBuilder()
-
setConfigFacade
public void setConfigFacade(ConfigurationFacade configFacade)
- Parameters:
configFacade
- CPQ facade
-
setConfigCartFacade
public void setConfigCartFacade(ConfigurationCartIntegrationFacade configCartFacade)
- Parameters:
configCartFacade
- CPQ cart integration facade
-
setSessionAccessFacade
public void setSessionAccessFacade(SessionAccessFacade sessionAccessFacade)
- Parameters:
sessionAccessFacade
- CPQ session cache access
-
getAbstractOrderEntryLinkStrategy
protected ConfigurationAbstractOrderEntryLinkStrategy getAbstractOrderEntryLinkStrategy()
-
setAbstractOrderEntryLinkStrategy
public void setAbstractOrderEntryLinkStrategy(ConfigurationAbstractOrderEntryLinkStrategy configurationAbstractOrderEntryLinkStrategy)
-
setProductConfigurationValidator
public void setProductConfigurationValidator(org.springframework.validation.Validator productConfigurationValidator)
- Parameters:
productConfigurationValidator
- CPQ validator
-
setProductConfigurationConflictChecker
public void setProductConfigurationConflictChecker(ConflictChecker productConfigurationConflictChecker)
- Parameters:
productConfigurationConflictChecker
- status and UI error handling&checking
-
setProductFacade
public void setProductFacade(ProductFacade productFacade)
- Parameters:
productFacade
- for accessing product master data
-
setProductService
public void setProductService(ProductService productService)
- Parameters:
productService
- for accessing product related service
-
setBreadcrumbBuilder
public void setBreadcrumbBuilder(ProductConfigureBreadcrumbBuilder productConfigurationBreadcrumbBuilder)
- Parameters:
productConfigurationBreadcrumbBuilder
- for building UI breadcrumbs
-
getUiRecorder
protected UiTrackingRecorder getUiRecorder()
-
setUiRecorder
public void setUiRecorder(UiTrackingRecorder uiRecorder)
- Parameters:
uiRecorder
- triggering CPQ tracking
-
isConfigRemoved
protected boolean isConfigRemoved(java.lang.String productCode)
-
getConfigurationErrorHandler
public ConfigErrorHandler getConfigurationErrorHandler()
- Returns:
- configuration error handler
-
setConfigurationErrorHandler
public void setConfigurationErrorHandler(ConfigErrorHandler configurationErrorHandler)
- Parameters:
configurationErrorHandler
- for handling configuration errors
-
getUiStateHandler
protected UiStateHandler getUiStateHandler()
-
setUiStateHandler
public void setUiStateHandler(UiStateHandler uiStateHandler)
- Parameters:
uiStateHandler
- UI state handler
-
getUiStatusSync
protected UiStatusSync getUiStatusSync()
-
setUiStatusSync
public void setUiStatusSync(UiStatusSync uiStatusSync)
- Parameters:
uiStatusSync
- UI status sync
-
getProductLinkStrategy
protected ConfigurationProductLinkStrategy getProductLinkStrategy()
-
setProductLinkStrategy
public void setProductLinkStrategy(ConfigurationProductLinkStrategy configurationProductLinkStrategy)
-
getCartFacade
protected CartFacade getCartFacade()
-
setCartFacade
public void setCartFacade(CartFacade cartFacade)
-
-