Class DefaultProductConfigCloneAbstractOrderHook

java.lang.Object
de.hybris.platform.cpq.productconfig.services.hooks.DefaultProductConfigCloneAbstractOrderHook
All Implemented Interfaces:
de.hybris.platform.order.strategies.ordercloning.CloneAbstractOrderHook
Direct Known Subclasses:
SwitchableProductConfigIntegrationCloneAbstractOrderHook

public class DefaultProductConfigCloneAbstractOrderHook extends Object implements de.hybris.platform.order.strategies.ordercloning.CloneAbstractOrderHook
Default CPQ implementation of the CloneAbstractOrderHook.
It will ensure that any CPQ configuration is proper handled whenever a hybris document is cloned. In principal it will ensure that the configuration is deep copied, when both, source and traget documemnt continue to exist. So that both configurations are independent from each other. For example this is the case when an order is tranformed into a cart.
In case the source document is discarded, no deep copy will take place. Instead the existing configuration is used for the target document, to save the overhead of deep copying a configuration. For example this is the case for the cart to order transformation.
  • Constructor Details

    • DefaultProductConfigCloneAbstractOrderHook

      public DefaultProductConfigCloneAbstractOrderHook(ConfigurationService cpqService, ConfigurationServiceLayerHelper serviceLayerHelper, int itemsStart, int itemsIncrement)
      Constructor that gets the needed beans. The default clone strategy is injected via setter injection as we might get circular dependency issues otherwise.
      Parameters:
      cpqService - Configuration service
      serviceLayerHelper -
      itemsStart -
      itemsIncrement -
  • Method Details

    • beforeClone

      public void beforeClone(AbstractOrderModel original, Class abstractOrderClassResult)
      Specified by:
      beforeClone in interface de.hybris.platform.order.strategies.ordercloning.CloneAbstractOrderHook
    • afterClone

      public <T extends AbstractOrderModel> void afterClone(AbstractOrderModel original, T clone, Class abstractOrderClassResult)
      Specified by:
      afterClone in interface de.hybris.platform.order.strategies.ordercloning.CloneAbstractOrderHook
    • beforeCloneEntries

      public void beforeCloneEntries(AbstractOrderModel original)
      Specified by:
      beforeCloneEntries in interface de.hybris.platform.order.strategies.ordercloning.CloneAbstractOrderHook
    • afterCloneEntries

      public <T extends AbstractOrderEntryModel> void afterCloneEntries(AbstractOrderModel original, List<T> clonedEntries)
      Specified by:
      afterCloneEntries in interface de.hybris.platform.order.strategies.ordercloning.CloneAbstractOrderHook
    • adjustEntryNumbers

      public void adjustEntryNumbers(Map<AbstractOrderEntryModel,Integer> entryNumberMappings)
      Specified by:
      adjustEntryNumbers in interface de.hybris.platform.order.strategies.ordercloning.CloneAbstractOrderHook
    • updateEntryNumbers

      protected void updateEntryNumbers(Map<AbstractOrderEntryModel,Integer> entryNumberMappings)
    • checkIfEntryNumbersIncrementedByOne

      protected boolean checkIfEntryNumbersIncrementedByOne(Collection<Integer> values)
    • isCloneConfigNeeded

      public boolean isCloneConfigNeeded(AbstractOrderModel source, Class<?> targetClass)
      Checks whether a deep copy of the configuration is needed
      Parameters:
      source - source abstract order document
      targetClass - target abstract order document class
      Returns:
      is deep copy of configuration needed
    • isCartToCart

      protected boolean isCartToCart(AbstractOrderModel source, Class<?> targetClass)
    • isQuoteToCart

      protected boolean isQuoteToCart(AbstractOrderModel source, Class<?> targetClass)
    • isOrderToCart

      protected boolean isOrderToCart(AbstractOrderModel source, Class<?> targetClass)
    • isQuoteToQuote

      protected boolean isQuoteToQuote(AbstractOrderModel source, Class<?> targetClass)
    • isSubClass

      protected boolean isSubClass(Class<?> baseClass, Class<?> subClass)
    • cloneConfig

      protected void cloneConfig(AbstractOrderModel source, AbstractOrderEntryModel sourceEntry, AbstractOrderEntryModel targetEntry)
    • copyConfig

      protected void copyConfig(AbstractOrderEntryModel sourceEntry, AbstractOrderEntryModel targetEntry)