Class DefaultSegmentMemberService<P extends SegmentMember,S extends CustomerSegment>
- java.lang.Object
 - 
- com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
 - 
- com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
 - 
- com.broadleafcommerce.customer.service.DefaultSegmentMemberService<P,S>
 
 
 
 
- 
- All Implemented Interfaces:
 SegmentMemberService<P,S>,com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>,com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService<P>
public class DefaultSegmentMemberService<P extends SegmentMember,S extends CustomerSegment> extends com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P> implements SegmentMemberService<P,S>
 
- 
- 
Constructor Summary
Constructors Constructor Description DefaultSegmentMemberService(CustomerSegmentService<S> customerSegmentService, int clearSegmentMemberBatchSize, SegmentMemberRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper) 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcannotAddCustomerToSegmentError(P segmentMember, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Creates and throws an error for use if manually adding customers to this segment is not supported.PcreateSegmentMember(P segmentMember, String source, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Creates and adds a customer/segment relationship.protected voidcustomerAlreadyExistsInSegmentError(P segmentMember)Creates and throws an error for use if the customer already exists in this segment.protected intgetClearSegmentMemberBatchSize()The batch size of customers to be included in aClearCustomerSegmentRequestprotected CustomerSegmentService<S>getCustomerSegmentService()protected SegmentMemberRepository<com.broadleafcommerce.data.tracking.core.Trackable>getRepository()protected voidnotifySegmentClear(String segmentId, List<P> segmentMembers)Stream<P>readAllBySegmentId(String segmentId, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Reads the segment members for the specified customer segment id matching the given filters.List<P>readAllBySegmentIdAndCustomerEmail(String segmentId, Set<String> emailAddresses, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Reads the segment members for the specified customer segment id and customer email addresses.Optional<P>readMemberInSegment(String segmentId, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Returns a particular customer/segment relationship with the designated customer and segment IDs.org.springframework.data.domain.Page<P>readMembersInSegment(String segmentId, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable pageable, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Reads a page of customers who are members of a segment.voidremoveAllMembersFromSegment(String segmentId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Removes all customer/segment relationships from a particular segment.voidremoveMemberFromSegment(String segmentId, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Removes a particular customer/segment relationship with the designated customer and segment IDs.protected voidsendRemoveAllMembersNotification(String segmentId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Send a batch or batches of notification containing user and segment IDs to ensure segments are properly cleared in auth.protected voidvalidateCustomerAddToSegment(P segmentMember, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Validates that a customer may be added to a segment.- 
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, create, createAll, createAllAllowingPartialSuccess, delete, getHelper, getSortPositionStrategy, readAll, readAll, readAll, readAllByContextId, readByContextId, replace, replaceAll, replaceAllAllowingPartialSuccess, setSortPositionStrategy, update, 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
create, createAll, createAllAllowingPartialSuccess, delete, readAll, readAll, readAll, readAllByContextId, readByContextId, replace, replaceAll, replaceAllAllowingPartialSuccess, update, updateAll, updateAllAllowingPartialSuccess, updateSort 
 - 
 
 - 
 
- 
- 
Constructor Detail
- 
DefaultSegmentMemberService
public DefaultSegmentMemberService(CustomerSegmentService<S> customerSegmentService, int clearSegmentMemberBatchSize, SegmentMemberRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper)
 
 - 
 
- 
Method Detail
- 
readMembersInSegment
public org.springframework.data.domain.Page<P> readMembersInSegment(String segmentId, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable pageable, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:SegmentMemberServiceReads a page of customers who are members of a segment.- Specified by:
 readMembersInSegmentin interfaceSegmentMemberService<P extends SegmentMember,S extends CustomerSegment>- Parameters:
 segmentId- The segment IDfilters- An RSQL filter used to narrow query results. May beEmptyNodeif no filters should be applied.pageable- The requested page of results from the databasecontext- Context information surrounding sandboxing and multitenant state- Returns:
 - A page of customer/segment relationships
 
 
- 
readMemberInSegment
public Optional<P> readMemberInSegment(String segmentId, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:SegmentMemberServiceReturns a particular customer/segment relationship with the designated customer and segment IDs.- Specified by:
 readMemberInSegmentin interfaceSegmentMemberService<P extends SegmentMember,S extends CustomerSegment>- Parameters:
 segmentId- The segment IDcustomerId- The customer IDcontext- Context information surrounding sandboxing and multitenant state- Returns:
 - The customer/segment relationship.
 
 
- 
removeMemberFromSegment
public void removeMemberFromSegment(String segmentId, String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:SegmentMemberServiceRemoves a particular customer/segment relationship with the designated customer and segment IDs.- Specified by:
 removeMemberFromSegmentin interfaceSegmentMemberService<P extends SegmentMember,S extends CustomerSegment>- Parameters:
 segmentId- The segment IDcustomerId- The customer IDcontext- Context information surrounding sandboxing and multitenant state
 
- 
removeAllMembersFromSegment
@Transactional("customerTransactionManager") public void removeAllMembersFromSegment(String segmentId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Description copied from interface:SegmentMemberServiceRemoves all customer/segment relationships from a particular segment.- Specified by:
 removeAllMembersFromSegmentin interfaceSegmentMemberService<P extends SegmentMember,S extends CustomerSegment>- Parameters:
 segmentId- The segment IDcontext- Context information surrounding sandboxing and multitenant state
 
- 
createSegmentMember
public P createSegmentMember(P segmentMember, String source, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:SegmentMemberServiceCreates and adds a customer/segment relationship.This differs from a standard create in that additional validation is performed based on the segment's type. For example, attempting to manually add a customer to a segment with the type
RULE_BASEDis not allowed and an exception should be thrown.For performance critical operations (e.g. a bulk import), use
CrudEntityService.create(Object, ContextInfo)- Specified by:
 createSegmentMemberin interfaceSegmentMemberService<P extends SegmentMember,S extends CustomerSegment>- Parameters:
 segmentMember- The customer/segment relationship to create.source- The source of this segment/customer relationship.context- Context information surrounding sandboxing and multitenant state- Returns:
 - The customer/segment relationship if added successfully.
 - See Also:
 CustomerSegmentType.canManuallyAddCustomers(),SegmentMemberSource
 
- 
readAllBySegmentId
public Stream<P> readAllBySegmentId(String segmentId, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:SegmentMemberServiceReads the segment members for the specified customer segment id matching the given filters.- Specified by:
 readAllBySegmentIdin interfaceSegmentMemberService<P extends SegmentMember,S extends CustomerSegment>- Parameters:
 segmentId- theCustomerSegmentidfilters- additional filters to apply in the querycontextInfo- Request context information around sandbox and multitenant state- Returns:
 - the segment members for the specified customer segment id matching the given filters
 
 
- 
readAllBySegmentIdAndCustomerEmail
public List<P> readAllBySegmentIdAndCustomerEmail(String segmentId, Set<String> emailAddresses, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:SegmentMemberServiceReads the segment members for the specified customer segment id and customer email addresses.- Specified by:
 readAllBySegmentIdAndCustomerEmailin interfaceSegmentMemberService<P extends SegmentMember,S extends CustomerSegment>- Parameters:
 segmentId- theCustomerSegmentidemailAddresses- the set ofCustomeremailcontextInfo- Request context information around sandbox and multitenant state- Returns:
 - the segment members for the specified customer segment id and customer email addresses
 
 
- 
validateCustomerAddToSegment
protected void validateCustomerAddToSegment(P segmentMember, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Validates that a customer may be added to a segment.- Parameters:
 segmentMember- The SegmentMember to evaluatecontext- The current context- Throws:
 com.broadleafcommerce.common.error.validation.ValidationException- if a customer cannot be added to the specific segment type, or the customer already exists in the segment
 
- 
cannotAddCustomerToSegmentError
protected void cannotAddCustomerToSegmentError(P segmentMember, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Creates and throws an error for use if manually adding customers to this segment is not supported.- Parameters:
 segmentMember- The segment that failed validationcontext- The current context- Throws:
 com.broadleafcommerce.common.error.validation.ValidationException- Always thrown
 
- 
customerAlreadyExistsInSegmentError
protected void customerAlreadyExistsInSegmentError(P segmentMember)
Creates and throws an error for use if the customer already exists in this segment.- Parameters:
 segmentMember- The segment that failed validation- Throws:
 com.broadleafcommerce.common.error.validation.ValidationException- Always thrown
 
- 
sendRemoveAllMembersNotification
protected void sendRemoveAllMembersNotification(String segmentId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Send a batch or batches of notification containing user and segment IDs to ensure segments are properly cleared in auth.- Parameters:
 segmentId- The segment ID that is to be cleared.context- The current context.
 
- 
getCustomerSegmentService
@NonNull protected CustomerSegmentService<S> getCustomerSegmentService()
 
- 
getRepository
@NonNull protected SegmentMemberRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
- Overrides:
 getRepositoryin classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends SegmentMember>
 
- 
getClearSegmentMemberBatchSize
protected int getClearSegmentMemberBatchSize()
The batch size of customers to be included in aClearCustomerSegmentRequest 
 - 
 
 -