Class DefaultEntryMergeStrategy
java.lang.Object
de.hybris.platform.commerceservices.order.strategies.impl.DefaultEntryMergeStrategy
- All Implemented Interfaces:
EntryMergeStrategy
Default implementation of
EntryMergeStrategy.
Any module can register a filter of type EntryMergeFilter. The filter can return FALSE
to deny merging particular entry with given CommerceCartParameter.
Also it is possible to change order of preference for input entries.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected BooleancanMerge(AbstractOrderEntryModel mergeCandidate, AbstractOrderEntryModel newEntry) This method determines whether given entry can be merged with the given entry creation candidate.protected List<EntryMergeFilter>protected Comparator<AbstractOrderEntryModel>getEntryToMerge(List<AbstractOrderEntryModel> entries, AbstractOrderEntryModel newEntry) Returns cart entry can be updated instead of creation of separatenewEntry.voidsetEntryMergeFilters(List<EntryMergeFilter> items) Filters to reject entities that can not be merged.voidsetEntryModelComparator(Comparator<AbstractOrderEntryModel> entryModelComparator) The comparator can be overridden to change order of preference for entries.
-
Constructor Details
-
DefaultEntryMergeStrategy
public DefaultEntryMergeStrategy()
-
-
Method Details
-
getEntryToMerge
public AbstractOrderEntryModel getEntryToMerge(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 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
-
setEntryMergeFilters
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:
-
getEntryModelComparator
-
setEntryModelComparator
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
-