Class DefaultCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>
- java.lang.Object
-
- com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
-
- com.broadleafcommerce.cart.service.DefaultCartService<P>
-
- All Implemented Interfaces:
CartService<P>,com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>
public class DefaultCartService<P extends com.broadleafcommerce.cart.client.domain.Cart> extends com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P> implements CartService<P>
- Author:
- Chad Harchar (charchar)
-
-
Field Summary
Fields Modifier and Type Field Description protected static List<String>HISTORICAL_STATUSES
-
Constructor Summary
Constructors Constructor Description DefaultCartService(CartRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper helper, com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManager mapper)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Pcreate(P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)voiddelete(String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)protected intfindCartItemIndex(com.broadleafcommerce.cart.client.domain.Cart cart, String itemId)protected CartActionAuditService<com.broadleafcommerce.cart.client.domain.CartActionAudit>getCartActionAuditService()protected CartNotificationServicegetCartNotificationService()protected CartRequestValidator<com.broadleafcommerce.cart.client.domain.Cart>getCartRequestValidator()protected com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManagergetMapper()protected CartRepository<com.broadleafcommerce.data.tracking.core.Trackable>getRepository()protected com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelpergetRsqlHelper()protected com.broadleafcommerce.common.extension.TypeFactorygetTypeFactory()protected voidhandleNotifications(P cart, com.broadleafcommerce.cart.client.domain.CartActionAudit audit, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Handles any additional notifications that should be sent after updating a cart.intpurgeAbandonedAnonymousCarts(Duration abandonedCartTimeout, Collection<String> statuses, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Delete anonymous carts that have not been updated for the specified amount of time.org.springframework.data.domain.Page<P>readAll(cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable pageable, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Read a page of narrowedCartsbased on the givenfiltersorg.springframework.data.domain.Page<P>readAllByStatusesAndCustomerIdAndAccountId(Set<String> statuses, String customerId, String accountId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find all carts for the given customer id, account id, and statuses.List<P>readAllMatchingTenantByIds(List<String> ids, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Finds a list of the carts with the givenidsand matching the tenant from the givenContextInfo.Optional<P>readAnonymousCustomerHistoricalOrder(String emailAddress, String orderNumber, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Reads an anonymous or not authenticated customer's historical cart using theorderNumberandemailAddress.org.springframework.data.domain.Page<P>readByAccountHierarchyContaining(String accountId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find all carts where the account hierarchy contains the given account id.org.springframework.data.domain.Page<P>readByAccountHierarchyContainingAndStatusIn(String accountId, @NonNull Iterable<String> statuses, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find all carts where the account hierarchy contains the given account id and has the matching status.org.springframework.data.domain.Page<P>readByCustomerId(String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, org.springframework.data.domain.Pageable page)Find all carts for the given customer id.org.springframework.data.domain.Page<P>readByCustomerIdAndAccountId(String customerId, String accountId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find all carts for the given customer id and account id.org.springframework.data.domain.Page<P>readByCustomerIdAndAccountId(String customerId, String accountId, org.springframework.data.domain.Pageable page, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find all carts for the given customer id and account id.Optional<P>readByCustomerIdAndOrderNumber(String customerId, String orderNumber, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find the cart (if it exists) for the provided customer id and order number.Optional<P>readByNameAndCustomerId(String cartName, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find the cart for the given name and customer id.Optional<P>readByNameAndCustomerRefCustomerId(String cartName, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Deprecated.org.springframework.data.domain.Page<P>readByRootAccountId(String rootAccountId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find all carts for the given root account id.org.springframework.data.domain.Page<P>readByRootAccountIdAndStatusIn(String rootAccountId, @NonNull Iterable<String> statuses, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find all carts for the given root account id and statuses.List<P>readByStatus(String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Reads all of the carts with the given status.Optional<P>readByStatusAndCustomerId(String status, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find a cart with the given status (if it exists) for the provided customer id.Optional<P>readByStatusAndCustomerIdAndAccountId(String status, String customerId, String accountId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find a cart with the given status (if it exists) for the provided customer id and account id.Optional<P>readByStatusAndCustomerIdAndAccountIdAndName(String status, String customerId, String accountId, String name, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Find a cart with the given status (if it exists) for the provided customer id and account id.org.springframework.data.domain.Page<P>readHistoricalCartsByCustomer(String customerId, Date startDate, Date endDate, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, org.springframework.data.domain.Pageable page)Find all carts that areDefaultCartStatuses.SUBMITTEDorDefaultCartStatuses.CANCELLEDfor the provided customer and dates.org.springframework.data.domain.Page<P>readPageMatchingTenantByStatus(String status, org.springframework.data.domain.Pageable pageable, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Finds a page of the carts with the givenstatusand matching the tenant from the givenContextInfo.Preplace(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)PreplaceCartItem(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Replaces the cart item in the cart and saves.PreplaceWithCartAudit(String id, @NonNull UpdateCartRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Replaces the cart state and its relatedCartActionAudit.voidsetCartActionAuditService(CartActionAuditService<com.broadleafcommerce.cart.client.domain.CartActionAudit> cartActionAuditService)voidsetCartNotificationService(CartNotificationService cartNotificationService)voidsetCartRequestValidator(CartRequestValidator<com.broadleafcommerce.cart.client.domain.Cart> cartRequestValidator)voidsetRsqlHelper(com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper rsqlHelper)voidsetTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory)protected com.broadleafcommerce.cart.client.domain.CartItemtransformCartItem(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItemPatch, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Applies a patch to a cart item.Pupdate(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)PupdateCartItem(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Patches (updates only present fields) of the cart item in the cart and saves.List<P>updateCartsMatchingTenantStatus(List<String> cartIds, String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Updates theCart.getStatus()for the given cart ids and status and matching the tenant from the givenContextInfo.PupdateWithCartAudit(String id, @NonNull UpdateCartRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Updates the cart state and its relatedCartActionAudit.-
Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService
convertFromPersistentDomain, convertToPersistentDomain, createAll, createAllAllowingPartialSuccess, getHelper, getSortPositionStrategy, readAll, readAll, readAll, readAllByContextId, readByContextId, 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, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, updateAll, updateAllAllowingPartialSuccess, updateSort
-
-
-
-
Constructor Detail
-
DefaultCartService
public DefaultCartService(CartRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.data.tracking.core.service.CrudEntityHelper helper, com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManager mapper)
-
-
Method Detail
-
readAll
public org.springframework.data.domain.Page<P> readAll(cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable pageable, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceRead a page of narrowedCartsbased on the givenfilters- Specified by:
readAllin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
filters- the RSQLNodeused to restrict result, must not benullpageable- the current pagecontextInfo- Request context information around sandbox and multitenant state- Returns:
- a page of narrowed
Cartsbased on the givenfilters
-
readByCustomerId
public org.springframework.data.domain.Page<P> readByCustomerId(String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, @Nullable org.springframework.data.domain.Pageable page)
Description copied from interface:CartServiceFind all carts for the given customer id.- Specified by:
readByCustomerIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
customerId- the id of the customer who owns the cartcontextInfo- Context information used to discriminate the carts by applicationIdpage- the requested page of results from the database- Returns:
- all carts for the given customer id
-
readByCustomerIdAndAccountId
public org.springframework.data.domain.Page<P> readByCustomerIdAndAccountId(String customerId, @Nullable String accountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind all carts for the given customer id and account id. Account id can be null to find customer's personal non-account carts.- Specified by:
readByCustomerIdAndAccountIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
customerId- the id of the customer who owns the cartaccountId- the id of the account that the cart belongs to,page- the requested page of results from the databasecontextInfo- context information related to multitenancy- Returns:
- all carts for the given customer id and account id
-
readByCustomerIdAndAccountId
public org.springframework.data.domain.Page<P> readByCustomerIdAndAccountId(String customerId, @Nullable String accountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind all carts for the given customer id and account id. Account id can be null to find customer's personal non-account carts.- Specified by:
readByCustomerIdAndAccountIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
customerId- the id of the customer who owns the cartaccountId- the id of the account that the cart belongs to,page- the requested page of results from the databasefilters- RSQL filterscontextInfo- context information related to multitenancy- Returns:
- all carts for the given customer id and account id
-
readAllByStatusesAndCustomerIdAndAccountId
public org.springframework.data.domain.Page<P> readAllByStatusesAndCustomerIdAndAccountId(Set<String> statuses, String customerId, @Nullable String accountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind all carts for the given customer id, account id, and statuses. Account id can be null to find customer's personal non-account carts.- Specified by:
readAllByStatusesAndCustomerIdAndAccountIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
statuses- thestatusesto matchcustomerId- the id of the customer who owns the cartaccountId- the id of the account that the cart belongs topage- the requested page of results from the databasecontextInfo- context information related to multitenancy- Returns:
- all carts for the given customer id and account id and statuses
-
readByRootAccountId
public org.springframework.data.domain.Page<P> readByRootAccountId(String rootAccountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind all carts for the given root account id.This is useful to query all the carts that belongs to the same root account.
For example, if we have this account setup, rootAcct -> subAcct (child of rootAcct) -> subSubAcct (child of subAcct), this query is useful to query all the carts that belong to the root account and its sub-accounts.
- Specified by:
readByRootAccountIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
rootAccountId- the root account id of the cartpage- the requested page of results from the databasecontextInfo- context information related to multitenancy- Returns:
- all carts for the given root account id
-
readByRootAccountIdAndStatusIn
public org.springframework.data.domain.Page<P> readByRootAccountIdAndStatusIn(String rootAccountId, @NonNull @NonNull Iterable<String> statuses, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind all carts for the given root account id and statuses.- Specified by:
readByRootAccountIdAndStatusInin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
rootAccountId- the root account id of the cartstatuses- thestatusesto matchpage- the requested page of results from the databasecontextInfo- context information related to multitenancy- Returns:
- all carts for the given root account id
-
readByAccountHierarchyContaining
public org.springframework.data.domain.Page<P> readByAccountHierarchyContaining(String accountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind all carts where the account hierarchy contains the given account id.This is useful to query all the carts that belongs to the same non-root account and its sub-accounts.
For example, if we have this account setup, rootAcct -> subAcct (child of rootAcct) -> subSubAcct (child of subAcct), this query is useful to query all the carts that belong to the subAcct and its sub-accounts (subSubAcct in this case).
- Specified by:
readByAccountHierarchyContainingin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
accountId- the account id to filter the account hierarchy bypage- the requested page of results from the databasecontextInfo- context information related to multitenancy- Returns:
- all carts where the account hierarchy contains the given account id
-
readByAccountHierarchyContainingAndStatusIn
public org.springframework.data.domain.Page<P> readByAccountHierarchyContainingAndStatusIn(String accountId, @NonNull @NonNull Iterable<String> statuses, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind all carts where the account hierarchy contains the given account id and has the matching status.This is useful to query all the carts that belongs to the same non-root account and its sub-accounts based on the status
For example, if we have this account setup, rootAcct -> subAcct (child of rootAcct) -> subSubAcct (child of subAcct), this query is useful to query all the carts that belong to the subAcct and its sub-accounts (subSubAcct in this case) and has the
DefaultCartStatuses.REQUIRES_APPROVAL.- Specified by:
readByAccountHierarchyContainingAndStatusInin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
accountId- the account id to filter the account hierarchy bystatuses- thestatusesto matchpage- the requested page of results from the databasecontextInfo- context information related to multitenancy- Returns:
- all carts where the account hierarchy contains the given account id
-
readByNameAndCustomerId
public Optional<P> readByNameAndCustomerId(String cartName, String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind the cart for the given name and customer id. There should only be one result, as cart names are unique per customer.- Specified by:
readByNameAndCustomerIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
cartName- the name of the cart to retrievecustomerId- the id of the customer who owns the cartcontextInfo- Context information used to discriminate the carts by applicationId- Returns:
- an optional cart with the name and customer provided
-
readByNameAndCustomerRefCustomerId
@Deprecated public Optional<P> readByNameAndCustomerRefCustomerId(String cartName, String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Deprecated.Description copied from interface:CartServiceFind the cart for the given name and customer id. There should only be one result, as cart names are unique per customer.- Specified by:
readByNameAndCustomerRefCustomerIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
cartName- the name of the cart to retrievecustomerId- the id of the customer who owns the cartcontextInfo- Context information used to discriminate the carts by applicationId- Returns:
- an optional cart with the name and customer provided
-
readByStatusAndCustomerId
public Optional<P> readByStatusAndCustomerId(String status, String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind a cart with the given status (if it exists) for the provided customer id.- Specified by:
readByStatusAndCustomerIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
status- the status of carts to considercustomerId- the id of the customer who owns the cartcontextInfo- Context information used to discriminate the carts by applicationId- Returns:
- a cart with the given status (if it exists) for the provided customer id.
-
readByStatusAndCustomerIdAndAccountId
public Optional<P> readByStatusAndCustomerIdAndAccountId(String status, String customerId, @Nullable String accountId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind a cart with the given status (if it exists) for the provided customer id and account id. Account id can be null to find customer's personal non-account carts.- Specified by:
readByStatusAndCustomerIdAndAccountIdin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
status- the status of carts to considercustomerId- the id of the customer who owns the cartaccountId- the id of the account that the cart belongs tocontextInfo- Context information used to discriminate the carts by applicationId- Returns:
- a cart with the given status (if it exists) for the provided customer id and account id.
-
readByStatusAndCustomerIdAndAccountIdAndName
public Optional<P> readByStatusAndCustomerIdAndAccountIdAndName(String status, String customerId, @Nullable String accountId, @Nullable String name, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind a cart with the given status (if it exists) for the provided customer id and account id. Account id can be null to find customer's personal non-account carts.- Specified by:
readByStatusAndCustomerIdAndAccountIdAndNamein interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
status- the status of carts to considercustomerId- the id of the customer who owns the cartaccountId- the id of the account that the cart belongs tocontextInfo- Context information used to discriminate the carts by applicationId- Returns:
- a cart with the given status (if it exists) for the provided customer id and account id.
-
readHistoricalCartsByCustomer
public org.springframework.data.domain.Page<P> readHistoricalCartsByCustomer(String customerId, @Nullable Date startDate, @Nullable Date endDate, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, @Nullable org.springframework.data.domain.Pageable page)
Description copied from interface:CartServiceFind all carts that areDefaultCartStatuses.SUBMITTEDorDefaultCartStatuses.CANCELLEDfor the provided customer and dates.- Specified by:
readHistoricalCartsByCustomerin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
customerId- the id of the customer who owns the cartsstartDate- the starting date to filter carts byendDate- the ending date to filter carts bycontextInfo- Context information used to discriminate the carts by applicationIdpage- the requested page of results from the database- Returns:
- all carts that are
DefaultCartStatuses.SUBMITTEDorDefaultCartStatuses.CANCELLEDfor the provided customer and dates.
-
readByCustomerIdAndOrderNumber
public Optional<P> readByCustomerIdAndOrderNumber(String customerId, String orderNumber, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFind the cart (if it exists) for the provided customer id and order number.- Specified by:
readByCustomerIdAndOrderNumberin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
customerId- the id of the customer who owns the cartorderNumber- the order number for the cartcontextInfo- Context information used to discriminate the carts by applicationId- Returns:
- a cart (if it exists) with the given order number that belongs to the provided customer.
-
updateCartsMatchingTenantStatus
public List<P> updateCartsMatchingTenantStatus(List<String> cartIds, String status, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceUpdates theCart.getStatus()for the given cart ids and status and matching the tenant from the givenContextInfo.- Specified by:
updateCartsMatchingTenantStatusin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
cartIds- the ids of the carts to update the status forstatus- the status to update the carts tocontextInfo- Context information used to discriminate the carts by applicationId- Returns:
- the updated carts
-
create
@SuppressNotification("PERSISTENCE") public P create(P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)- Specified by:
createin interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Overrides:
createin classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>
-
update
@SuppressNotification("PERSISTENCE") public P update(String id, P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)- Specified by:
updatein interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Overrides:
updatein classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>
-
replace
@SuppressNotification("PERSISTENCE") public P replace(String id, P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)- Specified by:
replacein interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Overrides:
replacein classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>
-
updateWithCartAudit
public P updateWithCartAudit(String id, @NonNull @NonNull UpdateCartRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceUpdates the cart state and its relatedCartActionAudit. Will also send relevant notifications based on changes to the cart's status.- Specified by:
updateWithCartAuditin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
id- Id of the cart to updaterequest- The request with the new cart state and auditcontextInfo- Additional sandbox and multitenant info- Returns:
- The updated cart state.
-
replaceWithCartAudit
public P replaceWithCartAudit(String id, @NonNull @NonNull UpdateCartRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceReplaces the cart state and its relatedCartActionAudit. Will also send relevant notifications based on changes to the cart's status.- Specified by:
replaceWithCartAuditin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
id- Id of the cart to replacerequest- The request with the new cart state and auditcontextInfo- Additional sandbox and multitenant info- Returns:
- The updated cart state.
-
handleNotifications
protected void handleNotifications(@NonNull P cart, @Nullable com.broadleafcommerce.cart.client.domain.CartActionAudit audit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Handles any additional notifications that should be sent after updating a cart.- Parameters:
cart- The cart that was updatedaudit- The relatedCartActionAuditcontextInfo- Additional sandbox and multitenant info
-
delete
@SuppressNotification("PERSISTENCE") public void delete(String id, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)- Specified by:
deletein interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Overrides:
deletein classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>
-
replaceCartItem
@SuppressNotification("PERSISTENCE") public P replaceCartItem(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Description copied from interface:CartServiceReplaces the cart item in the cart and saves.- Specified by:
replaceCartItemin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
cart- the cart to replace an item ofcartItemId- the ID of the cart item to replacecartItem- the cart item to replace with (ID will be overwritten withcartItemId)context- Context information used to discriminate the carts by applicationId- Returns:
- the updated cart
-
updateCartItem
@SuppressNotification("PERSISTENCE") public P updateCartItem(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItem, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Description copied from interface:CartServicePatches (updates only present fields) of the cart item in the cart and saves.- Specified by:
updateCartItemin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
cart- the cart to replace an item ofcartItemId- the ID of the cart item to replacecartItem- the cart item to replace with (ID will be overwritten withcartItemId)context- Context information used to discriminate the carts by applicationId- Returns:
- the updated cart
-
readAnonymousCustomerHistoricalOrder
public Optional<P> readAnonymousCustomerHistoricalOrder(String emailAddress, String orderNumber, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:CartServiceReads an anonymous or not authenticated customer's historical cart using theorderNumberandemailAddress.- Specified by:
readAnonymousCustomerHistoricalOrderin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
emailAddress- Theemail address associated with the cartorderNumber- Thehistorical cart's order numbercontext- Context information around sandbox and multitenant state.- Returns:
- The historical cart for an anonymous customer
-
purgeAbandonedAnonymousCarts
public int purgeAbandonedAnonymousCarts(Duration abandonedCartTimeout, Collection<String> statuses, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceDelete anonymous carts that have not been updated for the specified amount of time.- Specified by:
purgeAbandonedAnonymousCartsin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
abandonedCartTimeout- The length of time a cart can be inactive before being purged.statuses- The statuses to consider for purging.contextInfo- context information related to multitenancy- Returns:
- The number of carts purged.
-
readByStatus
public List<P> readByStatus(String status, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceReads all of the carts with the given status.- Specified by:
readByStatusin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
status- TheCartStatusto filter bycontextInfo- Context information around sandbox and multitenant state.- Returns:
- All of the carts with the given status.
-
readPageMatchingTenantByStatus
public org.springframework.data.domain.Page<P> readPageMatchingTenantByStatus(String status, @Nullable org.springframework.data.domain.Pageable pageable, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFinds a page of the carts with the givenstatusand matching the tenant from the givenContextInfo.- Specified by:
readPageMatchingTenantByStatusin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
status- the status of the cartpageable- the requested page of results from the databasecontextInfo- context information related to multitenancy- Returns:
- A page of the carts with the given
statusand matching the tenant from the givenContextInfo.
-
readAllMatchingTenantByIds
public List<P> readAllMatchingTenantByIds(List<String> ids, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:CartServiceFinds a list of the carts with the givenidsand matching the tenant from the givenContextInfo.- Specified by:
readAllMatchingTenantByIdsin interfaceCartService<P extends com.broadleafcommerce.cart.client.domain.Cart>- Parameters:
ids- the ids of the cartcontextInfo- context information related to multitenancy- Returns:
- Finds a list of the carts with the given
idsand matching the tenant from the givenContextInfo.
-
transformCartItem
protected com.broadleafcommerce.cart.client.domain.CartItem transformCartItem(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItemPatch, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Applies a patch to a cart item. Does a partial update- only non-null fields of the cart item will be updated.- Parameters:
cart- the cart of the item to transformcartItemId- the ID of the cart item to transformcartItemPatch- the partial update to apply to the cart itemcontext- the context info of the request- Returns:
- a non-saved version of the cart item with the patch applied
-
findCartItemIndex
protected int findCartItemIndex(com.broadleafcommerce.cart.client.domain.Cart cart, String itemId)
-
getRepository
protected CartRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
- Overrides:
getRepositoryin classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends com.broadleafcommerce.cart.client.domain.Cart>
-
getMapper
protected com.broadleafcommerce.data.tracking.core.mapping.DomainMapperManager getMapper()
-
getRsqlHelper
protected com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper getRsqlHelper()
-
setRsqlHelper
@Autowired public void setRsqlHelper(com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper rsqlHelper)
-
getCartActionAuditService
protected CartActionAuditService<com.broadleafcommerce.cart.client.domain.CartActionAudit> getCartActionAuditService()
-
setCartActionAuditService
@Autowired @Lazy public void setCartActionAuditService(CartActionAuditService<com.broadleafcommerce.cart.client.domain.CartActionAudit> cartActionAuditService)
-
getCartNotificationService
protected CartNotificationService getCartNotificationService()
-
setCartNotificationService
@Autowired public void setCartNotificationService(CartNotificationService cartNotificationService)
-
getCartRequestValidator
protected CartRequestValidator<com.broadleafcommerce.cart.client.domain.Cart> getCartRequestValidator()
-
setCartRequestValidator
@Autowired public void setCartRequestValidator(CartRequestValidator<com.broadleafcommerce.cart.client.domain.Cart> cartRequestValidator)
-
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
-
setTypeFactory
@Autowired public void setTypeFactory(com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
-