Class DefaultPriceDataService<P extends PriceData>

java.lang.Object
com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
com.broadleafcommerce.pricing.service.DefaultPriceDataService<P>
All Implemented Interfaces:
com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService<P>, PriceDataService<P>

public class DefaultPriceDataService<P extends PriceData> extends com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P> implements PriceDataService<P>
Author:
Chad Harchar (charchar)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    DefaultPriceDataService(PriceDataRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, PriceListRepository<com.broadleafcommerce.data.tracking.core.Trackable> priceListRepository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, com.broadleafcommerce.common.extension.TypeFactory pricingFactory, com.broadleafcommerce.common.extension.cache.CacheStateManager cacheStateManager)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected List<P>
    convertFromDomain(List<com.broadleafcommerce.data.tracking.core.Trackable> trackables, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    protected org.springframework.data.domain.Page<P>
    convertFromDomain(org.springframework.data.domain.Page<com.broadleafcommerce.data.tracking.core.Trackable> trackables, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    protected Collection<com.broadleafcommerce.pricing.client.domain.PriceableTargetRef>
    convertTargetsToRefs(Collection<com.broadleafcommerce.pricing.client.domain.PriceableTarget> targets)
     
    com.broadleafcommerce.pricing.client.domain.PriceableTargetRef
    convertTargetToRef(com.broadleafcommerce.pricing.client.domain.PriceableTarget target)
     
    create(PriceList priceList, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    create(P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    void
    delete(PriceList priceList, String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    findByPriceableTargetRefAndPriceListId(com.broadleafcommerce.pricing.client.domain.PriceableTargetRef target, String priceListId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Finds the PriceData that has the given PriceData.target and
    org.springframework.data.domain.Page<P>
    findByPriceList(String priceListId, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    org.springframework.data.domain.Page<P>
    findByPriceList(String priceListId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Deprecated, for removal: This API element is subject to removal in a future version.
    org.springframework.data.domain.Page<P>
    findByPriceListAndTarget(String priceListId, String targetType, Collection<String> targetIds, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    org.springframework.data.domain.Page<P>
    findByPriceListAndTarget(String priceListId, String targetType, Collection<String> targetIds, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Deprecated, for removal: This API element is subject to removal in a future version.
    findByTargetInAndPriceListIn(Collection<com.broadleafcommerce.pricing.client.domain.PriceableTarget> targets, Collection<String> priceListIds, boolean filterByVendor, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Uses the cache first to find a list of price data by the given PriceableTargetRefs and price list ids, if not found from cache, delegates to PriceDataService.findByTargetRefInAndPriceListIn(Collection, Collection, boolean, ContextInfo)
    findByTargetRefInAndPriceListIn(Collection<com.broadleafcommerce.pricing.client.domain.PriceableTargetRef> targets, Collection<String> priceListIds, boolean filterByVendor, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Uses the repository to find a list of price data by the given PriceableTargetRefs and price list ids.
    protected P
    fixCurrency(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, P priceData)
     
    protected String
    getCacheByTargetsAndPriceListKey(@NonNull com.broadleafcommerce.pricing.client.domain.PriceableTarget target)
     
    protected String
    getCacheByTargetsAndPriceListKey(@NonNull com.broadleafcommerce.pricing.client.domain.PriceableTarget target, boolean filterByVendor)
     
    protected String
    getCacheByTargetsAndPriceListKey(@NonNull com.broadleafcommerce.pricing.client.domain.PriceableTargetRef target)
     
    protected String
    getCacheByTargetsAndPriceListKey(@NonNull com.broadleafcommerce.pricing.client.domain.PriceableTargetRef target, boolean filterByVendor)
     
    protected PriceListRepository<com.broadleafcommerce.data.tracking.core.Trackable>
     
    protected com.broadleafcommerce.common.extension.TypeFactory
     
    protected PriceDataRepository<com.broadleafcommerce.data.tracking.core.Trackable>
     
    protected void
    initializeCurrency(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, String priceListId)
     
    protected void
    populatePriceListCurrencyMap(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, org.springframework.data.domain.Page<com.broadleafcommerce.data.tracking.core.Trackable> priceData)
     
    readAllByPriceListId(String priceListId, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    readByContextId(PriceList priceList, String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    readByContextId(String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    replace(PriceList priceList, String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    replace(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    protected void
    setupPlaceholderCurrency(com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    Useful when reading priceData as we don't yet know the correct currency which is needed by the model mapper when reading by id.
    protected org.springframework.data.domain.Pageable
    transformSort(org.springframework.data.domain.Pageable pageable)
     
    update(PriceList priceList, String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     
    update(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
     

    Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService

    getRsqlHelper, readAll, readAll, readAll, readAll

    Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService

    convertFromPersistentDomain, convertToPersistentDomain, createAll, createAllAllowingPartialSuccess, delete, getHelper, getSortPositionStrategy, readAll, readAll, readAll, readAllByContextId, replaceAll, replaceAllAllowingPartialSuccess, setSortPositionStrategy, updateAll, updateAllAllowingPartialSuccess, updateSort

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService

    createAll, createAllAllowingPartialSuccess, delete, readAll, readAll, readAll, readAllByContextId, replaceAll, replaceAllAllowingPartialSuccess, updateAll, updateAllAllowingPartialSuccess, updateSort

    Methods inherited from interface com.broadleafcommerce.pricing.service.PriceDataService

    findByTargetInAndPriceListIn, findByTargetRefInAndPriceListIn

    Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService

    readAll, readAll, readAll, readAll
  • Field Details

  • Constructor Details

    • DefaultPriceDataService

      public DefaultPriceDataService(PriceDataRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, PriceListRepository<com.broadleafcommerce.data.tracking.core.Trackable> priceListRepository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, com.broadleafcommerce.common.extension.TypeFactory pricingFactory, com.broadleafcommerce.common.extension.cache.CacheStateManager cacheStateManager)
  • Method Details

    • findByPriceList

      @NonNull @Deprecated(since="1.7.2", forRemoval=true) public org.springframework.data.domain.Page<P> findByPriceList(@NonNull String priceListId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Specified by:
      findByPriceList in interface PriceDataService<P extends PriceData>
    • findByPriceList

      @NonNull public org.springframework.data.domain.Page<P> findByPriceList(@NonNull String priceListId, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      findByPriceList in interface PriceDataService<P extends PriceData>
    • transformSort

      protected org.springframework.data.domain.Pageable transformSort(org.springframework.data.domain.Pageable pageable)
    • findByPriceListAndTarget

      @NonNull @Deprecated(since="1.7.2", forRemoval=true) public org.springframework.data.domain.Page<P> findByPriceListAndTarget(@Nullable String priceListId, @Nullable String targetType, @Nullable Collection<String> targetIds, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Specified by:
      findByPriceListAndTarget in interface PriceDataService<P extends PriceData>
    • findByPriceListAndTarget

      @NonNull public org.springframework.data.domain.Page<P> findByPriceListAndTarget(@Nullable String priceListId, @Nullable String targetType, @Nullable Collection<String> targetIds, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      findByPriceListAndTarget in interface PriceDataService<P extends PriceData>
    • readAllByPriceListId

      public Stream<P> readAllByPriceListId(String priceListId, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      readAllByPriceListId in interface PriceDataService<P extends PriceData>
    • findByPriceableTargetRefAndPriceListId

      @NonNull public Optional<P> findByPriceableTargetRefAndPriceListId(com.broadleafcommerce.pricing.client.domain.PriceableTargetRef target, String priceListId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: PriceDataService
      Finds the PriceData that has the given PriceData.target and
      Specified by:
      findByPriceableTargetRefAndPriceListId in interface PriceDataService<P extends PriceData>
      Returns:
    • findByTargetRefInAndPriceListIn

      @NonNull public List<P> findByTargetRefInAndPriceListIn(Collection<com.broadleafcommerce.pricing.client.domain.PriceableTargetRef> targets, Collection<String> priceListIds, boolean filterByVendor, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: PriceDataService
      Uses the repository to find a list of price data by the given PriceableTargetRefs and price list ids.
      Specified by:
      findByTargetRefInAndPriceListIn in interface PriceDataService<P extends PriceData>
      Parameters:
      targets - a list of PriceableTargetRefs to match
      priceListIds - a list of price list ids to look for
      filterByVendor - whether to also filter the price data based on the {@link {@link PriceableTargetRef#getVendorRef()}. When this is false, vendor-discriminated targets will also get non-vendor price data.
      Returns:
      a list of price data by the given PriceableTargetRefs and price list ids from the repository
    • findByTargetInAndPriceListIn

      @NonNull public List<P> findByTargetInAndPriceListIn(@NonNull Collection<com.broadleafcommerce.pricing.client.domain.PriceableTarget> targets, @NonNull Collection<String> priceListIds, boolean filterByVendor, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Description copied from interface: PriceDataService
      Uses the cache first to find a list of price data by the given PriceableTargetRefs and price list ids, if not found from cache, delegates to PriceDataService.findByTargetRefInAndPriceListIn(Collection, Collection, boolean, ContextInfo)
      Specified by:
      findByTargetInAndPriceListIn in interface PriceDataService<P extends PriceData>
      Parameters:
      targets - a list of PriceableTargetRefs to match
      priceListIds - a list of price list ids to look for
      filterByVendor - whether to also filter the price data based on the {@link {@link PriceableTargetRef#getVendorRef()}. When this is false, vendor-discriminated targets will also get non-vendor price data.
      Returns:
      a list of price data by the given PriceableTargetRefs and price list ids from cache if found in cache, otherwise from the repository
    • getCacheByTargetsAndPriceListKey

      protected String getCacheByTargetsAndPriceListKey(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.PriceableTargetRef target)
      See Also:
    • getCacheByTargetsAndPriceListKey

      protected String getCacheByTargetsAndPriceListKey(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.PriceableTargetRef target, boolean filterByVendor)
    • getCacheByTargetsAndPriceListKey

      protected String getCacheByTargetsAndPriceListKey(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.PriceableTarget target)
      See Also:
    • getCacheByTargetsAndPriceListKey

      protected String getCacheByTargetsAndPriceListKey(@NonNull @NonNull com.broadleafcommerce.pricing.client.domain.PriceableTarget target, boolean filterByVendor)
    • convertTargetsToRefs

      protected Collection<com.broadleafcommerce.pricing.client.domain.PriceableTargetRef> convertTargetsToRefs(Collection<com.broadleafcommerce.pricing.client.domain.PriceableTarget> targets)
    • readByContextId

      @NonNull public P readByContextId(@NonNull PriceList priceList, @NonNull String id, @NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      readByContextId in interface PriceDataService<P extends PriceData>
    • update

      @NonNull public P update(@NonNull PriceList priceList, @NonNull String id, @NonNull P businessInstance, @NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      update in interface PriceDataService<P extends PriceData>
    • delete

      public void delete(@NonNull PriceList priceList, @NonNull String id, @NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      delete in interface PriceDataService<P extends PriceData>
    • replace

      @NonNull public P replace(@NonNull PriceList priceList, @NonNull String id, @NonNull P businessInstance, @NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      replace in interface PriceDataService<P extends PriceData>
    • create

      @NonNull public P create(@NonNull PriceList priceList, @NonNull P businessInstance, @NonNull com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      create in interface PriceDataService<P extends PriceData>
    • convertTargetToRef

      @Nullable public com.broadleafcommerce.pricing.client.domain.PriceableTargetRef convertTargetToRef(@Nullable com.broadleafcommerce.pricing.client.domain.PriceableTarget target)
      Specified by:
      convertTargetToRef in interface PriceDataService<P extends PriceData>
    • convertFromDomain

      protected List<P> convertFromDomain(List<com.broadleafcommerce.data.tracking.core.Trackable> trackables, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • convertFromDomain

      protected org.springframework.data.domain.Page<P> convertFromDomain(org.springframework.data.domain.Page<com.broadleafcommerce.data.tracking.core.Trackable> trackables, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
    • readByContextId

      public P readByContextId(@NonNull String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      readByContextId in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends PriceData>
      Overrides:
      readByContextId in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends PriceData>
    • update

      public P update(@NonNull String id, @NonNull P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      update in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends PriceData>
      Overrides:
      update in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends PriceData>
    • replace

      public P replace(@NonNull String id, @NonNull P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      replace in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends PriceData>
      Overrides:
      replace in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends PriceData>
    • create

      public P create(@NonNull P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Specified by:
      create in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends PriceData>
      Overrides:
      create in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends PriceData>
    • setupPlaceholderCurrency

      protected void setupPlaceholderCurrency(com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Useful when reading priceData as we don't yet know the correct currency which is needed by the model mapper when reading by id. The "fixCurrency" method will be called to adjust the PriceData before returning to the caller. Sets the Context to the default currency.
    • fixCurrency

      protected P fixCurrency(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, P priceData)
    • populatePriceListCurrencyMap

      protected void populatePriceListCurrencyMap(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, org.springframework.data.domain.Page<com.broadleafcommerce.data.tracking.core.Trackable> priceData)
    • initializeCurrency

      protected void initializeCurrency(com.broadleafcommerce.data.tracking.core.context.ContextInfo context, String priceListId)
    • getRepository

      @NonNull protected PriceDataRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
      Overrides:
      getRepository in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends PriceData>
    • getPriceListRepository

      @NonNull protected PriceListRepository<com.broadleafcommerce.data.tracking.core.Trackable> getPriceListRepository()
    • getPricingFactory

      @NonNull protected com.broadleafcommerce.common.extension.TypeFactory getPricingFactory()