Class DataDrivenEnumConsolidationContributor
java.lang.Object
com.broadleafcommerce.catalog.service.product.consolidation.DataDrivenEnumConsolidationContributor
- All Implemented Interfaces:
ProductConsolidationContributor
public class DataDrivenEnumConsolidationContributor
extends Object
implements ProductConsolidationContributor
Consolidates all
DataDrivenEnums and their Translations from Product.getBrand(), Product.getMerchandisingType(), and
Product.getTargetDemographic() into products.
Unlike ProductAsset and Variant, DataDrivenEnum is independent of
Product and doesn't have a direct relationship with Product like other entities
do. Therefore, the consolidation of its Translations is done here instead of
TranslationProductConsolidationContributor.
This contributor should run after TranslationProductConsolidationContributor, so that it
can add the data driven enums' translations on top of all the ProductTranslations consolidated from TranslationProductConsolidationContributor.
- Author:
- Sunny Yu
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringprotected final com.broadleafcommerce.common.extension.TypeFactory -
Constructor Summary
ConstructorsConstructorDescriptionDataDrivenEnumConsolidationContributor(com.broadleafcommerce.translation.service.TranslationEntityService<com.broadleafcommerce.translation.domain.Translation> translationEntityService, DataDrivenEnumService<DataDrivenEnum> dataDrivenEnumService, com.broadleafcommerce.common.extension.TypeFactory typeFactory) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddDataDrivenEnumId(DataDrivenEnum dataDrivenEnum, List<String> enumIds) Deprecated.and no longer called from the framework.protected voidaddDataDrivenEnumIdsForProduct(ConsolidatedProduct product, List<String> enumIds) Deprecated.and no longer called from the framework.protected Map<String,List<DataDrivenEnum>> buildProductIdToDataDrivenEnumIdMap(@NonNull List<ConsolidatedProduct> products) voidconsolidateProducts(Set<String> productIds, List<ConsolidatedProduct> products, com.broadleafcommerce.data.tracking.core.tenant.domain.InheritanceLines inheritanceLines, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Consolidate products with their related domain and translations.protected List<ConsolidatedProduct>consolidateRelations(List<ConsolidatedProduct> products, List<DataDrivenEnum> relations, BiConsumer<ConsolidatedProduct, List<DataDrivenEnum>> setRelation, Function<DataDrivenEnum, String> idGetter, com.broadleafcommerce.data.tracking.core.tenant.domain.InheritanceLines inheritanceLines) contextCompositeKey(com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState context) contextCompositeKey(T relation) protected booleancontextStatesMatch(com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState productContext, com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState relationContext) protected ConsolidatedProductcreateOverrideProductForContext(com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState unmatchedContextState, List<DataDrivenEnum> relations, ConsolidatedProduct implicitProduct, BiConsumer<ConsolidatedProduct, List<DataDrivenEnum>> setRelation, Function<DataDrivenEnum, String> idGetter, com.broadleafcommerce.data.tracking.core.tenant.domain.InheritanceLines inheritanceLines) protected <T extends com.broadleafcommerce.data.tracking.core.ContextStateAware>
Stream<T>findImplicitMatches(com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState context, List<T> entitiesToMatch, Function<T, String> idGetter) protected org.modelmapper.ModelMappergetDataDrivenEnumIds(@NonNull Collection<? extends ConsolidatedProduct> consolidatedProducts) Deprecated.and no longer called from the framework.protected DataDrivenEnumService<DataDrivenEnum>protected List<com.broadleafcommerce.translation.domain.Translation>getDataDrivenEnumTranslations(List<String> allDataDrivenEnumIds, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) protected com.broadleafcommerce.data.tracking.core.filtering.fetch.FilterParser<cz.jirutka.rsql.parser.ast.Node>protected com.broadleafcommerce.translation.service.TranslationEntityService<com.broadleafcommerce.translation.domain.Translation>protected com.broadleafcommerce.common.extension.TypeFactoryprotected Function<DataDrivenEnum,String> idGetter()protected <P extends ConsolidatedProduct>
voidsetDataDrivenEnumIfPresent(P product, List<DataDrivenEnum> dataDrivenEnumsForAllProducts, Function<P, DataDrivenEnum> dataDrivenEnumGetter, BiConsumer<P, DataDrivenEnum> dataDrivenEnumSetter) Finds and sets the product's data driven enum field if present using the given getter and setter, and add the enum toConsolidatedProduct.getDataDrivenEnums().protected voidsetDataDrivenEnumsForProduct(ConsolidatedProduct product, List<DataDrivenEnum> dataDrivenEnumsForAllProducts) protected voidsetDataDrivenEnumTranslationsForProduct(ConsolidatedProduct product, List<com.broadleafcommerce.translation.domain.Translation> dataDrivenEnumTranslationsForAllProducts) protected voidsetListValue(ConsolidatedProduct product, List<DataDrivenEnum> toSet, BiConsumer<ConsolidatedProduct, List<DataDrivenEnum>> setter) voidsetRsqlParser(com.broadleafcommerce.data.tracking.core.filtering.fetch.FilterParser<cz.jirutka.rsql.parser.ast.Node> rsqlParser) protected BiConsumer<ConsolidatedProduct,List<DataDrivenEnum>> setter()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.broadleafcommerce.catalog.service.product.consolidation.ProductConsolidationContributor
shouldConsolidate
-
Field Details
-
IGNORE_ARCHIVED_FILTER
- See Also:
-
typeFactory
protected final com.broadleafcommerce.common.extension.TypeFactory typeFactory
-
-
Constructor Details
-
DataDrivenEnumConsolidationContributor
public DataDrivenEnumConsolidationContributor(com.broadleafcommerce.translation.service.TranslationEntityService<com.broadleafcommerce.translation.domain.Translation> translationEntityService, DataDrivenEnumService<DataDrivenEnum> dataDrivenEnumService, com.broadleafcommerce.common.extension.TypeFactory typeFactory)
-
-
Method Details
-
consolidateProducts
public void consolidateProducts(Set<String> productIds, List<ConsolidatedProduct> products, com.broadleafcommerce.data.tracking.core.tenant.domain.InheritanceLines inheritanceLines, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Description copied from interface:ProductConsolidationContributorConsolidate products with their related domain and translations. This includes both hydratingProductfields and combining external references likeCategoryProduct. Any catalog or sandbox overrides made to external references for non-overridden products will generate new placeholder products to store those overrides.- Specified by:
consolidateProductsin interfaceProductConsolidationContributor- Parameters:
productIds- the IDs of the products to consolidateproducts- the product in all explicit context statesinheritanceLines- the catalog inheritance lines top-down from all of the productscontext- context information surrounding sandboxing/multitenant state
-
buildProductIdToDataDrivenEnumIdMap
protected Map<String,List<DataDrivenEnum>> buildProductIdToDataDrivenEnumIdMap(@NonNull @NonNull List<ConsolidatedProduct> products) -
getDataDrivenEnumTranslations
-
setDataDrivenEnumsForProduct
protected void setDataDrivenEnumsForProduct(ConsolidatedProduct product, List<DataDrivenEnum> dataDrivenEnumsForAllProducts) -
setDataDrivenEnumIfPresent
protected <P extends ConsolidatedProduct> void setDataDrivenEnumIfPresent(P product, List<DataDrivenEnum> dataDrivenEnumsForAllProducts, Function<P, DataDrivenEnum> dataDrivenEnumGetter, BiConsumer<P, DataDrivenEnum> dataDrivenEnumSetter) Finds and sets the product's data driven enum field if present using the given getter and setter, and add the enum toConsolidatedProduct.getDataDrivenEnums().- Type Parameters:
P- The type of theConsolidatedProduct- Parameters:
product- product to set the data driven enum field fordataDrivenEnumsForAllProducts- a list of data driven enums for all productsdataDrivenEnumGetter- the getter to get the data driven enum field from the productdataDrivenEnumSetter- the setter to set the data driven enum field for the product
-
consolidateRelations
protected List<ConsolidatedProduct> consolidateRelations(List<ConsolidatedProduct> products, List<DataDrivenEnum> relations, BiConsumer<ConsolidatedProduct, List<DataDrivenEnum>> setRelation, Function<DataDrivenEnum, String> idGetter, com.broadleafcommerce.data.tracking.core.tenant.domain.InheritanceLines inheritanceLines) -
createOverrideProductForContext
protected ConsolidatedProduct createOverrideProductForContext(com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState unmatchedContextState, List<DataDrivenEnum> relations, ConsolidatedProduct implicitProduct, BiConsumer<ConsolidatedProduct, List<DataDrivenEnum>> setRelation, Function<DataDrivenEnum, String> idGetter, com.broadleafcommerce.data.tracking.core.tenant.domain.InheritanceLines inheritanceLines) -
findImplicitMatches
-
contextCompositeKey
-
contextCompositeKey
-
contextStatesMatch
protected boolean contextStatesMatch(com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState productContext, com.broadleafcommerce.data.tracking.core.filtering.business.domain.ContextState relationContext) -
setListValue
protected void setListValue(ConsolidatedProduct product, List<DataDrivenEnum> toSet, BiConsumer<ConsolidatedProduct, List<DataDrivenEnum>> setter) -
setter
-
idGetter
-
setDataDrivenEnumTranslationsForProduct
protected void setDataDrivenEnumTranslationsForProduct(ConsolidatedProduct product, List<com.broadleafcommerce.translation.domain.Translation> dataDrivenEnumTranslationsForAllProducts) -
getDataDrivenEnumIds
@Deprecated protected List<String> getDataDrivenEnumIds(@NonNull @NonNull Collection<? extends ConsolidatedProduct> consolidatedProducts) Deprecated.and no longer called from the framework.Gets a set of referenced data driven enum ids mapped by the product id.- Parameters:
consolidatedProducts- a collection ofConsolidatedProductto get the resolved product and its referenced data driven enums from- Returns:
- a set of referenced data driven enum ids mapped by the resolved product id
-
addDataDrivenEnumIdsForProduct
@Deprecated protected void addDataDrivenEnumIdsForProduct(ConsolidatedProduct product, List<String> enumIds) Deprecated.and no longer called from the framework. -
addDataDrivenEnumId
@Deprecated protected void addDataDrivenEnumId(@Nullable DataDrivenEnum dataDrivenEnum, List<String> enumIds) Deprecated.and no longer called from the framework. -
getTranslationEntityService
protected com.broadleafcommerce.translation.service.TranslationEntityService<com.broadleafcommerce.translation.domain.Translation> getTranslationEntityService() -
getDataDrivenEnumService
-
getTypeFactory
protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory() -
getCloneMapper
protected org.modelmapper.ModelMapper getCloneMapper() -
getRsqlParser
protected com.broadleafcommerce.data.tracking.core.filtering.fetch.FilterParser<cz.jirutka.rsql.parser.ast.Node> getRsqlParser() -
setRsqlParser
@Autowired public void setRsqlParser(com.broadleafcommerce.data.tracking.core.filtering.fetch.FilterParser<cz.jirutka.rsql.parser.ast.Node> rsqlParser)
-