Class DefaultAccountService<P extends Account>
java.lang.Object
com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
com.broadleafcommerce.customer.service.DefaultAccountService<P>
- Type Parameters:
P- A subtype ofAccount
- All Implemented Interfaces:
AccountService<P>,com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>,com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService<P>
public class DefaultAccountService<P extends Account>
extends com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
implements AccountService<P>
Default implementation of
AccountService- Author:
- Chris Kittrell (ckittrell)
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionDefaultAccountService(AccountRepository<com.broadleafcommerce.data.tracking.core.Trackable> accountRepository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, AccountUpdateEventProducer accountUpdateEventProducer) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckForCircularAccountReferences(String ancestorAccountId, @NonNull String childAccountId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Check for circular account references and throw aCircularParentAccountExceptionif found.voidprotected booleanfilterParentAccounts(com.broadleafcommerce.data.tracking.core.Trackable account, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Apply the given filters to all parents of the given account.protected AccountRepository<com.broadleafcommerce.data.tracking.core.Trackable>protected AccountUpdateEventProducerprotected StringgetParentAccountId(P account) Get the parent id of the given account.protected booleanDetermine if the given account has statusDefaultAccountStatuses.ACTIVE.protected booleanisInactive(P account) Determine if the given account has statusDefaultAccountStatuses.INACTIVE.protected voidnotifyAccountChange(String accountId, String parentAccountId, String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Send anAccountUpdateRequestwith theAccountUpdateEventProducer.protected Set<com.broadleafcommerce.data.tracking.core.Trackable>readAccountChildren(List<com.broadleafcommerce.data.tracking.core.Trackable> parentAccounts, int childAccountDepth, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reads all of theAccountsbyidsand optionally include child accounts.readAllByIdWithChildren(@NonNull Collection<String> ids, int childAccountDepth, boolean filterParents, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reads all of theAccountsbyidsand optionally include child accounts.protected List<com.broadleafcommerce.data.tracking.core.Trackable>readAllByIdWithFilters(Collection<String> ids, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Read by id with filters included.replace(String id, P accountUpdateRequest, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService
getRsqlHelper, readAll, readAll, readAll, readAllMethods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService
convertFromPersistentDomain, convertToPersistentDomain, createAll, createAllAllowingPartialSuccess, getHelper, getRepository, getSortPositionStrategy, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, setSortPositionStrategy, update, updateAll, updateAllAllowingPartialSuccess, updateSortMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService
createAll, createAllAllowingPartialSuccess, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, update, updateAll, updateAllAllowingPartialSuccess, updateSortMethods inherited from interface com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService
readAll, readAll, readAll, readAll
-
Field Details
-
ACCOUNT_STATUS_DELETED
- See Also:
-
-
Constructor Details
-
DefaultAccountService
public DefaultAccountService(AccountRepository<com.broadleafcommerce.data.tracking.core.Trackable> accountRepository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, @Nullable AccountUpdateEventProducer accountUpdateEventProducer)
-
-
Method Details
-
create
-
replace
-
delete
public void delete(String id, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) -
readAllByIdWithChildren
public List<P> readAllByIdWithChildren(@NonNull @NonNull Collection<String> ids, int childAccountDepth, boolean filterParents, cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Description copied from interface:AccountServiceReads all of theAccountsbyidsand optionally include child accounts. SetexcludeAccountsWithInactiveParenttotrueto filter out accounts that have a disabled parent account.- Specified by:
readAllByIdWithChildrenin interfaceAccountService<P extends Account>- Parameters:
ids- The Ids of the accounts to matchchildAccountDepth- How many levels deep of the account hierarchy of the accounts matchingidsto include in the results, e.g., how many levels of child accounts to include.-1indicates no limit.0indicates no child accounts.Default is
0.filterParents- If true, the returned list will include only accounts with active parent accounts.filters- An RSQL filter used to narrow query results. May beEmptyNodeif no filters should be applied.contextInfo- Additional multitenant and sandbox info- Returns:
- All of the
Accountsbyidsand optionally child accounts.
-
readAllByIdWithFilters
protected List<com.broadleafcommerce.data.tracking.core.Trackable> readAllByIdWithFilters(Collection<String> ids, cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Read by id with filters included. This is an alternative to #readAllByContextId() that will apply the given filters.- Parameters:
ids- The list of account ids to lookup.filters- An RSQL filter used to narrow query results. May beEmptyNodeif no filters should be applied.contextInfo- Context information for data tracking.- Returns:
- A list of
Trackablethat matches the given ids and filters.
-
filterParentAccounts
protected boolean filterParentAccounts(com.broadleafcommerce.data.tracking.core.Trackable account, cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Apply the given filters to all parents of the given account. Return true if all parents of the given account match the filter.- Parameters:
account- The account whose parents should be checked.filters- An RSQL filter used to narrow query results. May beEmptyNodeif no filters should be applied.contextInfo- Context information for data tracking.- Returns:
- True if all parents of the given account match the filter. False otherwise.
-
readAccountChildren
protected Set<com.broadleafcommerce.data.tracking.core.Trackable> readAccountChildren(List<com.broadleafcommerce.data.tracking.core.Trackable> parentAccounts, int childAccountDepth, cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reads all of theAccountsbyidsand optionally include child accounts. SetexcludeAccountsWithInactiveParenttotrueto filter out accounts that have a disabled parent account.- Parameters:
parentAccounts- The ids of the parent accounts for which to find children.childAccountDepth- How many levels deep of the account hierarchy of the accounts matchingidsto include in the results, e.g., how many levels of child accounts to include.-1indicates no limit.0indicates no child accounts. Providing 0 results in a no-op.filters- An RSQL filter used to narrow query results. May beEmptyNodeif no filters should be applied.contextInfo- Context information for data tracking.- Returns:
- A Set of all children of the given accounts, down to the given childAccountDepth.
-
isActive
Determine if the given account has statusDefaultAccountStatuses.ACTIVE.- Parameters:
account- The account whose status is being checked- Returns:
- True if the given account's status is
DefaultAccountStatuses.ACTIVE.
-
isInactive
Determine if the given account has statusDefaultAccountStatuses.INACTIVE.- Parameters:
account- The account whose status is being checked- Returns:
- True if the given account's status is
DefaultAccountStatuses.INACTIVE.
-
getParentAccountId
Get the parent id of the given account.- Parameters:
account- The account whose parent is being checked- Returns:
- The id of the parent to the given account, or null if the given account has no parent.
-
checkForCircularAccountReferences
protected void checkForCircularAccountReferences(@Nullable String ancestorAccountId, @NonNull @NonNull String childAccountId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Check for circular account references and throw aCircularParentAccountExceptionif found. This recursively reads parent accounts and validates that the parent account id does not match the account id being saved.- Parameters:
ancestorAccountId- The id of an ancestor of the account being saved.childAccountId- The id of the account being saved.context- The security context of the operation
-
notifyAccountChange
protected void notifyAccountChange(String accountId, @Nullable String parentAccountId, String status, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Send anAccountUpdateRequestwith theAccountUpdateEventProducer.- Parameters:
accountId- The id of the account being updated.parentAccountId- The id of the parent account.status- The status of the updated accountcontext- The security context of the operation.
-
getAccountRepository
protected AccountRepository<com.broadleafcommerce.data.tracking.core.Trackable> getAccountRepository() -
getAccountUpdateEventProducer
-