001package org.nasdanika.html.model.bootstrap.gen;
002
003import java.util.LinkedHashMap;
004import java.util.Map;
005
006import org.eclipse.emf.ecore.EStructuralFeature;
007import org.nasdanika.common.BiSupplier;
008import org.nasdanika.common.ConsumerFactory;
009import org.nasdanika.common.Context;
010import org.nasdanika.common.FunctionFactory;
011import org.nasdanika.common.MapCompoundConsumerFactory;
012import org.nasdanika.common.ProgressMonitor;
013import org.nasdanika.common.Supplier;
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) {
024                super(card);
025        }
026        
027        protected Supplier<BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>> createCardSupplier(Context context) {
028                return new Supplier<BiSupplier<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 BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card> execute(ProgressMonitor progressMonitor) throws Exception {
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 BiSupplier<Map<EStructuralFeature,HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>() {
061        
062                                        @Override
063                                        public Map<EStructuralFeature, HTMLElement<?>> getFirst() {
064                                                return parts;
065                                        }
066        
067                                        @Override
068                                        public org.nasdanika.html.bootstrap.Card getSecond() {
069                                                return card;
070                                        }
071                                };
072                        }
073                        
074                };
075        }
076        
077        @SuppressWarnings({ "unchecked", "rawtypes" })
078        @Override
079        protected Supplier<org.nasdanika.html.bootstrap.Card> createBootstrapElementSupplier(Context context) throws Exception {
080                MapCompoundConsumerFactory<EStructuralFeature,HTMLElement<?>> partsFactory = new MapCompoundConsumerFactory<>("Parts");
081                org.nasdanika.html.model.bootstrap.Card semanticElement = getTarget();
082                
083                BootstrapElement header = semanticElement.getHeader();
084                if (header != null) {
085                        partsFactory.put(BootstrapPackage.Literals.CARD__HEADER, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(header, org.nasdanika.html.HTMLElement.class));
086                }
087                
088                BootstrapElement body = semanticElement.getBody();
089                if (body != null) {
090                        partsFactory.put(BootstrapPackage.Literals.CARD__BODY, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(body, org.nasdanika.html.HTMLElement.class));
091                }
092                
093                BootstrapElement footer = semanticElement.getFooter();
094                if (footer != null) {
095                        partsFactory.put(BootstrapPackage.Literals.CARD__FOOTER, (ConsumerFactory<HTMLElement<?>>) (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(footer, org.nasdanika.html.HTMLElement.class));
096                }
097                
098                SupplierFactory<BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>> cardSupplierFactory = this::createCardSupplier;
099                FunctionFactory<BiSupplier<Map<EStructuralFeature, HTMLElement<?>>, org.nasdanika.html.bootstrap.Card>, org.nasdanika.html.bootstrap.Card> partsFunctionFactory = partsFactory.asBiSupplierFunctionFactory();           
100                
101                return cardSupplierFactory.then(partsFunctionFactory).create(context);
102        }
103
104}