Class DefaultCampaignCodeService<P extends CampaignCode>
- java.lang.Object
-
- com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
-
- com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
-
- com.broadleafcommerce.promotion.campaign.service.DefaultCampaignCodeService<P>
-
- All Implemented Interfaces:
com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>,com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService<P>,CampaignCodeService<P>
public class DefaultCampaignCodeService<P extends CampaignCode> extends com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P> implements CampaignCodeService<P>
- Author:
- Chad Harchar (charchar)
-
-
Constructor Summary
Constructors Constructor Description DefaultCampaignCodeService(CampaignCodeRepository<com.broadleafcommerce.data.tracking.core.Trackable> campaignCodeRepository, CampaignRepository<com.broadleafcommerce.data.tracking.core.Trackable> campaignRepository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, com.broadleafcommerce.common.extension.TypeFactory campaignFactory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected List<String>buildCampaignCodeStringList(List<P> offerCodeList)Pcreate(P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)protected List<P>createCampaignCodeEntities(CodeGenerator info, Set<String> currentCodeSet)List<P>findAllByGeneratorIdAndAssigned(String codeGeneratorId, boolean isAssigned, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)List<P>findAllDuplicatesForCodesInCampaign(@NonNull String campaignId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Finds all duplicatesCampaignCodesbyCampaign.getId().org.springframework.data.domain.Page<P>findByCampaignId(String campaignId, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)protected List<P>findDuplicateCodes(String codeGeneratorId, List<P> campaignCodeList, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)List<P>findExistingByCodesIncludeExpiredForCampaignId(Set<String> codes, String campaignId, Instant endAfterDate, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Search all non-expired campaign codes or expired but belonging to the specified campaignId.protected CampaignCodeRepository<com.broadleafcommerce.data.tracking.core.Trackable>getCampaignCodeRepository()protected com.broadleafcommerce.common.extension.TypeFactorygetCampaignFactory()protected CampaignRepository<com.broadleafcommerce.data.tracking.core.Trackable>getCampaignRepository()List<P>persistCodesAndReturn(CodeGenerator info, Set<String> currentCodeSet, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)intpersistCodesAndReturnNumber(CodeGenerator info, Set<String> currentCodeSet, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)protected voidpopulateCodeGeneratorDetailsToCode(CodeGenerator codeGenerator, P campaignCode)Stream<P>readAllByCampaignId(String campaignId, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Reads the campaign codes for the specified campaign id matching the given filters.List<P>readAllByCode(String code, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Finds all of theCampaignCodesbycode.protected org.springframework.validation.ErrorsrejectDuplicateCode(P duplicate)protected voidremoveDuplicatesFromList(List<P> campaignCodeList, List<P> duplicateCampaignCodes)Iterate through the codes we are about to save.Preplace(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)List<com.broadleafcommerce.data.tracking.core.Trackable>saveAll(List<P> businessInstances, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)protected voidsaveAllNonDuplicates(String codeGeneratorId, List<P> campaignCodeList, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)Pupdate(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, getRepository, 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.promotion.campaign.service.CampaignCodeService
findAllUnassignedByGeneratorId
-
Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService
createAll, createAllAllowingPartialSuccess, delete, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, updateAll, updateAllAllowingPartialSuccess, updateSort
-
-
-
-
Constructor Detail
-
DefaultCampaignCodeService
public DefaultCampaignCodeService(CampaignCodeRepository<com.broadleafcommerce.data.tracking.core.Trackable> campaignCodeRepository, CampaignRepository<com.broadleafcommerce.data.tracking.core.Trackable> campaignRepository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, com.broadleafcommerce.common.extension.TypeFactory campaignFactory)
-
-
Method Detail
-
findByCampaignId
@NonNull public org.springframework.data.domain.Page<P> findByCampaignId(@NonNull String campaignId, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @NonNull Class<P> payloadType, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
- Specified by:
findByCampaignIdin interfaceCampaignCodeService<P extends CampaignCode>
-
readAllByCode
@NonNull public List<P> readAllByCode(@NonNull String code, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:CampaignCodeServiceFinds all of theCampaignCodesbycode.- Specified by:
readAllByCodein interfaceCampaignCodeService<P extends CampaignCode>- Parameters:
code- Code to matchcontext- Additional sandbox and multitenant state data- Returns:
- all of the @link CampaignCode CampaignCodes} by
code
-
create
public P create(P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
- Specified by:
createin interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends CampaignCode>- Overrides:
createin classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends CampaignCode>
-
update
public P update(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
- Specified by:
updatein interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends CampaignCode>- Overrides:
updatein classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends CampaignCode>
-
replace
public P replace(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
- Specified by:
replacein interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends CampaignCode>- Overrides:
replacein classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends CampaignCode>
-
saveAll
public List<com.broadleafcommerce.data.tracking.core.Trackable> saveAll(List<P> businessInstances, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
- Specified by:
saveAllin interfaceCampaignCodeService<P extends CampaignCode>
-
persistCodesAndReturnNumber
public int persistCodesAndReturnNumber(CodeGenerator info, Set<String> currentCodeSet, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
- Specified by:
persistCodesAndReturnNumberin interfaceCampaignCodeService<P extends CampaignCode>
-
persistCodesAndReturn
public List<P> persistCodesAndReturn(CodeGenerator info, Set<String> currentCodeSet, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
- Specified by:
persistCodesAndReturnin interfaceCampaignCodeService<P extends CampaignCode>
-
readAllByCampaignId
public Stream<P> readAllByCampaignId(String campaignId, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:CampaignCodeServiceReads the campaign codes for the specified campaign id matching the given filters.- Specified by:
readAllByCampaignIdin interfaceCampaignCodeService<P extends CampaignCode>- Parameters:
campaignId- the campaign idfilters- additional filters to apply in the querycontext- Request context information around sandbox and multitenant state- Returns:
- the campaign codes for the specified campaign id matching the given filters
-
findExistingByCodesIncludeExpiredForCampaignId
public List<P> findExistingByCodesIncludeExpiredForCampaignId(Set<String> codes, String campaignId, Instant endAfterDate, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:CampaignCodeServiceSearch all non-expired campaign codes or expired but belonging to the specified campaignId. This is useful to validate that the campaign codes can be added or updated. NOTE: This method is used during import ofCampaignCodeand because different DBs has a different limitation on how many entries can be in "in" statement please make sure that the property "broadleaf.dataimport.processor.batch-size" not exited this limitation.- Specified by:
findExistingByCodesIncludeExpiredForCampaignIdin interfaceCampaignCodeService<P extends CampaignCode>- Parameters:
codes- The set of codes to matchcampaignId- the campaign idendAfterDate- Date after which code should be activecontext- Request context information around sandbox and multitenant state- Returns:
- all
CampaignCodesbyCampaignCode.getCode()that are also active or belonging to the specified campaignId - See Also:
CampaignCodeImportBatchHandler
-
findAllDuplicatesForCodesInCampaign
public List<P> findAllDuplicatesForCodesInCampaign(@NonNull @NonNull String campaignId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:CampaignCodeServiceFinds all duplicatesCampaignCodesbyCampaign.getId(). Typically, this will be used to check for duplicate campaign codes of campaign.- Specified by:
findAllDuplicatesForCodesInCampaignin interfaceCampaignCodeService<P extends CampaignCode>- Parameters:
campaignId- the campaign idcontext- Request context information around sandbox and multitenant state- Returns:
- all duplicates
CampaignCodesbyCampaignCode.getId()
-
findAllByGeneratorIdAndAssigned
public List<P> findAllByGeneratorIdAndAssigned(String codeGeneratorId, boolean isAssigned, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:CampaignCodeService- Specified by:
findAllByGeneratorIdAndAssignedin interfaceCampaignCodeService<P extends CampaignCode>- Parameters:
codeGeneratorId- the id of the code generator that these codes were generated fromisAssigned- whether the campaign codes are assignedcontext- Request context information around sandbox and multitenant state- Returns:
- all the unassigned
CampaignCodesbyCampaignCode.getGeneratorId()
-
rejectDuplicateCode
protected org.springframework.validation.Errors rejectDuplicateCode(P duplicate)
-
createCampaignCodeEntities
protected List<P> createCampaignCodeEntities(CodeGenerator info, Set<String> currentCodeSet)
-
populateCodeGeneratorDetailsToCode
protected void populateCodeGeneratorDetailsToCode(CodeGenerator codeGenerator, P campaignCode)
-
saveAllNonDuplicates
protected void saveAllNonDuplicates(String codeGeneratorId, List<P> campaignCodeList, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
-
findDuplicateCodes
protected List<P> findDuplicateCodes(String codeGeneratorId, List<P> campaignCodeList, Class<P> payloadType, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
-
buildCampaignCodeStringList
protected List<String> buildCampaignCodeStringList(List<P> offerCodeList)
-
removeDuplicatesFromList
protected void removeDuplicatesFromList(List<P> campaignCodeList, List<P> duplicateCampaignCodes)
Iterate through the codes we are about to save. If the code is in the duplicateCampaignCodes list then remove it.- Parameters:
campaignCodeList-duplicateCampaignCodes-
-
getCampaignCodeRepository
@NonNull protected CampaignCodeRepository<com.broadleafcommerce.data.tracking.core.Trackable> getCampaignCodeRepository()
-
getCampaignRepository
@NonNull protected CampaignRepository<com.broadleafcommerce.data.tracking.core.Trackable> getCampaignRepository()
-
getCampaignFactory
@NonNull protected com.broadleafcommerce.common.extension.TypeFactory getCampaignFactory()
-
-