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.StringCMS_PAGE_TYPEprotected static java.lang.StringCMS_PC_PAGE_IDprotected static java.lang.StringCMS_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 ConfigurationDataafterReloadConfiguration(ConfigurationData configData, UiStatus uiStatus)protected voidcleanUpSessionAttribute(java.lang.String productCode)protected ConfigurationAbstractOrderEntryLinkStrategygetAbstractOrderEntryLinkStrategy()protected org.springframework.validation.BindingResultgetBindingResultForConfigAndSaveUiStatus(ConfigurationData configData, UiStatus uiStatus)protected org.springframework.validation.BindingResultgetBindingResultForConfiguration(ConfigurationData configData, UiStatus uiStatus)protected ProductConfigureBreadcrumbBuildergetBreadcrumbBuilder()protected java.lang.IntegergetCartEntryNumber(AbstractOrderData orderData, java.lang.String configId)protected java.lang.IntegergetCartEntryNumber(java.lang.String productCode)protected CartFacadegetCartFacade()protected java.lang.StringgetCartItemByConfigId(java.lang.String configId)protected java.lang.StringgetCartItemByProductCode(java.lang.String productCode)protected ConfigurationCartIntegrationFacadegetConfigCartFacade()protected ConfigurationFacadegetConfigFacade()ConfigErrorHandlergetConfigurationErrorHandler()protected java.util.List<java.util.Map<java.lang.String,ImageData>>getGalleryImages(ProductData productData)protected OrderEntryDatagetOrderEntry(int entryNumber, AbstractOrderData abstractOrder)protected java.util.Optional<OrderEntryData>getOrderEntry(java.lang.String cartItemKey, AbstractOrderData abstractOrder)protected java.lang.StringgetPageId()protected java.lang.StringgetPageType()protected java.lang.StringgetProductCodeForCartItem(java.lang.String cartItemKey)protected ConflictCheckergetProductConfigurationConflictChecker()protected org.springframework.validation.ValidatorgetProductConfigurationValidator()protected ProductDatagetProductDataForProductCode(java.lang.String productCode)protected ProductFacadegetProductFacade()protected ConfigurationProductLinkStrategygetProductLinkStrategy()protected ProductServicegetProductService()protected SessionAccessFacadegetSessionAccessFacade()protected UiTrackingRecordergetUiRecorder()protected UiStateHandlergetUiStateHandler()protected UiStatusgetUiStatusForConfig(ConfigurationData configData)protected UiStatusgetUiStatusForConfigId(java.lang.String configId)protected UiStatusSyncgetUiStatusSync()protected voidhandleRequestContext(javax.servlet.http.HttpServletRequest request, java.lang.String productCode)protected voidinitBinderConfigData(org.springframework.web.bind.WebDataBinder binder)protected UiStatusinitializeUiStatus(ConfigurationData configData)protected booleanisConfigLinkedToCart(java.lang.String configId)protected booleanisConfigRemoved(java.lang.String productCode)protected ConfigurationDataloadNewConfiguration(KBKeyData kbKey)protected voidlogConfigurationCheckDeviation(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 voidlogLoadConfig(ConfigurationData configData, java.lang.String action)protected voidlogModelmetaData(ConfigurationData configData)protected voidlogRequestMetaData(ConfigurationData configData, javax.servlet.http.HttpServletRequest request)protected voidpopulateCMSAttributes(org.springframework.ui.Model model)protected voidpopulateProductData(ProductData productData, org.springframework.ui.Model model)protected ProductDatapopulateProductData(java.lang.String productCode, org.springframework.ui.Model model, javax.servlet.http.HttpServletRequest request)protected ProductDatapopulateProductDetailForDisplay(java.lang.String productCode, org.springframework.ui.Model model)protected ConfigurationDatareloadConfigurationById(java.lang.String configId, KBKeyData kbKey, UiStatus uiStatus)protected ConfigurationDatareloadConfigurationByKBKey(KBKeyData kbKey, UiStatus uiStatus)protected voidremoveNullCstics(java.util.List<UiGroupData> groups)protected voidremoveNullCsticsFromGroup(java.util.List<CsticData> dirtyList)voidsetAbstractOrderEntryLinkStrategy(ConfigurationAbstractOrderEntryLinkStrategy configurationAbstractOrderEntryLinkStrategy)voidsetBreadcrumbBuilder(ProductConfigureBreadcrumbBuilder productConfigurationBreadcrumbBuilder)protected voidsetCartEntryLinks(ConfigurationData configData)voidsetCartFacade(CartFacade cartFacade)voidsetConfigCartFacade(ConfigurationCartIntegrationFacade configCartFacade)voidsetConfigFacade(ConfigurationFacade configFacade)voidsetConfigurationErrorHandler(ConfigErrorHandler configurationErrorHandler)voidsetProductConfigurationConflictChecker(ConflictChecker productConfigurationConflictChecker)voidsetProductConfigurationValidator(org.springframework.validation.Validator productConfigurationValidator)voidsetProductFacade(ProductFacade productFacade)voidsetProductLinkStrategy(ConfigurationProductLinkStrategy configurationProductLinkStrategy)voidsetProductService(ProductService productService)voidsetSessionAccessFacade(SessionAccessFacade sessionAccessFacade)voidsetUiRecorder(UiTrackingRecorder uiRecorder)voidsetUiStateHandler(UiStateHandler uiStateHandler)protected voidsetUiStatusForConfig(ConfigurationData configData, UiStatus uiStatus)voidsetUiStatusSync(UiStatusSync uiStatusSync)protected voidupdatePageTitle(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)
-
-