001package org.nasdanika.html.model.bootstrap.gen; 002 003import java.util.LinkedHashMap; 004import java.util.Map; 005 006import org.eclipse.emf.common.notify.AdapterFactory; 007import org.eclipse.emf.ecore.EStructuralFeature; 008import org.nasdanika.common.Supplier; 009import org.nasdanika.common.ConsumerFactory; 010import org.nasdanika.common.Context; 011import org.nasdanika.common.FunctionFactory; 012import org.nasdanika.common.MapCompoundConsumerFactory; 013import org.nasdanika.common.ProgressMonitor; 014import org.nasdanika.common.SupplierFactory; 015import org.nasdanika.emf.EObjectAdaptable; 016import org.nasdanika.html.HTMLElement; 017import org.nasdanika.html.bootstrap.BootstrapFactory; 018import org.nasdanika.html.model.bootstrap.BootstrapElement; 019import org.nasdanika.html.model.bootstrap.BootstrapPackage; 020 021public class CardSupplierFactoryAdapter extends BootstrapElementSupplierFactoryAdapter<org.nasdanika.html.model.bootstrap.Card, org.nasdanika.html.bootstrap.Card> { 022 023 public CardSupplierFactoryAdapter(org.nasdanika.html.model.bootstrap.Card card, AdapterFactory adapterFactory) { 024 super(card, adapterFactory); 025 } 026 027 protected Supplier<Supplier.FunctionResult<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>> createCardSupplier(Context context) { 028 return new Supplier<Supplier.FunctionResult<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>>() { 029 030 @Override 031 public double size() { 032 return 1; 033 } 034 035 @Override 036 public String name() { 037 return "Card"; 038 } 039 040 @Override 041 public Supplier.FunctionResult<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card> execute(ProgressMonitor progressMonitor) { 042 BootstrapFactory bootstrapFactory = context.get(BootstrapFactory.class, BootstrapFactory.INSTANCE); 043 org.nasdanika.html.bootstrap.Card card = bootstrapFactory.card(); 044 org.nasdanika.html.model.bootstrap.Card semanticElement = getTarget(); 045 046 Map<EStructuralFeature, HTMLElement<?>> parts = new LinkedHashMap<>(); 047 048 if (semanticElement.getHeader() != null) { 049 parts.put(BootstrapPackage.Literals.CARD__HEADER, card.getHeader().toHTMLElement()); 050 } 051 052 if (semanticElement.getBody() != null) { 053 parts.put(BootstrapPackage.Literals.CARD__BODY, card.getBody().toHTMLElement()); 054 } 055 056 if (semanticElement.getFooter() != null) { 057 parts.put(BootstrapPackage.Literals.CARD__FOOTER, card.getFooter().toHTMLElement()); 058 } 059 060 return new Supplier.FunctionResult<Map<EStructuralFeature,HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>(parts, card); 061 } 062 063 }; 064 } 065 066 @SuppressWarnings({ "unchecked", "rawtypes" }) 067 @Override 068 protected Supplier<org.nasdanika.html.bootstrap.Card> createBootstrapElementSupplier(Context context) { 069 MapCompoundConsumerFactory<EStructuralFeature,HTMLElement<?>> partsFactory = new MapCompoundConsumerFactory<>("Parts"); 070 org.nasdanika.html.model.bootstrap.Card semanticElement = getTarget(); 071 072 BootstrapElement header = semanticElement.getHeader(); 073 if (header != null) { 074 partsFactory.put(BootstrapPackage.Literals.CARD__HEADER, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(header, org.nasdanika.html.HTMLElement.class)); 075 } 076 077 BootstrapElement body = semanticElement.getBody(); 078 if (body != null) { 079 partsFactory.put(BootstrapPackage.Literals.CARD__BODY, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(body, org.nasdanika.html.HTMLElement.class)); 080 } 081 082 BootstrapElement footer = semanticElement.getFooter(); 083 if (footer != null) { 084 partsFactory.put(BootstrapPackage.Literals.CARD__FOOTER, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(footer, org.nasdanika.html.HTMLElement.class)); 085 } 086 087 SupplierFactory<Supplier.FunctionResult<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>> cardSupplierFactory = this::createCardSupplier; 088 FunctionFactory<Supplier.FunctionResult<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>, org.nasdanika.html.bootstrap.Card> partsFunctionFactory = partsFactory.asResultFunctionFactory(); 089 090 return cardSupplierFactory.then(partsFunctionFactory).create(context); 091 } 092 093}