ProductSwitch.from(hausratVertrag).matchingBy(HausratDeckungstyp.class, HausratDeckungstyp.PROPERTY_DECKUNGS_ART).to(hausratKompakt2023);
// oder für komplexere Betrachtungen der Objektstruktur
ProductSwitch
.from(hausratVertrag)
.switchAt(IpsModel.getPolicyCmptType(HausratVertrag.class).getAssociation(HausratVertrag.ASSOCIATION_HAUSRATZUSATZDECKUNG),
new AdvancedProductFinder() {
@Override
public ProductFinderResult findMatchingProduct(IConfigurableModelObject parent,
IProductComponent oldParentProdCmpt,
IConfigurableModelObject child,
PolicyAssociation parentToChild) {
if(((HausratVertrag)parent).includesEbikes()){
return eBikeDeckungsTyp;
} else {
return standardRadlDeckungsTyp;
}
}
})
.elseUseDefault()
.to(hausratKompakt2023);
// gerne natürlich auch als Lambda
ProductSwitch
.from(hausratVertrag)
.switchAt(IpsModel.getPolicyCmptType(HausratVertrag.class).getAssociation(HausratVertrag.ASSOCIATION_HAUSRATZUSATZDECKUNG),
(parent, oldParentProdCmpt, child, parentToChild) -> ((HausratVertrag)parent).includesEbikes()) ? eBikeDeckungsTyp : standardRadlDeckungsTyp)
.elseUseDefault()
.to(hausratKompakt2023);
Produktwechsel
Erweiterte Produktfinder
Genügt die Defaultimplementierung nicht, können unterschiedliche eigene Implementierungen zum Finden des passenden Wechselziels mitgegeben werden, z.B. anhand eines Attributswertes:
Weitere Varianten werden im Javadoc von ProductSwitch
und den zugehörigen Klassen beschrieben.