K
- group key typepublic abstract class AbstractProductSplitter<K> extends java.lang.Object implements ProductSplitter
Constructor and Description |
---|
AbstractProductSplitter() |
Modifier and Type | Method and Description |
---|---|
protected abstract K |
createGroupKey(SubProduct subProduct)
Implementations should implement a strategy that maps subproducts
that belong into the same product group, onto the same group key.
|
private java.util.Collection<ProductGroup> |
doSplit(Product product) |
private ProductGroup |
getGroup(java.util.Map<K,ProductGroup> results,
K key,
Product mainProduct) |
boolean |
isSplittable(Product product) |
private void |
selectDefaultProduct(Product product,
SubProduct sub,
ProductGroup group) |
java.util.Collection<ProductGroup> |
split(Product product) |
public boolean isSplittable(Product product)
isSplittable
in interface ProductSplitter
true
if the product can
be split into more than one logical unit.public java.util.Collection<ProductGroup> split(Product product) throws ProductNonSplittableException
split
in interface ProductSplitter
product
- The splittable product.ProductNonSplittableException
- if product is non-splittable. To avoid this, client code
should test isSplittable()
first.private java.util.Collection<ProductGroup> doSplit(Product product)
@Nonnull protected abstract K createGroupKey(SubProduct subProduct)
subProduct
- private ProductGroup getGroup(java.util.Map<K,ProductGroup> results, K key, Product mainProduct)
private void selectDefaultProduct(Product product, SubProduct sub, ProductGroup group)