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.BiSupplier; 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.Supplier; 015import org.nasdanika.common.SupplierFactory; 016import org.nasdanika.emf.EObjectAdaptable; 017import org.nasdanika.html.HTMLElement; 018import org.nasdanika.html.bootstrap.BootstrapFactory; 019import org.nasdanika.html.model.bootstrap.BootstrapElement; 020import org.nasdanika.html.model.bootstrap.BootstrapPackage; 021 022public class CardSupplierFactoryAdapter extends BootstrapElementSupplierFactoryAdapter<org.nasdanika.html.model.bootstrap.Card, org.nasdanika.html.bootstrap.Card> { 023 024 public CardSupplierFactoryAdapter(org.nasdanika.html.model.bootstrap.Card card, AdapterFactory adapterFactory) { 025 super(card, adapterFactory); 026 } 027 028 protected Supplier<BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>> createCardSupplier(Context context) { 029 return new Supplier<BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>>() { 030 031 @Override 032 public double size() { 033 return 1; 034 } 035 036 @Override 037 public String name() { 038 return "Card"; 039 } 040 041 @Override 042 public BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card> execute(ProgressMonitor progressMonitor) throws Exception { 043 BootstrapFactory bootstrapFactory = context.get(BootstrapFactory.class, BootstrapFactory.INSTANCE); 044 org.nasdanika.html.bootstrap.Card card = bootstrapFactory.card(); 045 org.nasdanika.html.model.bootstrap.Card semanticElement = getTarget(); 046 047 Map<EStructuralFeature, HTMLElement<?>> parts = new LinkedHashMap<>(); 048 049 if (semanticElement.getHeader() != null) { 050 parts.put(BootstrapPackage.Literals.CARD__HEADER, card.getHeader().toHTMLElement()); 051 } 052 053 if (semanticElement.getBody() != null) { 054 parts.put(BootstrapPackage.Literals.CARD__BODY, card.getBody().toHTMLElement()); 055 } 056 057 if (semanticElement.getFooter() != null) { 058 parts.put(BootstrapPackage.Literals.CARD__FOOTER, card.getFooter().toHTMLElement()); 059 } 060 061 return new BiSupplier<Map<EStructuralFeature,HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>() { 062 063 @Override 064 public Map<EStructuralFeature, HTMLElement<?>> getFirst() { 065 return parts; 066 } 067 068 @Override 069 public org.nasdanika.html.bootstrap.Card getSecond() { 070 return card; 071 } 072 }; 073 } 074 075 }; 076 } 077 078 @SuppressWarnings({ "unchecked", "rawtypes" }) 079 @Override 080 protected Supplier<org.nasdanika.html.bootstrap.Card> createBootstrapElementSupplier(Context context) throws Exception { 081 MapCompoundConsumerFactory<EStructuralFeature,HTMLElement<?>> partsFactory = new MapCompoundConsumerFactory<>("Parts"); 082 org.nasdanika.html.model.bootstrap.Card semanticElement = getTarget(); 083 084 BootstrapElement header = semanticElement.getHeader(); 085 if (header != null) { 086 partsFactory.put(BootstrapPackage.Literals.CARD__HEADER, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(header, org.nasdanika.html.HTMLElement.class)); 087 } 088 089 BootstrapElement body = semanticElement.getBody(); 090 if (body != null) { 091 partsFactory.put(BootstrapPackage.Literals.CARD__BODY, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(body, org.nasdanika.html.HTMLElement.class)); 092 } 093 094 BootstrapElement footer = semanticElement.getFooter(); 095 if (footer != null) { 096 partsFactory.put(BootstrapPackage.Literals.CARD__FOOTER, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(footer, org.nasdanika.html.HTMLElement.class)); 097 } 098 099 SupplierFactory<BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>> cardSupplierFactory = this::createCardSupplier; 100 FunctionFactory<BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>, org.nasdanika.html.bootstrap.Card> partsFunctionFactory = partsFactory.asBiSupplierFunctionFactory(); 101 102 return cardSupplierFactory.then(partsFunctionFactory).create(context); 103 } 104 105}