Class ProductCustomPersistenceHandler

java.lang.Object
org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
org.broadleafcommerce.admin.server.service.handler.ProductCustomPersistenceHandler
All Implemented Interfaces:
org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler, org.springframework.core.Ordered

@Component("blProductCustomPersistenceHandler") public class ProductCustomPersistenceHandler extends org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
Author:
Jeff Fischer
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected org.broadleafcommerce.core.catalog.service.CatalogService
     
    protected static final String
     
    protected boolean
     
     
    protected static final String
     
    protected org.broadleafcommerce.common.service.ParentCategoryLegacyModeService
     
    protected long
     
    protected org.broadleafcommerce.common.sandbox.SandBoxHelper
     
    protected org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.converter.FilterValueConverter<String>
     

    Fields inherited from interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler

    DEFAULT_ORDER

    Fields inherited from interface org.springframework.core.Ordered

    HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    org.broadleafcommerce.openadmin.dto.Entity
    add(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     
    protected void
    addSandBoxDefaultSkuNameFilter(org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao)
    The product name is stored on its default sku.
    protected org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.FilterMapping
     
    canHandleAdd(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
     
    canHandleFetch(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
     
    canHandleInspect(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
     
    canHandleRemove(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
     
    canHandleUpdate(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
     
    protected org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.FilterMapping
    createFilterMappingForProperty(String targetPropertyName, org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.predicate.PredicateProvider predicateProvider)
     
    org.broadleafcommerce.openadmin.dto.DynamicResultSet
    fetch(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     
    protected List<Long>
    findProductIdsByDefaultSkuIds(jakarta.persistence.EntityManager entityManager, Set<Long> defaultSkuIds)
     
    protected List<Long>
    findSkuIdsByName(jakarta.persistence.EntityManager entityManager, String name)
     
    protected org.broadleafcommerce.core.catalog.domain.Product
    getAdminInstance(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper, org.broadleafcommerce.openadmin.dto.Entity entity)
     
    protected org.broadleafcommerce.core.catalog.domain.CategoryProductXref
    getCurrentDefaultXref(org.broadleafcommerce.core.catalog.domain.Product product)
     
    protected org.broadleafcommerce.core.catalog.domain.Category
    getExistingDefaultCategory(org.broadleafcommerce.core.catalog.domain.Product product)
     
    protected org.broadleafcommerce.openadmin.dto.DynamicResultSet
    getFilteredDynamicResultSet(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     
    protected Set<Long>
    Returns the given sku ids along with the original sku of each one that is a sandbox clone.
    org.broadleafcommerce.openadmin.dto.DynamicResultSet
    inspect(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.InspectHelper helper)
     
    protected Boolean
     
    protected boolean
    Whether the ids can be used to filter on, which is not the case when nothing matched the name or when there are more matches than a filter query can hold.
    protected boolean
    isRecursiveProductSelection(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
     
    protected void
    modifyParentCategoryMetadata(Map<String,org.broadleafcommerce.openadmin.dto.FieldMetadata> md)
     
    void
    remove(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     
    protected void
    removeBundleFieldRestrictions(org.broadleafcommerce.core.catalog.domain.ProductBundle adminInstance, Map<String,org.broadleafcommerce.openadmin.dto.FieldMetadata> adminProperties, org.broadleafcommerce.openadmin.dto.Entity entity)
    If the pricing model is of type item_sum, that property should not be required
    protected void
    removeOldDefault(org.broadleafcommerce.core.catalog.domain.Product adminInstance, org.broadleafcommerce.core.catalog.domain.CategoryProductXref oldDefault, org.broadleafcommerce.openadmin.dto.Entity entity)
     
    protected void
    removeProduct(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.core.catalog.domain.Product adminInstance, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     
    protected void
    setupXref(org.broadleafcommerce.core.catalog.domain.Product adminInstance)
     
    org.broadleafcommerce.openadmin.dto.Entity
    update(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper)
     

    Methods inherited from class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter

    getClassForName, getMetadata, getOrder, getPolymorphicClasses, getResultSet, isAdornedListOperation, isAssignableFrom, isBasicOperation, isMapOperation, meetsCustomCriteria, willHandleSecurity

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • ID_PROPERTY

      protected static final String ID_PROPERTY
      See Also:
    • DEFAULT_SKU_NAME_PROPERTY

      protected static final String DEFAULT_SKU_NAME_PROPERTY
      See Also:
    • catalogService

      protected org.broadleafcommerce.core.catalog.service.CatalogService catalogService
    • extensionManager

    • parentCategoryLegacyModeService

      protected org.broadleafcommerce.common.service.ParentCategoryLegacyModeService parentCategoryLegacyModeService
    • sandBoxHelper

      protected org.broadleafcommerce.common.sandbox.SandBoxHelper sandBoxHelper
    • stringLikeFilterValueConverter

      protected org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.converter.FilterValueConverter<String> stringLikeFilterValueConverter
    • queryLimit

      @Value("${product.query.limit:500}") protected long queryLimit
    • eagerFetchAssociations

      @Value("${product.eager.fetch.associations.admin:true}") protected boolean eagerFetchAssociations
  • Constructor Details

    • ProductCustomPersistenceHandler

      public ProductCustomPersistenceHandler()
  • Method Details

    • canHandleAdd

      public Boolean canHandleAdd(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
      Specified by:
      canHandleAdd in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      canHandleAdd in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
    • canHandleUpdate

      public Boolean canHandleUpdate(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
      Specified by:
      canHandleUpdate in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      canHandleUpdate in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
    • canHandleRemove

      public Boolean canHandleRemove(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
      Specified by:
      canHandleRemove in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      canHandleRemove in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
    • canHandleFetch

      public Boolean canHandleFetch(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
      Specified by:
      canHandleFetch in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      canHandleFetch in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
    • canHandleInspect

      public Boolean canHandleInspect(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
      Specified by:
      canHandleInspect in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      canHandleInspect in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
    • inspect

      public org.broadleafcommerce.openadmin.dto.DynamicResultSet inspect(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.InspectHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Specified by:
      inspect in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      inspect in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • fetch

      public org.broadleafcommerce.openadmin.dto.DynamicResultSet fetch(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Specified by:
      fetch in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      fetch in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • addSandBoxDefaultSkuNameFilter

      protected void addSandBoxDefaultSkuNameFilter(org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao)
      The product name is stored on its default sku. When the name is changed in a sandbox, the new name is only on the sandbox clone of the default sku, so filtering on defaultSku.name through the product may not find the product until the change is promoted.

      When skus with a matching name include sandbox clones, the name filter is replaced by a filter on the products whose default sku is one of the matching skus or the original sku of a matching clone. Sorting on the name is kept. Otherwise, the standard name filter, which also searches translations, is left unchanged.

    • findSkuIdsByName

      protected List<Long> findSkuIdsByName(jakarta.persistence.EntityManager entityManager, String name)
    • includeOriginalSkuIds

      protected Set<Long> includeOriginalSkuIds(List<Long> skuIds)
      Returns the given sku ids along with the original sku of each one that is a sandbox clone.
    • findProductIdsByDefaultSkuIds

      protected List<Long> findProductIdsByDefaultSkuIds(jakarta.persistence.EntityManager entityManager, Set<Long> defaultSkuIds)
    • isFilterable

      protected boolean isFilterable(List<Long> ids, String type)
      Whether the ids can be used to filter on, which is not the case when nothing matched the name or when there are more matches than a filter query can hold.
    • buildProductIdFilterMapping

      protected org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.FilterMapping buildProductIdFilterMapping(List<Long> productIds)
    • add

      public org.broadleafcommerce.openadmin.dto.Entity add(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Specified by:
      add in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      add in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • update

      public org.broadleafcommerce.openadmin.dto.Entity update(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Specified by:
      update in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      update in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • remove

      public void remove(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Specified by:
      remove in interface org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandler
      Overrides:
      remove in class org.broadleafcommerce.openadmin.server.service.handler.CustomPersistenceHandlerAdapter
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • getAdminInstance

      protected org.broadleafcommerce.core.catalog.domain.Product getAdminInstance(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.server.dao.DynamicEntityDao dynamicEntityDao, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper, org.broadleafcommerce.openadmin.dto.Entity entity) throws ClassNotFoundException
      Throws:
      ClassNotFoundException
    • removeProduct

      protected void removeProduct(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.core.catalog.domain.Product adminInstance, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Throws:
      org.broadleafcommerce.common.exception.ServiceException
    • removeBundleFieldRestrictions

      protected void removeBundleFieldRestrictions(org.broadleafcommerce.core.catalog.domain.ProductBundle adminInstance, Map<String,org.broadleafcommerce.openadmin.dto.FieldMetadata> adminProperties, org.broadleafcommerce.openadmin.dto.Entity entity)
      If the pricing model is of type item_sum, that property should not be required
      Parameters:
      adminInstance -
      adminProperties -
      entity -
    • isDefaultCategoryLegacyMode

      protected Boolean isDefaultCategoryLegacyMode()
    • modifyParentCategoryMetadata

      protected void modifyParentCategoryMetadata(Map<String,org.broadleafcommerce.openadmin.dto.FieldMetadata> md)
    • getExistingDefaultCategory

      protected org.broadleafcommerce.core.catalog.domain.Category getExistingDefaultCategory(org.broadleafcommerce.core.catalog.domain.Product product)
    • removeOldDefault

      protected void removeOldDefault(org.broadleafcommerce.core.catalog.domain.Product adminInstance, org.broadleafcommerce.core.catalog.domain.CategoryProductXref oldDefault, org.broadleafcommerce.openadmin.dto.Entity entity)
    • setupXref

      protected void setupXref(org.broadleafcommerce.core.catalog.domain.Product adminInstance)
    • getCurrentDefaultXref

      protected org.broadleafcommerce.core.catalog.domain.CategoryProductXref getCurrentDefaultXref(org.broadleafcommerce.core.catalog.domain.Product product)
    • isRecursiveProductSelection

      protected boolean isRecursiveProductSelection(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage)
    • createFilterMappingForProperty

      protected org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.FilterMapping createFilterMappingForProperty(String targetPropertyName, org.broadleafcommerce.openadmin.server.service.persistence.module.criteria.predicate.PredicateProvider predicateProvider)
    • getFilteredDynamicResultSet

      protected org.broadleafcommerce.openadmin.dto.DynamicResultSet getFilteredDynamicResultSet(org.broadleafcommerce.openadmin.dto.PersistencePackage persistencePackage, org.broadleafcommerce.openadmin.dto.CriteriaTransferObject cto, org.broadleafcommerce.openadmin.server.service.persistence.module.RecordHelper helper) throws org.broadleafcommerce.common.exception.ServiceException
      Throws:
      org.broadleafcommerce.common.exception.ServiceException