Class DefaultEntryMergeStrategy
- java.lang.Object
-
- de.hybris.platform.commerceservices.order.strategies.impl.DefaultEntryMergeStrategy
-
- All Implemented Interfaces:
EntryMergeStrategy
public class DefaultEntryMergeStrategy extends java.lang.Object implements EntryMergeStrategy
Default implementation ofEntryMergeStrategy.Any module can register a filter of type
EntryMergeFilter. The filter can returnFALSEto deny merging particular entry with givenCommerceCartParameter.Also it is possible to change order of preference for input entries.
- See Also:
DefaultCommerceAddToCartStrategy
-
-
Constructor Summary
Constructors Constructor Description DefaultEntryMergeStrategy()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.BooleancanMerge(AbstractOrderEntryModel mergeCandidate, AbstractOrderEntryModel newEntry)This method determines whether given entry can be merged with the given entry creation candidate.protected java.util.List<EntryMergeFilter>getEntryMergeFilters()protected java.util.Comparator<AbstractOrderEntryModel>getEntryModelComparator()AbstractOrderEntryModelgetEntryToMerge(java.util.List<AbstractOrderEntryModel> entries, AbstractOrderEntryModel newEntry)Returns cart entry can be updated instead of creation of separatenewEntry.voidsetEntryMergeFilters(java.util.List<EntryMergeFilter> items)Filters to reject entities that can not be merged.voidsetEntryModelComparator(java.util.Comparator<AbstractOrderEntryModel> entryModelComparator)The comparator can be overridden to change order of preference for entries.
-
-
-
Method Detail
-
getEntryToMerge
public AbstractOrderEntryModel getEntryToMerge(java.util.List<AbstractOrderEntryModel> entries, @Nonnull AbstractOrderEntryModel newEntry)
Description copied from interface:EntryMergeStrategyReturns cart entry can be updated instead of creation of separatenewEntry.- Specified by:
getEntryToMergein interfaceEntryMergeStrategy- Parameters:
entries- list of existing entriesnewEntry- the merge candidate (can be an item ofentries- Returns:
- merge target (
nullif no applicable entries found)
-
canMerge
protected java.lang.Boolean canMerge(@Nonnull AbstractOrderEntryModel mergeCandidate, @Nonnull AbstractOrderEntryModel newEntry)This method determines whether given entry can be merged with the given entry creation candidate.- Parameters:
mergeCandidate- entry that is supposed to be merge acceptornewEntry- entry to find merge target for- Returns:
Boolean.FALSEto disable merge ofnewEntrytomergeCandidate
-
getEntryMergeFilters
protected java.util.List<EntryMergeFilter> getEntryMergeFilters()
-
setEntryMergeFilters
public void setEntryMergeFilters(java.util.List<EntryMergeFilter> items)
Filters to reject entities that can not be merged.The filters are applied in their natural order, so it worth to put the filters that are fast and likely return
Boolean.FALSEon top of the list. It will speed up the filtration.- Parameters:
items- new list of filters- See Also:
ListMergeDirective
-
getEntryModelComparator
protected java.util.Comparator<AbstractOrderEntryModel> getEntryModelComparator()
-
setEntryModelComparator
public void setEntryModelComparator(java.util.Comparator<AbstractOrderEntryModel> entryModelComparator)
The comparator can be overridden to change order of preference for entries. {@link this#getEntryToMerge(List, CommerceCartParameter)} returns first suitable entry of the resulting list.The default implementation does not change order of entries.
- Parameters:
entryModelComparator- newAbstractOrderEntryModelcomparator
-
-