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}