Class JpaCustomizedOfferRepository<D extends JpaOffer>
java.lang.Object
com.broadleafcommerce.promotion.offer.provider.jpa.repository.JpaCustomizedOfferRepository<D>
- All Implemented Interfaces:
CustomizedOfferRepository<D>
,org.springframework.beans.factory.InitializingBean
public class JpaCustomizedOfferRepository<D extends JpaOffer>
extends Object
implements CustomizedOfferRepository<D>, org.springframework.beans.factory.InitializingBean
- Author:
- Chad Harchar (charchar)
-
Constructor Summary
ConstructorDescriptionJpaCustomizedOfferRepository
(com.broadleafcommerce.data.tracking.core.TrackableBehaviorUtil behaviorUtil, com.broadleafcommerce.data.tracking.jpa.filtering.fetch.rsql.JpaFiltersCriteriaBuilder criteriaBuilder) -
Method Summary
Modifier and TypeMethodDescriptionvoid
protected jakarta.persistence.criteria.Predicate
buildAutomaticOrCodeOrCustomerOffersPredicate
(Iterable<? extends UserTarget> userTargets, Iterable<String> offerIdsToFilterOn, Iterable<String> trackingIds, jakarta.persistence.criteria.CriteriaQuery<D> criteria, jakarta.persistence.criteria.CriteriaBuilder builder, jakarta.persistence.criteria.Root<D> topRoot, Map<String, Object> params) protected jakarta.persistence.criteria.Subquery<String>
buildSharedCodesSubquery
(jakarta.persistence.criteria.CriteriaQuery<JpaOffer> criteria, jakarta.persistence.criteria.CriteriaBuilder builder) protected jakarta.persistence.criteria.Predicate
buildTrackingOffersPredicate
(Iterable<String> trackingIds, jakarta.persistence.criteria.CriteriaQuery<D> criteria, jakarta.persistence.criteria.CriteriaBuilder builder, jakarta.persistence.criteria.Root<D> topRoot, Map<String, Object> params) protected jakarta.persistence.criteria.Subquery<String>
buildTrackingSubquery
(jakarta.persistence.criteria.CriteriaQuery<D> criteria, jakarta.persistence.criteria.CriteriaBuilder builder) protected jakarta.persistence.criteria.Subquery<String>
buildUserTargetSubquery
(jakarta.persistence.criteria.CriteriaQuery<D> criteria, jakarta.persistence.criteria.CriteriaBuilder builder, int userTargetsSize) findAllCustomerOffers
(Iterable<? extends UserTarget> userTargets, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Read all offers that have no user targets or contain the provided user targets.findAllOfferIdsForFullCache
(com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Read all contextIds for offer in the system based on full cache configuration.Read a list of distinct tenants for all offersfindAutomaticOffers
(com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Read all offers whereOffer.isAutomaticallyConsidered()
is true excluding any offers whose getActiveEndDate() is more than 30 days ago.findByOfferCodesCodeIn
(Iterable<String> codes, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Reads all offers whereOffer.offerCodes
intersects with the provided codes.findByTrackingIds
(Iterable<String> trackingIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Read all offers whereOffer.getCampaignTrackingIds()
intersects with the provided tracking ids.findVoucherOffers
(Iterable<? extends UserTarget> userTargets, Iterable<String> offerIds, Iterable<String> trackingIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Read all voucher offers whereOffer.isAutomaticallyConsidered()
is true,Offer.getCampaignTrackingIds()
intersects with the provided tracking ids,Offer.getOfferCodes()
intersects with the provided codes, or offers that contain the provided user targets.protected OfferCacheProperties
Deprecated, for removal: This API element is subject to removal in a future version.protected JpaPromotionQueryHelper
protected JpaOfferRepository<D>
protected com.broadleafcommerce.common.jpa.RepositoryEntityTypeManager
protected Instant
normalizeEndDateForAllAutomatic
(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) void
setCacheProperties
(OfferCacheProperties cacheProperties) void
setJpaPromotionQueryHelper
(JpaPromotionQueryHelper jpaPromotionQueryHelper) void
setRepository
(JpaOfferRepository<D> repository) void
setRepositoryEntityTypeManager
(com.broadleafcommerce.common.jpa.RepositoryEntityTypeManager repositoryEntityTypeManager) int
updateMaxUsageStatus
(String offerContextId, String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Update the status (seeMaxUsageStatusType
) for an offer, and respond if the status was actually changed.
-
Constructor Details
-
JpaCustomizedOfferRepository
public JpaCustomizedOfferRepository(com.broadleafcommerce.data.tracking.core.TrackableBehaviorUtil behaviorUtil, com.broadleafcommerce.data.tracking.jpa.filtering.fetch.rsql.JpaFiltersCriteriaBuilder criteriaBuilder)
-
-
Method Details
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
-
findByOfferCodesCodeIn
public List<D> findByOfferCodesCodeIn(Iterable<String> codes, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:CustomizedOfferRepository
Reads all offers whereOffer.offerCodes
intersects with the provided codes.- Specified by:
findByOfferCodesCodeIn
in interfaceCustomizedOfferRepository<D extends JpaOffer>
- Parameters:
codes
- codes the returnedOffer
(s) are associated with.context
- Context information around sandbox and multitenant state.- Returns:
- all
Offer
s associated to the provided codes.
-
findAllOfferIdsForFullCache
public List<String> findAllOfferIdsForFullCache(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:CustomizedOfferRepository
Read all contextIds for offer in the system based on full cache configuration. SeeOfferCacheProperties.getFullOfferCacheType()
for more information on how the configuration will influence the results of this method.- Specified by:
findAllOfferIdsForFullCache
in interfaceCustomizedOfferRepository<D extends JpaOffer>
- Parameters:
context
- Context information around sandbox and multitenant state.- Returns:
- All contextIds for offers in the system limited by the cache type configuration.
-
findAutomaticOffers
public Stream<D> findAutomaticOffers(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:CustomizedOfferRepository
Read all offers whereOffer.isAutomaticallyConsidered()
is true excluding any offers whose getActiveEndDate() is more than 30 days ago.- Specified by:
findAutomaticOffers
in interfaceCustomizedOfferRepository<D extends JpaOffer>
- Parameters:
context
- Context information around sandbox and multitenant state.- Returns:
- all offers where
Offer.isAutomaticallyConsidered()
is true
-
normalizeEndDateForAllAutomatic
protected Instant normalizeEndDateForAllAutomatic(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) -
findByTrackingIds
public List<D> findByTrackingIds(Iterable<String> trackingIds, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:CustomizedOfferRepository
Read all offers whereOffer.getCampaignTrackingIds()
intersects with the provided tracking ids.- Specified by:
findByTrackingIds
in interfaceCustomizedOfferRepository<D extends JpaOffer>
- Parameters:
trackingIds
- Tracking ids to filter bycontext
- Context information around sandbox and multitenant state.- Returns:
- All matched offers
-
findVoucherOffers
public Stream<D> findVoucherOffers(Iterable<? extends UserTarget> userTargets, Iterable<String> offerIds, Iterable<String> trackingIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:CustomizedOfferRepository
Read all voucher offers whereOffer.isAutomaticallyConsidered()
is true,Offer.getCampaignTrackingIds()
intersects with the provided tracking ids,Offer.getOfferCodes()
intersects with the provided codes, or offers that contain the provided user targets. Skips active date narrowing to fetch voucher offers for validation against submitted orders.- Specified by:
findVoucherOffers
in interfaceCustomizedOfferRepository<D extends JpaOffer>
- Parameters:
userTargets
- The targets to match offers againstofferIds
- offer ids the returnedOffer
(s) are associated with.trackingIds
- tracking ids the returnedOffer
(s) are associated with.context
- Context information around sandbox and multitenant state.- Returns:
- all voucher offers where
Offer.isAutomaticallyConsidered()
is true, or the offer is associated with the provided codes, tracking ids, or user targets.
-
findAllCustomerOffers
public Stream<D> findAllCustomerOffers(Iterable<? extends UserTarget> userTargets, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CustomizedOfferRepository
Read all offers that have no user targets or contain the provided user targets.- Specified by:
findAllCustomerOffers
in interfaceCustomizedOfferRepository<D extends JpaOffer>
- Parameters:
userTargets
- The targets to match offers againstcontextInfo
- Context information around sandbox and multitenant state.- Returns:
- all offers that have no user targets or contain the provided user targets.
-
updateMaxUsageStatus
public int updateMaxUsageStatus(String offerContextId, String status, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:CustomizedOfferRepository
Update the status (seeMaxUsageStatusType
) for an offer, and respond if the status was actually changed.- Specified by:
updateMaxUsageStatus
in interfaceCustomizedOfferRepository<D extends JpaOffer>
- Parameters:
offerContextId
- The contextId of the offer to updatestatus
- The status to set (seeMaxUsageStatusType
)contextInfo
- Context containing tenant related information (specifically tenantId and applicationId) to use to further discriminate the change- Returns:
- The number of records updated, if any. It is expected this method is called under load, so the response is a useful measure to detect when the value is actually updated. This is in contrast to other possible duplicate and ineffectual attempts.
-
findAllTenants
Description copied from interface:CustomizedOfferRepository
Read a list of distinct tenants for all offers- Specified by:
findAllTenants
in interfaceCustomizedOfferRepository<D extends JpaOffer>
- Returns:
- List of distinct tenants
-
buildUserTargetSubquery
-
buildTrackingSubquery
-
buildAutomaticOrCodeOrCustomerOffersPredicate
protected jakarta.persistence.criteria.Predicate buildAutomaticOrCodeOrCustomerOffersPredicate(Iterable<? extends UserTarget> userTargets, Iterable<String> offerIdsToFilterOn, Iterable<String> trackingIds, jakarta.persistence.criteria.CriteriaQuery<D> criteria, jakarta.persistence.criteria.CriteriaBuilder builder, jakarta.persistence.criteria.Root<D> topRoot, Map<String, Object> params) -
buildTrackingOffersPredicate
-
getEntityClass
@Deprecated(forRemoval=true, since="3.0.3, 3.1.0") @NotNull protected @NotNull Class<D> getEntityClass()Deprecated, for removal: This API element is subject to removal in a future version.Method had a hardcoded entity reference that prevents from accepting extended entities, usegetManagedType()
instead. -
getManagedType
-
getCacheProperties
-
setCacheProperties
-
setRepositoryEntityTypeManager
@Autowired @Lazy public void setRepositoryEntityTypeManager(com.broadleafcommerce.common.jpa.RepositoryEntityTypeManager repositoryEntityTypeManager) -
getRepositoryEntityTypeManager
protected com.broadleafcommerce.common.jpa.RepositoryEntityTypeManager getRepositoryEntityTypeManager() -
setRepository
-
getRepository
-
getJpaPromotionQueryHelper
-
setJpaPromotionQueryHelper
-
getManagedType()
instead.